「3の倍数と3が付く数字のときだけアホになります」――お笑い芸人「世界のナベアツ」の持ちネタだが,プログラミングに興味のある人なら,これをプログラムで書くという題材をどこかで目にしたことがおありだろう(関連記事)。日経ソフトウエア2008年9月号で,こういったプログラミングのお題を解く,という特集を組んだ。

 日経ソフトウエアは,今では数少なくなってしまったプログラミングの雑誌である。どちらかというと実務向きと見られることが多いようだが,「仕事か趣味か」という切り分け方はあまり意識しないようにしている。初級者向けの記事が多いせいもあるのだが,なによりもプログラミングは楽しいということを伝えるのが本誌の使命だと思うからだ。今回の特集もその一環である。

 プログラミングを楽しむためには,なにも「すごいプログラム」を書く必要はない。これを実感したのは1年ほど前である。ソフトウエア技術者がブログなどで頻繁に取り上げた「FizzBuzz問題」をご存じだろうか。FizzBuzz問題は,ナベアツ問題よりはいくぶん簡単で,基礎だけでもプログラミングを習得した人なら難なく書ける。「1から100までの数を順に出力せよ。ただし,その数が3で割り切れるときは文字列“Fizz”を,5で割り切れるときは文字列“Buzz”を,3でも5でも割り切れるときは文字列“FizzBuzz”をそれぞれの数の代わりに出力せよ」というものだ。

 それほど簡単な題材でも,初心者はもちろん,仕事でばりばりプログラムを書いている人も大いに楽しめた。火付け役となったブログで「真のプログラマなら2分で書ける」という挑戦的なことが書かれていたせいもあるが,使ってよい機能にあれこれと制限を設けたり,いろいろな言語で書いたり,ときには他の人が書いたプログラムを読んだりなど,プログラミングにはスキルに応じて様々な楽しみ方があるからだ。

 日経ソフトウエアでの特集も,お題を設けてただ「作ってみました」では面白くないので,お題に対して筆者自身がプログラムを書き,そのプログラムに対して講評を加えてもらう構成にした。筆者が一番ましなプログラムを書けるのはC言語なので,弊誌にC言語の連載を長年書いていただいているピーデーの川俣晶氏に講評をお願いした。筆者は常々,より多くの読者にコードを実際に書いてもらいたいと考えている。自ら汗を流してプログラムを書いてこそ,その楽しさ,面白さを伝えられるのではと考えるからだ。

 ちなみに「ナベアツ」のほかに掲載している問題は「25ケタの整数の加減算」「36進数/62進数と10進数の相互変換」「自然数の素因数分解」「プログラムのコメント部分の抜き出し」である。

 講評対象とはいえ,自らのコードが誌面を飾る以上,少しでもまともなプログラムを書くように心がけたつもりだった。それでも,「これ以上短くしようがないな」と思って書いた6行のコードが,講評してもらったら1行になって返ってきたり,ごく基礎的なことでも全く知らなかったことがあったりして,いい汗だけでなく冷汗を十分にかく結果となった。そのような指摘の多くは講評部分にちりばめてある。特集を読んで一緒に追体験してもらうもよし,筆者のコードのダメっぷりを笑うもよし,思い思いに楽しんでいただければと思う。記事を読むまでもなく,どう書けばよいかがぱっと思い浮かぶ方は,頭の体操と思ってご自身の得意なプログラミング言語で書いてみてはどうだろうか。ブログなどに公開していただければ,ぜひ読みに伺いたい。

 趣味のパソコンとプログラミングがほとんど同義だった時代からすると,パソコンの使い方,楽しみ方が増えた分,プログラミングを楽しむ人は少数派になってしまったかもしれない。それでも,今後も折に触れ,誌面を通じてプログラミングの楽しみを広めたいと日々考えている。