プログラマーとして独り立ちするために

プログラマーに求められるスキル

プログラミングを行っているときに、次のような壁にぶつかった経験はないですか?

  • 何から手をつけていいのかわからない
  • 一貫性のないコードを書いてしまった
  • バグを直そうとして、別のバグを生んでしまった
  • 作ってみたものの、今後も開発を続けていくのは大変

こういった「プログラミング迷子」になってしまうのは、⁠開発の地図」を持っていないせいです。

プログラミングに必要なのは、何も文法の知識だけではありません。設計や開発プロセス、エラー処理といった、さまざまな技術知識が必要になります。

プログラミング言語の文法や書き方、役割を知っている人が、より効率的かつ効果的にプログラムを書けるようになるためには、技術的なつまづきと学びを繰り返し、その背景にある原理原則を見つけていくことが重要です。単に「動くコードが書ける」のではなく、⁠プログラミングで作りたいものを設計できる」⁠何かを作るプロセスを知っている」こと、つまり、⁠どうコードを実装して実現していくのか」こそが、プログラマーに求められるスキルなのです。

そんな必須スキルのうち、ここでは「関数設計」に関するベストプラクティスを紹介します。

関数設計のベストプラクティス

処理内容を想像できる関数名にする

プログラミングにおいて、関数化と関数名はとても大切です。たとえばある関数にitem_csvという名前をつけたとします。これでは、関数名を見ただけで何をする処理かわかりません。

この関数が「書き込む」処理を行うのであればwrite_item_csvのように、処理内容を表す動詞を関数名の頭につけるといいでしょう。

狭く具体的な意味の英単語を使おう

では、この関数が「取得する」処理を行う場合はどんな関数名にすればいいでしょうか。get_item_csvにすればいいじゃないか」と思った方がいるかもしれません。ですが、⁠get」という英単語は意味の幅が広すぎて、関数が具体的にどういう動作をするかまで想像できません。

外部へのアクセスがどれくらい発生するか、計算処理はどれくらい発生するか、データベースへのアクセスはあるのか、など、関数名から読み取れる英単語を使うことが望ましいです。

たとえばfetch_item_csvとすると、外部アクセスをして取得する意図が伝えられます。load_item_csvとすると、CSVファイルを読み込む処理なのだろうと想像できます。このように、英単語から処理や副作用を「想像できる」ことも重要です。

getは、そのほかにも表1のような単語で置き換えることができます。

表1 想像できる英単語の例
英単語想像できる意味
search検索処理が発生する
calc外部アクセスなしに計算だけする
merge2つのデータを合わせて1つのデータにする
render文字列や画像を処理捨て描画する

「自走プログラマー」を目指して

書籍自走プログラマーでは、実際の現場で起こった問題とその解決方法をもとに、設計からコードまで書けるようになるために知っておいてほしい120のベストプラクティスをまとめました。ここで紹介した関数設計をはじめ、クラス設計やテーブル定義、ロギング、リソース設計、モックアップ作成などにおいて、⁠プロジェクトの各段階でプログラマーがやること」⁠その選択をどう判断するのか」⁠どうコードを実装して実現していくのか」を紹介します。プロジェクトや失敗のレベル感もさまざまなので、チーム開発でも、個人開発でも役に立つこと間違いなしです。

本書を読んで、設計書をコードにする単純作業者ではなく、やりたいことをまとめ、設計からコードにし、そしてリリースするまでをすべて1人でできる「自走プログラマー」を目指しましょう。