uncategorized

システム開発に維新を!モダンな開発環境をつくるための4つのヒント

複雑なプロジェクトだからこそ必要なモダン開発環境

夜の道後温泉

システム開発プロジェクトは年々複雑になってきています。複数の会社が関わっていたり、フリーランスのエンジニアがいたり、開発言語や実行環境は複数だったり、デザイン調整が微妙だったり。お客様の要求も、複数の場所から発生して、何を優先して進めるのか?についても高度な判断が必要だったりします。そんな、複雑で変化の激しいビジネス環境に合わせて開発環境を進化させていくことが求められています。

近年、「モダンな開発」ということが盛んに言われています。モダンって何?って思いますか?モダンとは論理的、合理的な産業化を代表とする変化のことだそうです。今更「モダンな」と言われるということは、システム開発って「産業」じゃなかったんでしょうか?個人のスキルや意識に依存して、アウトプットの品質にバラツキがある様では産業とは言えないかもしれません。そこに、プロジェクトの複雑化も相まってモダンな開発が志向されているのでしょう。

モダンな開発サーバ

開発サーバの構築に「手順書」が必要だったりしますか?サーバを構築した人じゃないと開発サーバが出来なかったりしませんか?開発サーバはプロジェクトに関わる誰でもが簡単に同じものを構築出来ないといけません。手作業でタイプミスがあればちゃんとしたものが構築出来ないかもしれません。方法は幾らでもあります。Chef、Docker、AWSのイメージを使うだけでも良いかもしれません。

モダンな開発方法

あなた:これこれを開発して。これが仕様書ね。

プログラマ:分かりました!

・・・

プログラマ:出来ました!これがテスト結果報告書で、これがプログラムです。

あなた:おおぉ。ちゃんと動いてるじゃん。テストでも不具合は全部無くなってるし。誰がコードレビューしたの?

プログラマ:えっ!誰もしてませんけど。でも、ちゃんと動くの確認しましたよ〜。

あなた:・・・

別に珍しいことじゃありません。みんな頑張って開発してますよ。でも、正しいものが開発されているかは分かりませんね。ペアプログラミングやGitなどのコードレビューを前提とした管理ツールなどで、強制的にコードレビューをしましょう。職人が作ったもので作り込んで行くのは「前近代的」です。組織的に責任が持てるアウトプットを出すためには、組織的なチェックが欠かせません。

モダンなテスト環境

出来た!→デプロイした!→デプロイエラーが発生した!

出来た!→ビルドした!→ビルドエラーが発生した!

出来た!→動かしてみた!→最初から動かない!

よくある話しです。なんでみんなテストが出来てないんでしょうか?いえ!テストはしているんです。最近の開発プロセスでは変更や修正が繰り返されるので、テストの手間が凄く増えるんです。やりきれないのですよ。
それでもテストを漏れなくやるならテストの自動化しかありませんね。テスト駆動開発は注目されていますが、とにかくテストコードを書いて開発すること。そしてテストを自動化すること。それを開発環境に組み込むこと。

モダンな開発組織

プロジェクト組織図がツリー型になっている時点でスピード感がないですね。情報が上にのぼり、下にくだってくる間に開発状況は変わってしまって意思決定が無駄になります。組織が縦割りになって、互いを理解出来ないのも頂けません。サーバサイド開発チームがスマホアプリのことを知らずに良いものが出来る訳がないですし、その逆も同じことです。いきなり「大きく」作りすぎるのも良くないですね。

小さな単機能のシステムを開発して使ってみましょう。その体験によって新しい要求が出て来るかもしれません。使ってみた体験をサーバエンジニア、スマホエンジニア、デザイナ全員でフィードバックしてみましょう。全員が全てに責任を持ち貢献する開発組織が必要です。

ご維新でござる

システム開発は元々は大型の建設業界をモデルに“産業化”されてきました。しかし、道具の標準化やプロセスの標準化が出来なかったために長らく「工務店」程度の産業化に留まっていました。つまり、大手システムベンダーの指図通りに作るか、独自の開発を繰り返す職人か、です。多分、建設業をモデルにしたことに問題点があったのでしょう。だから、システム開発に関わる人や組織はシステム開発に適応した産業化を進めていくために変わっていかないといけないのだと思います。

SEKAI LAB TIMES(セカイラボタイムス)は、アプリ・Webサービス開発を世界中のエンジニアチームに依頼・発注できるグローバルソーシングプラットフォーム「セカイラボ」が運営しているブログメディアです。


KENTARO FURUKAWA / Project Manager
業務システムからスマホアプリ開発まで多様なシステム開発現場でプロジェクトマネージャをつとめる。ICタグシステム開発のベンチャーや物流会社の経営企画などで、事業開発や事業改善を主導。現在はフリーのプロ・プロジェクトマネージャとして活躍。