最近の技術のトレンド~分散バージョン管理と関数型言語
「はじめてのGit」「key-value ストア」が読みたくて、WEB+DB PRESS Vol.50を初めて買った。
すごくイイ!
【WEB+DB PRESS Vol.50の気になる章】
特集2
ブランチもマージも簡単な分散型バージョン管理システム
はじめてのGit
特集3
Webアプリのパフォーマンス向上の一策
[旬のライブラリ大集合]key-valueストア入門
Java+RDBの技術だけで、IT業界で一生飯は食っていけると思っていた。
でも、Webの世界では、特にGoogleの技術が世界中を席巻しているといっていい。
自分の技術が時代から少しずつ遅れてきている気がしてきた。
オブジェクト指向はもう古い。
MapReduce、レコメンドエンジン、Cookie Session Storeなどのように、リストやハッシュでデータを保持して比較計算する処理技術の方が重要になりつつある。
これは関数型言語の発想だと思う。
例えば、Rails2.0の機能の一つであるCookie Session Storeは、セッションを暗号化してクッキーに保持する。
このアーキテクチャがあれば、各クライアントの画面の状態はローカルPCのクッキーで保持するから、Webアプリをデスクトップアプリのように操作できる。
Webアプリの古くからの難問である「戻るボタン」「注文ボタンの2度押し」などにも、アプリ側で簡単に対応できるようになるだろう。
アジャイル開発では、分散バージョン管理のように、ブランチによる並行開発、そしてブランチ間の自動マージは必須の技術だ。
CVS→Subversion→Gitというバージョン管理の歴史を辿れば、仕様変更に強い特徴を持つアジャイル開発の発展と歩調を合わせて進化している。
この関係は多分偶然ではない。
特にGitは、ブランチ間のマージ機能が優れていると言われる。
だからこそ、分散バージョン管理で、複数のブランチがメインライン(trunk)とは別にたくさん作られても、精度の良いマージのおかげでブランチにもすぐに最新機能を反映できるし、ブランチで試したパッチがリリース可能な品質になったら、メインラインへマージして反映することもできる。
ソフトウェアプロダクトラインが提唱する手法では、製品ラインを中核機能やフレームワークを持つコア資産と、カスタマイズした製品ごとに複数のコードラインでブランチとして別々に管理する。
この手法の弱点は、メインラインとブランチでマージ機能が貧弱なため、ブランチがメインラインから独自発展しやすい危険性があること。
だが、分散バージョン管理の優れたマージ機能を使いこなせれば、ブランチによる並行開発は怖くなくなる。
そうなれば、突然の仕様変更や障害修正が降って来たとしても、ブランチを積極的に使って、新規開発中のメインラインと突然の対応を行うブランチの並行開発が可能になる。
この手法は、現代のアジャイル開発のプロジェクト管理では必須の技術だと思う。
XPが提唱したアジャイル開発の構成管理も、上記の技術によって、難易度が急激に下がりつつある。
最近の技術のトレンドに注意していきたい。
| 固定リンク
「IT本」カテゴリの記事
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システム開発・刷新のためのデータモデル大全」を読み直した感想~親子頻出アンチパターンは初心者モデラーに多い(2024.08.31)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
コメント