この記事を読むのに必要な時間:およそ 1 分
プログラマーに求められるスキル
プログラミングを行っているときに,次のような壁にぶつかった経験はないですか?
- 何から手をつけていいのかわからない
- 一貫性のないコードを書いてしまった
- バグを直そうとして,別のバグを生んでしまった
- 作ってみたものの,今後も開発を続けていくのは大変
こういった「プログラミング迷子」になってしまうのは,「開発の地図」を持っていないせいです。
プログラミングに必要なのは,何も文法の知識だけではありません。設計や開発プロセス,エラー処理といった,さまざまな技術知識が必要になります。
プログラミング言語の文法や書き方,役割を知っている人が,より効率的かつ効果的にプログラムを書けるようになるためには,技術的なつまづきと学びを繰り返し,その背景にある原理原則を見つけていくことが重要です。単に「動くコードが書ける」のではなく,「プログラミングで作りたいものを設計できる」「何かを作るプロセスを知っている」こと,つまり,「どうコードを実装して実現していくのか」こそが,プログラマーに求められるスキルなのです。
そんな必須スキルのうち,ここでは「関数設計」に関するベストプラクティスを紹介します。
関数設計のベストプラクティス
処理内容を想像できる関数名にする
プログラミングにおいて,関数化と関数名はとても大切です。たとえばある関数に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人でできる「自走プログラマー」を目指しましょう。