開発スピードを早めるための5つのコツ
エンジニアの内山です。
最近は、仕事の合間の気分転換に、けん玉を練習しています。「世界一周」という技の成功率を上げることが間近の課題です。
ところで、エンジニアなら誰でも「もっと素早く開発したい」「短時間でより多くの開発をこなしたい」と考えているのではないでしょうか。
そこで今回は、私が今までの経験の中で身につけた、開発スピードを早めるために心がけていることをご紹介します。
開発する目的まで戻って考える
そもそも、開発するものが少ないほど、機能が複雑なものより単純なものほど、開発は早く終わります。
そのため、開発のスピードを上げるために最初に行いことは、開発するものを減らしたり、機能を単純化したりできないかを検討することです。
検討の際は、開発を行う本来の目的まで戻って考えることが大切です。
- そもそもどういった問題を解決したいのか
- そもそもどういった仮説を検証したいのか
本来の目的が明確になれば、それを実現するための機能を絞り込むことができ、開発が一気に楽になります。
基礎的な技術をきちんと理解する
ライブラリやフレームワークは、OSやネットワークなどの基礎的な技術を隠蔽してくれています。
普段は、これらを使いこなすことによって、楽に開発ができるようになっています。
しかし、なにか不具合が発生した時に、隠蔽されている部分の挙動を把握しなければいけないことがあります。
この時に必要になってくるのが、基礎的な技術の理解です。
ソースコードを読み、ライブラリやフレームワークの挙動をどれだけ理解できるかでデバッグのスピードが違ってきます。
基礎的な技術については、重要度は高いけれど、緊急度は低く、1から勉強するとなると範囲が広いため、つい疎かになってしまいがちです。
筆者の工夫としては、「少し余分に掘り下げる」ということをしています。
例えば、ライブラリのメソッドの使い方について調べるときには、ドキュメントを読むだけでなく、ソースコードも読んでみます。
ソースコードを読み込んでいくと、基礎的な知識がないと読み解けない部分が出てきます。そのときに必要になった基礎知識を勉強します。
役立つのかどうか分からない基礎的な技術の勉強が苦手な人には、おすすめの方法です。
よく使うプログラミング言語の基本的な文法を丸暗記する
よく使うプログラミング言語については、以下のような基本的な文法を丸暗記して、何も見なくても書けるようにしておくと効率が良いです。
- クラスの定義(継承なども含め)
- メソッドの定義
- if文
- for文
丸暗記するコツとしては、文法の意味を理解したら、実際にキーボードで打ち込んで、身体で覚えてしまうことです。
同時期に複数のプログラミング言語を扱っているときには、記憶が混乱してしまいがちですが、エディタの入力補完を活用すれば対応は可能です。
動作チェックを頻繁にすばやく行う
以下のような格言があります。
プログラムは思った通りには動かない。書いた通りに動く
「このように動くだろう」と想像するだけでプログラムを書きつづけると、バグが発生する可能性が高まってしまいます。
これを防ぐためには、動作チェックを頻繁に行うように心がけます。
また、動作チェックはすばやくできるようにしておくことです。
例えば、Webアプリの開発とデバッグを行う段階では、ブラウザを使った動作チェックは手間と時間がかかってしまうので、できる限り単体テストで動作チェックできるようにします(もちろん最終的にはブラウザでチェックすることは必要です)。
普段から心がけていることは以下のようなことです。
- ロジックが複雑な場合(計算が複雑、分岐が多いなど)、関数に切り出して、単体テストを行う
- 外部サービスや外部ライブラリがどのような動作になるのか不明な場合は、動作検証用の短いプログラムを書いて実行してみる
こういった細かい動作チェックによって、全体的な開発スピードが早まります。
エディタやIDEを使いこなす
業務で扱うプログラムは、複雑かつ大規模であることが多いため、エディタやIDEを使いこなすことが重要になってきます。
最低限、以下の機能を使えるようにしておくと良いです。
- 定義ジャンプ機能
- 入力補完機能
- リファクタリング機能
これらの機能を活用することで、以下のような利点があります。
- 多くのオブジェクトを行き来する処理をスムーズに追える
- タイポを減らせる
- 変数名や関数名のリネームが安全にできる
細かいところですが、チリツモになる部分であり、プログラムの品質を保つことにも繋がります。
合間合間に、エディタの使い方や設定を少しずつ改善すると良いでしょう。
おわりに
開発スピードを早めるために心がけていることをご紹介させていただきました。
ちょっとしたコツを身につけるだけで、より素早く、効率的に開発をこなせるようになると思います。
ご参考になれば幸いです。