昨日から,昔使っていたあるWebのプログラムを再稼働させる必要があって,久しぶりにPerlのソースコードをいろいろいじっていました。
昔は普通に動いていたはずのプログラムが動かなくって,かなり焦っていたのですが,どうも問題は,文字コードっぽい,というところまでは段々見えてきました。

そのシステムでの,昔と今の違いは,WebページのHTMLファイルが,CSSを使ってきれいに加工されていたことでした。
そして,その時に,日本語の文字コードが,”Shift-JIS”から”UTF-8”に変わっていたのです。

UTF-8は,試験ではUnicodeとしてよく出題される,文字コードの国際規格です。
日本語だけでなく中国語などの他の言語も表せるため,国際的に推奨されています。
ということで,最近のWebサイトは,Unicodeで書かれることが普通です。

ですので,WebページのフォームからPOSTで渡される内容は,UTF-8で送られてきていました。

ただ,ソースコードを見る限りは,文字コードはプログラム内で明示的にShift-JISに変換されているので,問題がないようにも見えました。
なので最初は原因がわからなかったのですが,挙動を調べてみるとその変換プログラムは,UTF-8を認識できていないようでした。

それでネットなどの情報を合わせて確認すると,昔のプログラムは日本語変換にjcode.plというプログラムを使っていて,それはUnicodeが普及する前からあるプログラムなので,UTF-8の変換は行わないということがわかりました。

そのため,新しくUTF-8にも対応した新しいモジュールであるJcode.pmを使ってコードを書き直すことで,無事正常に動かすことができました。

Web系のプログラミングをする人なら当たり前の話だとは思いますが,試験に出てくる文字コードも,こんな風にプログラミングしながら納得すると,頭にはっきり残ります。
Webプログラミングの場合は,HTTPの挙動などを把握するのも,デバックには重要です。

ということで,久しぶりに仕事でプログラミングをしていて,焦りつつも楽しかったです。
無事動いたときの喜びは格別ですね。

そして,今日もう一つ,気づいて驚いたことがありました。
そのプログラムの中で使われていた,あるPerlのモジュールの作者が,私の知ってる人だったのです。

その方は,昔私がネットワークスペシャリスト試験を受験する際にいろいろ教えていただいていて,開発者でありながらネットワークにも造詣が深い方でした。
私が合格する前年にネットワークスペシャリストに合格された方で,専門を極める,技術者の鏡のような方でした。

改めて,オープンソースのモジュールの中に名前を見かけて,「やっぱすごいなぁ」と改めて感じました。
こんな風な,資格と実務的なスキルを両方持ったエンジニアがどんどん増えるといいなって,思ってます。

以前,「資格×実務で,ハイブリッドにいこう」でも書きましたが,資格試験の勉強は,以外と実務にも役立ちますし,実務は資格にも結びつきます。

できる限り,それを全然別物と切り離して考えず,2つが結びつくようにしていくと,相乗効果がありますのでおすすめです。
できれば両方,楽しみながらやっていきましょう。