自社開発フレームワークのすゝめ | LOG#1011

LOG#1011

サイバーエージェントグループの株式会社TMNでシステム責任者をしています。技術とそれ以外の話を半々くらいにしようと思っています。妻と息子がいます。

社内でスマホブラウザ向けの
フロントエンドフレームワークを作ることにしました。

フレームワークというと大仰ですが、
実はこの約半年、僕がTMNに加わって以来、
既に1例開発事例があります。

軽量でシンプルな、最低限のフレームワーク機能を持たせ、
実装作業にテンプレートワークを持ち込むことを設計思想とした、
現実的な分、自由が大好きなエンジニア諸兄のウケは悪そうなフレームワークです。
主目的としては、GAE/JのRESTサーバサイド構築のために作っています。
『想定される用途を極端に絞ったフレームワーク』です。

こういった設計思想であるならば、
フレームワーク自体の開発コストは減少する、ということもさることながら、
単純に『フレームワーク開発プロジェクトが成功しやすいパターン』
なんだなと言うことを実感しました。

身の丈にあった小さいフレームワークを自前で開発することは、
生産性を高めることは勿論、アウトプット品質の向上と均質化が図れ、
生産物の障害発生リスクを大幅に低減出来ます。

設計のポイントとしては、
1.俯瞰して使いそうな機能をピックアップする。
2.過去のフレームワークの成功事例を参考に、機能の詳細設計をする。
3.1~2をベースにアーキテクチャを決める。ただし、時間をかける。
この3点だけを意識しています。

逆に言えば開発に入ってから見つかる再利用性の高い個別機能なんかは、
モノによってはフレームワーク側に移植していたりしています。
足りない機能も見つかり次第追加するというスタンスです。

こういった柔軟なフレームワークの運用は、
誰かが作ったフレームワークをフォークしたとしてもなかなか難しいです。
また、社内で作ったとしても、全機能フル盛りなフレームワークは、
時代に合わなくなった際や、新プロジェクトの型にハマらない場合、
思い切って捨てるという選択がし辛いという問題点もあります。

僕達が取っている開発手法は、手直しすることも、捨てることもしやすく、
開発ペースの早いIT業界の中の成長産業の更に最先端にいる会社にとって、
とてもよい選択肢だと思っています。