« 隣の先生(研C-301) | トップページ | おもしろメディア学 第71話 どこから音が来てるの?  »

読みやすいプログラムを書く授業

|

皆さんこんにちは。

メディア学部では、基礎的な素養の一つとしてコンピュータ・プログラミングを勉強します。プログラマやIT技術者になる人以外でも、論理的な考え方を鍛えるために、プログラミングの勉強は役に立ちます。

今日は、私が担当している選択科目のプロジェクト演習「リファクタリング」を紹介します。受講者10数名の少人数授業です。

大学では、情報系はもちろん、理工学系の多くの学部でプログラミングの授業・演習があります。授業は理論の説明が中心で、演習は、何かのテーマのプログラムを一から作ってみることを行います。

ところが、実際企業でプログラマーをやっていた経験だと、これらの大学の授業で十分カバーしていない重要なノウハウがあります。それがリファクタリングです。大きなテーマの講義の中の2,3回の授業で紹介されることはあっても、リファクタリングを1学期分の演習として実践する授業はほかには見当たりません。

リファクタリングは、おおざっぱに言うと「人が読みやすいプログラムを書く」ことです。

そんなの当り前でしょ、と思われるかもしれません。でも実際にはこれがなかなか実践できないものなのです。プログラムを書いて機能追加をやったことのある人なら、だんだん長くなって読みづらくなった経験が必ずあるはずです。

「リファクタリング」演習(シラバスはこちら)では、各回一人の学生が自分の書いた既存プログラムを持ってきて題材にします。スライドスクリーンにプログラムを編集する画面を出し、教員や他の受講生が、ここをこう直せばいい、という議論をします。実際に直しては実行し、また別の問題点を見つけてはどう直すか議論して実行し、ということを繰り返します。この間、そのプログラムの動作・機能はけっして変えません(それがリファクタリングの鉄則です)。

授業が終わるころには、題材のプログラムは間違いなく読みやすいものに変わっています。

実は本格的なリファクタリングとは言えないのですが、よくある変更は、各種の「名前」です。プログラムを書く際には、自分で名前をつけなければいけないものがたくさんあります。ある一連の機能(関数)の名称を適切にすることや、データを格納する「変数」にそのデータにふさわしい名前をつけることは、プログラムを読みやすくする最重要課題です。場合によっては一つの名前の議論だけで10分以上も費やすこともあります。

余談ですが、ある天才プログラマは「変数名一つ考えるのに半日費やすこともありますよ」と言っています。

このような議論を集中的にやりながらプログラムを読みやすい構造に変えていきます。授業後は教員も学生もヘロヘロになります。でも、これは私にとっては会社にいたころのコード・レビューそのものです。きっと受講生には実践的な力がつくと信じています。

(メディア学部 柿本正憲)

在学生向け」カテゴリの記事

授業紹介」カテゴリの記事

高校生向け」カテゴリの記事

« 隣の先生(研C-301) | トップページ | おもしろメディア学 第71話 どこから音が来てるの?  »