プログラミングの学習を始める前に、プログラミングを行う上での基本的な考え方の一つをご紹介します。今後プログラミングを学んでいく中、自分でも何か作ってみたい(あるいは何かを作る課題が出された)とき、作りたいものに対して「一体何からしたらいいのだろうか?」「このままやって目的のものができるだろうか?」という不安にぶち当たることになると思います。今回はそのような時に、プログラマーがどのような考え方で問題を解決しているのかについて解説していきたいと思います。
目次
インクリメンタル開発とは
今回のテーマは、タイトルにもある「インクリメンタル開発」の考え方を学ぶことです。インクリメンタル開発は簡単にいうと、「一度に1ステップアプローチ」で開発を行う方法です。何かを作ろうとしたときに、一気に全ての画面や機能を作ろうとするのではなく、可能な限り、細かくパーツに分けて実装していく方法です。取り組んでいる問題をできるだけ、一見当たり前すぎるレベルまで分解していくことがコツです。
例えば、家の外に出るという行為を分解すると
- 玄関にまで移動する
- 玄関で靴を出す
- 靴に右(左)脚を入れる
- もう片方の脚を入れる
- 右(左)の靴紐を結ぶ
- もう片方の靴紐を結ぶ
- ドアの鍵を開ける
- 外に移動する
- ドアを閉める
- 鍵を閉める
などと細かく分解することができます。(もっと細かくすることも可能です)
プログラミングの場合でも同様に自分のしたいこと、例えば、何か二人で打ち合うようなシューティングゲームを作りたいと思ったら
- プレイヤーが操るキャラクターを作る
- キャラクターの顔の丸を作る・・・
- ・・・
- キャラクターを動かせるようにする
- 十字キーの入力をすると、その方向にキャラクター動くようにする
- 十字キーの入力を受け取る
- ・・・
- 十字キーの入力をすると、その方向にキャラクター動くようにする
とどんどん細かく分解していき、最終的に「これならできるぞ」と思える粒度まで分解していきます。
問題が大きすぎて途方に暮れる
プログラミングに限らず何か問題を解決しようとするとき、その問題や課題が大きく複雑であると、私たちは一体何から手をつけたらいいのか?永遠にこの問題は解決できないような気がして気持ちが萎えてしまいます。そのような時は問題をとにかく分解していき、細かいステップにしていきます。自分がこれなら絶対登れると思える(当たり前すぎてバカげている)と感じるくらいまで分解していくことが重要です。
ビジネスでも同様です。
インクリメンタル開発の考え方は、ビジネスの課題でも使うことができます。大きなビジョンを達成するためには、いきなり全てを同時にうまくやろうとするのではなく、一歩一歩そのビジョンに到達するまでに取り組むべきことを分解して愚直に実行していく方法が有効です。
曖昧さ100%の状態を曖昧さ0%にしていく仕事
プログラミングやビジネスにおける仕事は「曖昧さ100%」の状態のものを少しずつ「曖昧さ0%」にしていくことをしています。例えば、「会社の利益をもっと伸ばしたい」ということだけが決まっている状態(曖昧さ100%)から、「どれくらい伸ばしたいのか?」「市場構造はどうなっているのか?」など順番に詰めていきながら徐々に曖昧さをなくしていき、最終的には「誰がいつまでに何をするか」が決まった状態(曖昧さ0%)にしていく、といったことを私たちはしています。プログラミングの場合、何かを実現するシステムを作りたい(曖昧さ100%)状態から、具体的にどんなUI・機能・データがあるのかなどを確定していき、システムがどのような場合に、どのように動くか全て確定した状態(曖昧さ0%)にしていきます。
まとめ
- プログラミング・ビジネスに関わらず、問題が大きいままだと解決することは難しい。
- これだったらできる!と思えるまで小さいパーツに問題を分割して考えるのがインクリメンタル開発の考え方
- 曖昧さ100%から曖昧さ0%にしていく