はじめて書いたプログラムを覚えていますか? 〜30年越しのリファクタリング〜( #phpadvent2012 Day 15 )

2012/12/15

PHP Advent Calendar 2012 の 15 日目です。昨日は美味 芳醇さんの「php5.5で追加された機能を触ってみる」でした。

つくね

↑新宿、思い出横丁某店のつくね。

さて、あなたは、あなたがはじめて書いたプログラムのことを覚えていますか。

僕は覚えています。

僕の場合のそれは、簡単な計算ゲームで、MSX 上で動作する BASIC プログラムでした。1983 年ごろ、僕が小学校 4 年生の時です。

そのプログラムは、

  1. 1 桁の数字同士の足し算をランダムに出題し
  2. その答えを入力させて
  3. 正誤を判定する

という、本当に単純なもの。

あれから 30 年(!)が過ぎようとしている 2012 年の 12 月。

今日は、

  • 同じプログラムを、まだ何も知らないかったあの頃の、透明かつピュアな気持ちになって PHP で再現し
  • 大人になって汚れちまった今の僕が、FuelPHP を使ってリファクタリングする

という話をします。どうぞお付き合いください。

まずは再現

早速再現してみました。実際に動かしてみてください。

計算ゲーム「小学校4年生のオレバージョン」

↓ソースはこちら。

どうでしょうか。できるだけピュアな気持ちで書いてみたつもりですが、もう、あの頃の心は取り戻せないのかも知れません。。

リファクタリング

さて、大人になった僕は、スクラッチでプログラムを書くことのデメリットをたくさん知ってしまいました。ということで、リファクタリングにはフレームワークを使います。利用するフレームワークは、今年僕がどっぷりハマったフレームワーク、FuelPHP です。

完成形はこちら↓。

計算ゲーム「汚れちまったオレバージョン」

計算ゲーム(汚れちまったオレバージョン)

ソースはこちら↓。

https://github.com/omoon/calcgame

リファクタリングのポイントは

などです。

今後の予定としては、

  • さらなる多言語への対応(インドネシア語、ベトナム語、タイ語など)
  • 問題の難易度を選択可能に
  • 採点機能
  • ソーシャル連携でスコア投稿

などを考えていますが、皆様に置かれましても、お気軽に Pull Request いただければと思います。

以上、あれからもう 30 年もたったのかという感慨とともに、今年も 1 年楽しくプログラムできたことに感謝しつつ、筆を置きたいと思います。

みなさま、良いクリスマスを!

<< 古い記事