壁に突き当たったエンジニアの皆さん,あなたに足りないのは「アセンブラ力」だ!
今やソーシャルサービスやソーシャルゲームが花盛り。この手のWeb系サービスを実現するためのプログラミングには,「オブジェクト指向」「関数型プログラミング」等々,対象をより抽象的に扱うためのテクニックや知識が重要視されます。もちろんそれは正しいですし,プログラミングのトレンドは間違いなくそちらにあるでしょう。
プログラミング「原点回帰」のススメ
しかし,どうプログラミングしようとプログラムが動くのはコンピュータ上であることに変わりはありません。プログラムがコンピュータ上でどう動くのか? 突き詰めて行くと,そうですマシン語,そしてアセンブラに辿り着きます。
「そこまで知らなくても」と思われるかもしれません。でも,たとえばわずか数行のスクリプトで,巨大なシステムに大きな負荷がかかってしまうことがあったりします。そんなときに原因を探るためには,そのプログラムの処理系が,コンピュータにいったいどんな命令を出しているのか,そしてコンピュータはどのように反応しているのかを辿る必要があるかもしれないのです。
また,Webプログラミングを一通り経験して,今あるたいていのWebシステムなら,まがりなりにも見当をつけてプログラムを書けるようになった。さて次にどうしよう? というところで,壁に突き当たるエンジニアも少なくないと聞きます。これまで順調に「伸びている」と手応えを感じていたのが,なんだか道を見失ったように思えてしまいます。
新たなサービスやトレンドに興味を向けることで,不安が解消することもあるでしょう。でも,プログラミングを始めたころ,思い通りにシステムが動きだしたときの高揚感みたいなのは,なかなか感じることはできなくなってきてはいませんか?
そんな方にも,アセンブラはお勧めです。アセンブラからプログラミングを見ると,同じプログラムを眺めても,まったく違う景色が見えるはずです。それに,プログラミングに興味があるなら「コンピュータがどう動くのか?」に多少は好奇心がくすぐられませんか? CPUやメモリのスピードや容量が何千倍になろうと,コンピュータの動くしくみ自体はそれほど変わっていません。その時のトレンドに流されない「エンジニアとしての核」が欲しい方も,ぜひアセンブラに挑戦してみてください。
アセンブラからプログラムを見るためのエッセンスを厳選
そんな皆さまにお勧めしたい書籍がこの『アセンブラで読み解くプログラムのしくみ』です。プログラミング言語の知識がある程度必要ですが,アセンブラの基本から,プログラムがどのようにアセンブラ(機械語)を呼び出してコンピュータを動かしているのか,ポイントを押さえながら理解しやすい語り口で書かれています。
著者の藤原克則さんは,アプリケーションからOSカーネルの深いところまで,そして組込み機器から汎用機まで,さまざまなプログラミング経験をもっておられます。こうした経験に裏打ちされた「本物の知恵」を,本書でぜひ体得してください。
電子書籍も「編集の原点回帰」が必要です
余談になりますが,本書の編集に携わって,あらためて「編集」の奥深さに気づかされました。EPUB,Web形式の電子書籍は,基本的にXHTMLのタグつけによって書籍としての文脈や見栄えを決定させますが,今回の電子化では将来も見据えて,文中に出てくる個々の単語やフレーズのレベルで,意味付けのタグを振っています。このため,紙の書籍を編集していた時にはあまり気に止めなかった単語レベルの意味を厳密に決める必要が出てきました。
たとえば,プログラムで使うフレーズが本文の中に出てきた場合,その語がプログラムコードの一部なのか,変数としてとりあげたのか,あるいはキー入力を表しているのか,画面出力された文字なのかを区別しなければなりません。また強調したい場合も,それが文脈上強調すべき部分なのか,重要語句として強調したいのかによって扱いが変わります。これを本文中すべての語で行わなければなりません※。
さらに単語だけではなく,文節,文章,段落レベルでも同じような意味づけが必要となる場合が出てきます。紙の書籍の編集では,まず経験したことのない作業です。このため,1つ1つの語や文言の意味について,これまで以上に突き詰めて考える羽目に…いや機会を得ました。まさにプログラマからアセンブラに回帰するのと同じ「編集の原点回帰」です。
Gihyo Digital Publishingスタートから3ヵ月,目立った変化があるわけではないですが,電子書籍の中身も着実に進化しています。最先端の知恵が詰まった1冊,ぜひご覧になってください。
※ このあたりにご興味のある方は,Gihyo Digital Publishingにて無償でご提供中の電子書籍『EPUB3用XHTML作成ガイド - Gihyo Digital Publishing版』もお読みください。
(編集担当:小坂浩史)