コーディングのプロセス
イントロダクション
コーディングの過程を、効率的かつ効果的に進めるためのプロセスに焦点を当てる。この備忘録は、これから「つよつよエンジニア」に成長するための一歩として、その手順を整理し、共有することを目的としている。
コーディングのプロセス全体像
コーディングは、以下のプロセスに分解できる。
- API理解
- 設計
- テストコード作成
- 実装
- リファクタリング
- サンプルコード作成
API理解
以下の参考記事に書かれているように、API理解(公式ドキュメント)の読解が必須である。
具体的手順は、以下の通りである。
- 該当の公式ドキュメントを上から下まで読む。(利用するメソッドは理解するとして、他は一通り見る)
- 関連情報を探る(参考目安)
- 書籍:2冊
- ブログ:10個
- 動画:3本
- トピックを発信する(参考目安)
- 勉強会で発表する
- ブログ記事にまとめる
- 解説動画を作成する
- (あれば)該当資格を取る
意外とこれに時間がかかる。が、これをやっている人としていない人では差が激しい。
設計
設計書を作成する。
APIを理解していれば、今回の場合どのようなメソッドを利用していけば良いかを理解しているはずである。そのため、車輪の再発明は限りなく激減する。
設計書は、正式に作成する必要はない。
もし最終的にREADMEとして設計書が必要であれば、公開用設計書の下書きとして、Markdownにでも下書き程度で問題ない。
この場面で、何が必要かをまとめる。
- 簡易なクラス図・フロー図
- 機能ごとに書かれたTODOリスト:
- (Beck)TDDを参照してください
- アジャイルでしている場合には、Taskに登録
- アルゴリズム概要
- 日本語・数式でフローをまとめておく
- メソッド名
- docstring
- メソッド概要
- parameter
- return
ここまで書けば、次に進める。
テストコード作成
まだ実装コードに手は出さない。
docstringを参考に、期待するreturnのテストコードを作成する。
複数のインプットとかを想定したいなとか思っても、最小の実装から想定する。
そういうときは、TODOリストに書いておいて、大変かもしれないがsmall stepに進める。
テストコード作成でやること
- docstringから、最小実装のテストコードを作成する
- アイデアが出たら、TODOリストにメモする
ここでのテストコードは、ベタ書きでOK。
テストコードは、Whatを表し、「手順書」の役割を担う。
DRYではなくDAMPを意識する。
実装
テストをクリアできる最低限の実装をする。
リーダブルコード下に書かれている最低限の原則は守ってほしい。
今回は、その内容には触れない。
リファクタリング
実装が進んでいけば、テストコードのベタ書きが増えたりするだろう。
そういう時は、parametrize などでグループ化していく必要がある。
これをTODOに書いて、実装コードやテストコードにおいてもリファクタリングを進める。
サンプルコード作成
実際に動いている様子を確かめるサンプルコードはテストの時に同時に作成しておく。
これも最低限動くと想定されるテストコード(複合テスト)の役割を担っている。
同時に確認していくことで、確実に動くコードが完成する。
まとめ
そうこうしていると、設計書・コード・テストコード・サンプルコードが完成していた。
実装し終わった段階で、設計書・テストコード・サンプルコードが同時に完成することが理想である。
まとめ
そうこうしていると、設計書・コード・テストコード・サンプルコードが完成していた。
実装し終わった段階で、設計書・テストコード・サンプルコードが同時に完成することが理想である。
このアプローチを取り入れることで、「つよつよエンジニア」への道を切り開くことができるでしょう。
私自身、弱々エンジニアなのでこの手順で成功するかをデバッグします。
皆さんも一緒にがんばりましょう!!!
不備・不明点ございましたらコメントで教えていただければ幸いです。
参考記事
Discussion