OSCのLTなどいろんなところで話していた「アセンブラ短歌」に関してですが,アセンブラ短歌の書籍が無事に先行予約開始になりました.

31バイトでつくるアセンブラプログラミング ~アセンブラ短歌の世界~

マイナビで特集ページも組まれています.

普通の解説書では飽き足らないあなたのために - Mynavi Advanced Library


KOZOSのブログ


内容はまあ,アセンブラ短歌です.笑
「アセンブラ短歌」を知らないかたのために一言で説明しますと,「五・七・五・七・七の三十一バイト(みそひとバイト)から成る 機械語コードでプログラムを書いてみるという近未来の文化的趣味」というものです.

「なんの意味があるのか?」と言われるとまあ面白いから,という感じなのですが,いちおう技術的な意味もあります.アセンブラ短歌のホームページ の「アセンブラ短歌の意義」で説明しているのですが, 実はセキュリティ教育の意味があったりします.というのはまずアセンブラを理解することや,加えてこのような特定のバイト数でプログラムを書いたり,決まった制限の中でプログラムを書く技術というのは,脆弱性をついて送り込まれる攻撃コードを理解するために有用だからです(そして防御のためには,攻撃手法をまずは理解することが重要).ところがアセンブラ・プログラミングは空洞化してしまった技術分野で,勉強するのがちと難しくなっているように感じます.とくに「遊び感覚で,楽しく勉強する」という題材が少なく,とっつきにくいイメージがあります.そういう現況を打破するために考案したのが「アセンブラ短歌」です.


書籍中ではx86アセンブラの簡単な解説と説明から始まり,文字列を出力するだけの簡単なアセンブラ短歌から,徐々に高度なプログラム(というか,短歌)を扱っています.特定の命令を各句の末尾に(しかも,意味のある命令を)置くことで韻を踏んでみたり,短歌でなく川柳(川柳は5・7・5)を作ってみたり,電卓もどきを作ってみたり,かるたを作って競技用に難読化してみたり,Quineをやってみたり,内容は様々です.

アセンブラというと難解なイメージがありますが,実は書籍中で使っているアセンブラ命令は数少なく,内容的にもそれほど複雑なプログラムになることもなく(所詮31バイトのプログラムなので),初心者が遊び感覚でアセンブラを学習する良い題材になるかと思います.

アセンブラの解説書は多数ありますが,なんだか難しくてとっつきにくいなあ,読んでても眠くなっちゃうし,もっと遊び感覚でできないかなあ,という初心者のかたにぜひ読んでいただければと思います.

とはいってもまああくまで遊びで,遊びなのだけどそれが勉強にもなればそれって良い趣味になるよね! って感じの考えです.なので「これでほんとに勉強になるのか?」「実用的か?」などあまり肩肘はって考えず,なんか面白そうくらいの感覚でやってみていただければと思います.やってみると,独特のパズル感覚があって実際結構面白いし熱中します.必死になって命令セットを調べたりするので,勉強にもなります.笑 なので初心者に限らず,フツーにアセンブラ使っているよ,というかたもぜひどうぞ.

メインは私が書いていますが,今回は共著で書かせていただいており,執筆陣がなかなか豪華です.セキュリティ・キャンプでお馴染み,最近は「たのしいバイナリの歩き方」でも有名な愛甲健二さん,SECCON実行委員で活躍中のネットエージェントの松田和樹(eagle0wl)さん,Shibuya Perl Mongersやセキュリティ・キャンプ,SECCON実行委員長など広範囲に活動されている竹迫良範さんらにも書いていただいています.書籍ホームページで目次を見ていただければわかるのですが,それぞれの得意分野で,64ビット環境でのアセンブラ短歌や6502でのアセンブラ短歌,MS-DOSでのアセンブラ短歌,表示可能文字だけを使ったアセンブラ短歌など書いていただいてます.(とくに松田さんの,「エクストリーム・アセンブラ短歌」がすごい)

あとメインはLinux/x86をターゲットにしているのですが,組込み向けにRXマイコンでのアセンブラ短歌や68HC11でのアセンブラ短歌なども扱っています.なので組込み系のかたもぜひ.