アプリケーションをどうやって作っていくか考えてみる。その1
私の場合は結論から言うと、実現するイメージをぼやっと作った後は、各段階のパーツを組み合わせて作っていく、という流れが今の所あっていそうです。
今日はこの考え方についてまとめていきたいと思います。
その1 作りたいもののゴールをイメージを明確にする
まずは何を作りたいかをイメージできる必要があります。
私の場合は、次のような方法でまずイメージを明確にすることが多いです。
イメージを明確にする方法① 実物でロールプレイ
以前、とあるパズルゲームを作った時は、将棋盤と麻雀牌を使って人力で動かして理解しました。 ロジック部分は人間特有の曖昧さでカバーすることで、実際にどんなゲームにしたいかを明確にすることができました。
もちろん、曖昧になっていた部分は論理的に実装する必要がある部分なので、後ほど考える必要はありますが、この時はこんな機能が必要だなぁくらいでOKです。
イメージを明確にする方法② Pythonでプロトタイプ作成
自分の中で一番コードを組みやすいのがPythonなので、Pythonでプロトタイプを組むこともあります。
この時大事なのは、あくまでプログラムの動きを把握すれば良いので、一部のデータがハリボテだったりしても問題ありません。プログラムの根幹の動きが表現できているかがわかる形でプロトタイプを作成します。
イメージを明確にする方法③ 方眼紙で設計
特にUIを表現する場合は多用しています。例えば9マスx16マスで枠を作り、その中におきたいパーツを書いていけば、スマホ向けのゲーム画面を作ることができます。
他にも、付箋と矢印を書いてアーキテクチャ図式化したりすることで、何を作れば良いかが見えたりすることもあります。
その2 必要な機能レベルでTODOリストを作成する
思いつく限りピックアップする
イメージが明確になると、必要な機能がいくつか思いつくと思います。
それらを忘れないうちにTODOリストに記載していきましょう。
この時、変に制限かけると何も書けなくなったりするので、細かい荒い、大きい小さい気にせずに思いつく限り書くようにします。
また、この一回で全部出しきれなくても大丈夫です。思いついたら都度追加しても良いですし、逆に思いついたけどいらないと思ったら思い切って捨てましょう。それはいらない機能でしょうから。
必要最低限と後に回すものを分類する
リリース時に必要なのは必要な機能が含んだリリースです。
なので、ピックアップした機能のうち、何がすぐ必要で何があとで良いかは分類しましょう。
あとで良いに分類したものはそのリリース中は考えなくても良い状態にできると良いです。思考の切り替えは無駄に繋がるので、なるべく今必要なことに集中できるようにします。
必要最低限の機能の優先順位と期限を作る
私の場合、何から手をつければいいかを悩む時間はかなりの無駄です。
なので、あらかじめ何から作っていくか優先順位はしっかりつけましょう。
アプリかなんかでTODOリストを管理する場合は、上から順番になるようにすると綺麗に手をつけられるかもしれません。
また、必ず期限は設けましょう。プレッシャーで作業効率が上がります。
正し、間に合わなくても自分を責めないようにしましょう。自分を責めるとメンタル面のダウンから来る作業効率のダウンが待っています。間に合わなかったらリスケしましょう。
その3 作成とテスト
部品を作ってテストする
私の場合、ボトムアップの方が考え方と一致しているみたいなので、原始的な機能を作成して、徐々に組み合わせて機能を実現していくという考え方で作成します。
また、それぞれ作成した部品については必ずユニットテストを行うようにしています。
ユニットテストを行うことで機能に関する安心感が得られたら、別の部品を作っていきます。
部品を組み合わせてテストする
いくつか部品作りが終わると、部品を組み合わせる段階になります。
その時も組み合わせた新しい部品でテストを行うようにします。この段階だと結合テストでしょうか?
機能が実現できているかテストする
部品を組み合わせてと組み合わせていくと、最終的に機能実現に必要な部品が出来上がります。この出来上がった部品に関してもテストしましょう。
私の中でテストすると言うのは、ちゃんと動いていくことの保証の意味合いが強いです。これを続けることで安定性のあるプログラムを作ることができると信じています。
今回は、どんなふうにプログラムを作っていくかをまとめました。参考になったらありがたいです。
それではみなさん、またお会いしましょう。