はじめに
プログラマの仕事は、端的に言うと問題を解決するソフトウェアを作ることです。
ソフトウェアを作るために、さまざまなプログラミング言語やオブジェクト指向やDDDやアジャイルなどの手法があります。こういった実装技術はとても奥が深く、勉強しているととても楽しいので、「手段が目的化」してしまうことがあります。
解くべき問題について理解することを疎かにしたり、解かなくても良いような問題を解いてしまったりする状態です。
このような状態を避けるために、まずは解くべき問題を見極めてから実装すること(=イシュードリブン)を意識できるような手順をまとめてみました。
- 問題を見つける
- 問題を言語化する
- 問題を解決するためのアイディアや仮説を考えて言語化する
- ストーリーラインを作る
- 実装するソフトウェアの効果を想定する
- 実装する
- ドキュメントを書く
これら1つ1つについてポイントをまとめています。
1. 問題を見つける
まずは問題を見つけることから始まります。以下のようなケースで、問題を見つけることができます。
- 問題が与えられる(受託開発などで)
- 業務中に非効率だと思うこと
- 不快に感じていること
2. 問題を言語化する
問題を見つけたら、モヤモヤと頭だけで考えるのではなく、書き出して言語化します。言語化することによって、問題の輪郭がハッキリとします。問題を言語化する際には以下のようなことを行います。
- なぜなぜで問題を分析する
- 大きいサイズの問題なら分解する
3. 問題解決するためのアイディアや仮説を考えて言語化する
問題が言語化によりハッキリしたところで、解決するためのアイディアや仮説を考えて、これも言語化します。その際に、以下のようなことを意識します。
- 「主語」と「動詞」を入れて、あいまいさをなくす
- 「どちらか?」「どこを目指すべきか?」(WHERE)
- 「何を行うべきか?」「何を避けるべきか?」(WHAT)
- 「どう行うべきか?」「どう進めるべきか?」(HOW)
- 比較表現を入れる
4. ストーリーラインを作る
ストーリーラインは、ソフトウェアを使う人に言いたいことを伝えるために作るものです。ソフトウェアがどういった問題をどのように解決するのかを理解してもらわなければ、使ってもらえません。
問題と仮説を基に以下のような流れでストーリーラインを作ります。
背景・前提(問題と前提となる知識) -> 課題(問題の明確化) -> 手段・アプローチ(問題解決のためにソフトウェアが行うこと) -> 効果・結論(問題解決したあとに得られるもの)
ソフトウェアを実装する前からこのことを意識します。
5. 実装するソフトウェアの効果を想定する
具体的に、以下のようなことを想定します。
- ユーザーはソフトウェアをどのように使うことになるのか
- ソフトウェアがどういった動作をするのか
- その結果ユーザーがどういった効果を得られるのか
UI/UXを考えることになりますね。
6. 実装する
ここでやっと実装します。この際に以下のことを意識します。
- 短い期間(たとえば2週間)でできないか検討する
- 優先度を決めるため
- 本質的なことに注力するため
- 手段を目的化しないようにするため
- 自分一人でやろうとしない、巻き込む
- 実装を分担する
- 分からないことは詳しい人に訊く
7. ドキュメントを書く
ソフトウェアを使ってもらうために、ドキュメントを書きます。ストーリーラインを基に説明を行います。以下のようなポイントを意識します。
- どういった問題をどう解決できるか
- どのようにソフトウェアを使うのか
- 得られる効果はどういったものか
あとは実際に使ってもらいながら、ユーザーの要望や不満点などから新たな問題を見つけて、また1から同じ手順を繰り返して、より良いソフトウェアにします。
これで以上となります。
まとめ
イシュードリブンでソフトウェアを作る手順をまとめました。この手順を見返しつつ、自分がプログラムを書くときに、どういった問題を解決するためにやっているのかを意識していこうと思います。
参考
- 作者:安宅和人
- 出版社/メーカー: 英治出版
- 発売日: 2010/11/24
- メディア: 単行本(ソフトカバー)
成果を生み出すテクニカルライティング ── トップエンジニア・研究者が実践する思考整理法
- 作者:藤田 肇
- 出版社/メーカー: 技術評論社
- 発売日: 2019/02/19
- メディア: 単行本(ソフトカバー)