« 顧客先でKPI分析 | トップページ | 2014年2月のハッピーバースディ! »

自動生成で生産性&品質向上してみた!

Pict2625
某・大手顧客先での案件で、アーキテクトの三文字さんが自動生成の技術を適用(自前での開発)した実例ベースの話をしてくれました。

実装言語はPHP、フレームワークはSymfony、O/RマッパーはDoctorineです。

最近のフレームワークやO/Rマッパーは、標準で実装されているソースコードの自動生成機能が少なからずありますので、それらを活かしつつ、業務仕様との間を結ぶためのソースコード自動生成機能を開発しました。

つまりは、Excelなどで書いた設計書を元に、動作するアプリケーションのソースコードや、スケルトン、抽象クラスなどを吐き出すということになります。

で、折角自動生成したコードでも、人の手を入れてしまうと再生成が効かなくなってしまいます(面倒な管理が必要になったり、間違いの元・品質低下につながります)ので、デザインパターンの1つ「ジェネレーションギャップパターン」を使うのだそうで。

これで、「統一化する・自動生成で済ませる」部分と、「手で書かなければならない部分」を切り分ける(別ソースファイルにする)事を実現します。

また、これに応じて開発プロセスも幾分か変更が必要になる(自動生成されたままで手を加えないコードの単体テストはしない、など)ので、その辺も顧客側との調整・了承を得た上での適用になります。

但し、現実的な制約もあり、全てを自動生成できるわけではありません。

Pict2624例えば、入力項目などで条件判定が複雑な部分は、ロジックの入力を行うようにしてしまったり(入力判定を何処の論理層:クラスに実装するか?という点での統一性を持たせることには成功しているわけですが...)。

バックエンド(管理業務)の画面系のソースコード生成は可能ですが、フロントエンド(一般ユーザー向け:特にコンシューマー向けWebサイトの)はデザイナーが作成しますので、自動生成は不可能です。

また、現実的な一面として、(当然の前提条件にはなるのですが)開発者の教育・意識付けの問題から、折角の生成コードの思想や機能が十分に活かされないケースもあるようです。
この辺は、コーディング基準の作成と共有/コードレビューや、場合によっては一時的にペアプロを行うなどすべきなのでしょうが...。

殆どの場合に付いて回る条件、「デリバリー優先」(でも品質も守る)、納期が短い点とのせめぎ合い。

レビューは抜き打ちの部分的なものに限定すれば出来るかも知れませんが、ペアプロまではとても余裕が無いかも知れません。

結局は、メンバーの意識やレベル、共通目標への到達イメージ(どうやってゴールに達するのか)の共有に掛かってきてしまいそうに思えます。

アーキテクトには、ファシリテータ的な視点・判断・アクションも求められる、ということでしょうか。
開発プロセス(特にアジャイル系プラクティス)の知識と、選択的な実践(勿論、プロジェクトリーダーとの意識共有・役割の住み分けなども考慮・調整しつつ)が必要になってくる、ってことなんでしょうね。

今回の三文字さんからのお話は「自動生成」に焦点を合わせたものでしたが、実働上はサブリーダーを務め、かつアーキテクトであり、複数チーム横断的なファシリテーター的な動きも行っていたようです。

それでもなおかつ「難しい...」と言う。

「おもしろい!」とも繰り返し言ってましたが。

最後に、自動生成技術の開発に向いている人の特性の1つとして、「レビューが好きな人!」であることだと。
(「レビューする側」であって、「される(文句を付けられる)側」ではないところが気楽でいい気分!...というのは、半分は冗談でしょうけれども)


★クリック1つでブログランキングにご協力戴けます! m(_ _)m

|

« 顧客先でKPI分析 | トップページ | 2014年2月のハッピーバースディ! »

お仕事な日常」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 自動生成で生産性&品質向上してみた!:

« 顧客先でKPI分析 | トップページ | 2014年2月のハッピーバースディ! »