机を片付けるように、プログラムも整理する

藤原 賢二

試験前になると、ついつい自分の机や部屋が散らかっているのが気になって、片付けを始めてしまう。そんな経験をお持ちの方は一定数いるのではないでしょうか。 試験の前日であれば、片付けなどしている余裕があったら少しでも勉強をした方がよい。これは多くの人が納得できる話だと思います。 しかし、「勉強用の机は、散らかっている状態よりも片付いている状態の方が勉強が捗るか?」と聞かれると、何となく片付いている方が良いのではないかと思う人が多いのではないでしょうか。 机がずっと散らかっていると、作業をするスペースが狭くなったり、必要なものをどこにしまったのか分からなくなったりして、作業効率が落ちると考えられます。 もちろん、「この散らかった状態が自分にとっては最適で、どこに何があるかもしっかり把握している」という人も世の中にはいるでしょう。 大切なのは、机が片付いている状態の方が作業しやすいと思うのであれば、試験前ではなく、日頃の余裕のある時期に少しずつ整理しておくことではないかと思います。

片付いている机と片付いていない机
片付いている机と片付いていない机

プログラムの世界にも、これとよく似た話があります。 プログラムも文章と同じで、同じ目的を達成するコードであっても書き方は一つではありません。プログラムを書く人によって、読みやすいコードもあれば、読みにくいコードもあります。 例えば、次の二つのプログラムは、どちらも「商品価格と消費税を足した価格を計算する」ことを目的としています。

どちらも同じ計算をしていますが、ぱっと見て意図を推測しやすいのは前者ではないでしょうか。 先ほどの机の話と同じように、プログラムも整理されていて読みやすい方が、内容を把握しやすく、ソフトウェア開発も進めやすくなりそうだと感じる人は多いと思います。 ここで、机と同じように「自分は読みにくいコードでも理解できるし、自分が書いたコードだからどこがどうなっているか分かっている」という人もいるかもしれません。 しかし、実際のソフトウェア開発では、一人だけでプログラムを書くことはあまり多くありません。多くの場合、複数人で一つのソフトウェアを開発していきます。 机にたとえるなら、自分専用の勉強机ではなく、家族や友人と一つの机を共有して使うような状況です。自分一人だけなら多少散らかっていても困らないかもしれませんが、毎日違う人がその机を使うのであれば、片付いていた方が全員にとって使いやすいはずです。 プログラミングにおいて、この「机を片付ける」ようにコードを整理し、読みやすく・修正しやすくする作業を「リファクタリング」と呼びます。厳密には、「ソフトウェアの外部的な振る舞いを変えることなく、内部の構造を改善すること」を指しますが、まずは「コードを整理すること」くらいの理解で十分です。 筆者はリファクタリングをテーマの一つとして研究しているのですが、ソフトウェア開発におけるリファクタリングの重要性を世の中に広めるのは、実はそれほど簡単ではありません。 なぜなら、「何となく良さそう」と「本当に効果がある」は別の話だからです。

ここまでの机の話に戻ると、

  • 人によって、片付いている・散らかっているの感じ方は違う
  • 片付いている机が良いとしても、片付けるタイミングが重要(試験前はおすすめできない)
  • そもそも机を片付けたからといって、試験の成績が良くなる保証はない

という問題があります。単に「机は片付けましょう」と言うだけでは、大きな説得力はありません。

では、「リファクタリングはした方がよい」と開発者に納得してもらうにはどうすればよいのでしょうか。 再び机の話で考えてみます。 例えば、「試験2週間前に机を片付けて試験勉強に取り組んだ学生は、片付けずに勉強した学生よりも有意に試験の成績が良かった」という統計的な結果が得られたとしたらどうでしょう。単に「机を片付けましょう」と言われるよりも、ずっと説得力があるように感じるのではないでしょうか。 筆者が専門とするソフトウェア工学の一部の研究では、これと同じように、「リファクタリングは本当に開発に役立っているのか」という仮説を、実際のソフトウェア開発履歴を使って検証しています。 実際の研究では、そもそもリファクタリングがいつ行われたのかを特定すること自体が難しいなど、多くの課題があります。この話を始めると長くなってしまうので、今回はここまでにしておきます。

次に試験前、机を片付けたくなったときは、ぜひ一度立ち止まって考えてみてください。

「これは本当に今やるべき整理なのか?」

もし答えが「今ではない」なら、試験が終わってからゆっくり片付けるのはいかがでしょうか。 そして、もしプログラムを書く機会があれば、コードについても同じことを考えてみてください。 机もコードも、整理すること自体が目的ではありません。これから先の作業を、少しでも進めやすくすることが本当の目的なのです。

この記事を書いた人
藤原 賢二
藤原 賢二
ふじわら けんじ 

奈良女子大学 生活環境学部 文化情報学科 生活情報通信科学コース 専任講師

専門分野:ソフトウェア工学

↑ 上に戻る