id:anatooのブログ
文系大学生の自分がWebエンジニアとして就職活動していた頃に書いたコード
2022年2月9日

山岡さんが書いたWebエンジニアとして駆け出そうとしているあなたへという記事を読んで、そういえば自分が就職する頃ってどういうコード書いてたっけ?とふと思って書き出してみることにした。

当時の自分は佐賀大学の経済学部に在籍している大学生だった。2〜3年目ぐらいから大学に通うことに対して意味を感じられなくなった結果留年して時間が余っている時期だった(卒業するのに結局5年半かかった)。文系の学部なので情報系の学部生が当然持っているような知識はなかったが、趣味でウェブサイトを作ったりプログラミングをやっていたので、同年代の中ではコードを書ける方だったと思う。

  • はてな記法パーサ
    • はてなダイアリーで利用できるはてな記法というMarkdownっぽい独自記法があって、それのパーサをPHPで書いていた。最初は文字列を行ごとに区切って一行一行正規表現などを使って解釈するというやり方でパーサを実装していたが、途中ではてな記法の中には再帰的な構文が含まれていて無限の先読みが必要であることに気がついて、後述するパーサコンビネータを使って書き直したりしていた。
  • パーサコンビネータ
    • Packratパーサを構築できるパーサコンビネータをPHPで書いていた。PHPで複雑な文法のパーサを書こうと思うと、当時はパーサを手書きするかlex+yaccからPHPのコードを生成する方法を取る必要があったが、はてな記法のパーサを書くのにそういうことはやりたくなかった。当時PHPにパーサコンビネータのライブラリは無かったので自分で書くことにした。
  • PNG画像のエンコーダ・デコーダ
    • 当時時間が余っていたので勉強のためにPNG画像のエンコーダ・デコーダを実装した。PNGの仕様書を読んでバイナリファイルの中身がどういうレイアウトになっているかを把握した後、PHPでPNG画像のファイルをパースしたりピクセルの二次配列からPNG画像ファイルを生成する処理を書いた。圧縮部分はPHPに元からあるzlib拡張を使った。PHPで実装したので実用性はゼロなんだけど、バイナリファイルを扱うための知識みたいなのはついたと思う。
  • 画像の拡大縮小アルゴリズム
    • PNG画像のエンコーダ・デコーダを書いたついでに、勉強のためにいくつかの画像の拡大縮小アルゴリズムを実装していた。ニアレストネイバーやバイリニア、バイキュービックなどいくつかのアルゴリズムを実装してその違いを実際に見て確かめたりしていた。これもPHPで書いたので実用性はゼロなんだけど、拡大縮小アルゴリズムってこういう感じなのねというのがわかって勉強になった。

あとは普通にPHPとMySQLでTwitterクローン書いてさくらのレンタルサーバで動かしていた。その時のコードは古のコード共有リポジトリであるCodeReposに置いていたと思う(がこの辺記憶があやふや)。


久保田光則 (id:anatoo)

福岡在住のソフトウェアエンジニア・UI/UXデザイナー。RelayHub, LLCという会社をやっています。
技術評論社『Webフロントエンド ハイパフォーマンス チューニング』好評発売中。

   
© Mitsunori Kubota