最近の技術のトレンド~分散バージョン管理と関数型言語
「はじめての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本」カテゴリの記事
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- 実践した後に勉強するのがエンジニアの本来の道(2022.01.09)
- OODAループの時代は、大事なのは使命であり、目標は使命達成のための手段に過ぎない(2021.08.01)
- INSPIRED 熱狂させる製品を生み出すプロダクトマネジメントの感想~日本に足りないのはプロダクトマネジャーだ(2021.08.01)
「プロジェクトマネジメント」カテゴリの記事
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- 初中級プロマネはIPAデータ白書の統計情報を見積り、生産性、品質の観点で活用せよ(2022.04.17)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
「ソフトウェア工学」カテゴリの記事
- メトリクス分析のコツは良いIssueを見つけること(2022.06.29)
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
- 「大人の学びパターン・ランゲージ」の感想~知識と経験を行ったり来たりするタイミングを大切にする(2022.06.05)
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- ソフトウェアテスト技法練習帳はテストケースの切り方に困っている人向けにおすすめの本だ(2022.05.14)
「廃止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」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
- チケット駆動開発のプロセスとチケット管理システムの全体像 #Redmine(2021.12.28)
- 第21回東京Redmine勉強会の感想 #redmineT ~Redmineは業務も組織も包み込む柔軟性がある(2021.11.28)
コメント