プログラマーに求められるスキル
プログラミングを行っているときに、次のような壁にぶつかった経験はないですか?
- 何から手をつけていいのかわからない
- 一貫性のないコードを書いてしまった
- バグを直そうとして、別のバグを生んでしまった
- 作ってみたものの、今後も開発を続けていくのは大変
こういった「プログラミング迷子」になってしまうのは、「開発の地図」を持っていないせいです。
プログラミングに必要なのは、何も文法の知識だけではありません。設計や開発プロセス、エラー処理といった、さまざまな技術知識が必要になります。
プログラミング言語の文法や書き方、役割を知っている人が、より効率的かつ効果的にプログラムを書けるようになるためには、技術的なつまづきと学びを繰り返し、その背景にある原理原則を見つけていくことが重要です。単に「動くコードが書ける」のではなく、「プログラミングで作りたいものを設計できる」「何かを作るプロセスを知っている」こと、つまり、「どうコードを実装して実現していくのか」こそが、プログラマーに求められるスキルなのです。
そんな必須スキルのうち、ここでは「関数設計」に関するベストプラクティスを紹介します。
関数設計のベストプラクティス
処理内容を想像できる関数名にする
プログラミングにおいて、関数化と関数名はとても大切です。たとえばある関数にitem_csv
という名前をつけたとします。これでは、関数名を見ただけで何をする処理かわかりません。
この関数が「書き込む」処理を行うのであればwrite_item_csv
のように、処理内容を表す動詞を関数名の頭につけるといいでしょう。
狭く具体的な意味の英単語を使おう
では、この関数が「取得する」処理を行う場合はどんな関数名にすればいいでしょうか。「get_item_csv
にすればいいじゃないか」と思った方がいるかもしれません。ですが、「get」という英単語は意味の幅が広すぎて、関数が具体的にどういう動作をするかまで想像できません。
外部へのアクセスがどれくらい発生するか、計算処理はどれくらい発生するか、データベースへのアクセスはあるのか、など、関数名から読み取れる英単語を使うことが望ましいです。
たとえばfetch_item_csv
とすると、外部アクセスをして取得する意図が伝えられます。load_item_csv
とすると、CSVファイルを読み込む処理なのだろうと想像できます。このように、英単語から処理や副作用を「想像できる」ことも重要です。
getは、そのほかにも表1のような単語で置き換えることができます。
表1 想像できる英単語の例
英単語 | 想像できる意味 |
search | 検索処理が発生する |
calc | 外部アクセスなしに計算だけする |
merge | 2つのデータを合わせて1つのデータにする |
render | 文字列や画像を処理捨て描画する |
「自走プログラマー」を目指して
書籍『自走プログラマー』では、実際の現場で起こった問題とその解決方法をもとに、設計からコードまで書けるようになるために知っておいてほしい120のベストプラクティスをまとめました。ここで紹介した関数設計をはじめ、クラス設計やテーブル定義、ロギング、リソース設計、モックアップ作成などにおいて、「プロジェクトの各段階でプログラマーがやること」「その選択をどう判断するのか」「どうコードを実装して実現していくのか」を紹介します。プロジェクトや失敗のレベル感もさまざまなので、チーム開発でも、個人開発でも役に立つこと間違いなしです。
本書を読んで、設計書をコードにする単純作業者ではなく、やりたいことをまとめ、設計からコードにし、そしてリリースするまでをすべて1人でできる「自走プログラマー」を目指しましょう。