Imperative」は2002年3月の出版であり、もはや16年前の書籍になるが、いま読んでも示唆に富む本だ。このことは逆に日本のソフトウエア産業が足踏みしたままであることも示している。情報教育、プログラミング教育に携わりながら教務システムの内製を経験した私は、常にプログラミングと価値の創造について考えているが、今日たまたま近所のほっともっとで昼食の弁当を買いに行ったとき、レジでの注文のあとぼんやりと弁当が出来上がるのを待ちながらこの本の一節を思いだした。いま年の瀬も押し迫った12月末だが、たとえば客に「年末年始の営業日はいつもと同じか」と聞かれたとしよう。「少々お待ちください」と言いスケジュール表を見るようでは優れたレジ係とは言えない。この時期だから、もしかしたら客からこのような質問があるかもしれないと思い、あらかじめ店舗スケジュールを頭に入れておくはずだ。すれば即座に返答ができるだろう。レジ係は客の注文を受け、代金をもらい、厨房に注文を出し、できた弁当を客に渡すという仕事だが、このルーチンだけできればいいというものではない。「ソフトウエア職人気質」には「顧客の利益はソフトウエア職人の利益と一致する」の節があり、こう書かれている。「顧客は、優れたソフトウエアを望んでいます。ソフトウエア職人は、誇りに思え、自分の評判を支える優れたソフトウエアを作り出したいと考えています。いった相互利益の一致によって、顧客とソフトウエア職人のより良い関係を築き上げることができるわけです。優れたレジ係の利益は客の利益と一致する。ソフトウエア開発者があらかじめ調整された仕様書だけを頼りにして開発する時代が終わったように、レジ係もマニュアル通りの注文、集金業務だけしていればよい時代も終わったのだろう、などとぼんやり思う年の瀬である。マインクラフトファン随喜の逸品だ。BLOCKOPEDIA」だ。encyclopedia」つまり百科事典のことを指している。「マインクラフト百科事典」というところだ。パッケージは四角いが、中に入っている本は六角形をしている。マインクラフトのキューブをデザインしているわけだ。パッケージの裏には説明がある。パッケージから本を取り出すとこんなかんじ。栞に使う太めのリボンがついている。空気、ネザーとジ・エンド、プレイヤー作成ブロック、実用品、メカニズム、そしてクリエイティブモードの「Mobの頭」の項目に分けて解説されている。それぞれの要素の働きや性質、作り方がわかるのだ。この本はマインクラフトのプレイヤーには必携だ。刺激的なタイトルに魅かれて読んだ。念のために書いておくが、どのような書籍でも100パーセント正しいものや100パーセント間違ったものはない。書籍は著者が調べたことや考えをまとめたものであり、出版の自由がある。それが自由主義社会というものだ。したがって読み手は共感を覚えるだけでなく、懐疑の精神も必要になる。批評の存在価値はそこにある。この本を読んだからと言って、必ずしもそれに100パーセント鵜呑みにするものでもなく、また批判だけをすることも意味がない。いえ日本と韓国の関係は微妙なものであり、歴史的、民族的な面からしてもデリケートなテーマである。著者は台湾生まれで、来日して日本の大学で学んだ経歴がある。「台湾は日本人がつくった」という著書もあるようだ。日本人でも韓国人でもなく、台湾という国から見た視点、というものがこの本の特徴であると言えるだろう。著者は主に朝鮮半島の歴史、とりわけ中国との歴史的な関係をベースにしながら、日清戦争で日本が清に勝ち、そして韓国併合によって大日本帝国領となった朝鮮を統治するため朝鮮総督府が設置された経緯における、社会的かつ経済的発展を中心に論をたてている。この本の内容を解説的に述べるのは適切ではない。気になる人は自分で読んでみることを薦める。世には様々なギター教則本があるが、大別するとギターの構造やピッキングと運指法、楽典の基本、メジャー、マイナー、ペンタトニックなど基本スケールの解説などの初心者向けの内容のもの、ドリアン、リディアン、コンビネーション・オブ・ディミニッシュなどスケール理論を網羅的に解説したもの、ジャズやブルースなど特定ジャンルの演奏法を解析し、また典型的な著名なギタリストのフレーズを解析し、奏法を解説するなどしてその人らしい演奏ができるようにガイドするもの、そして最近の流行に思えるのは、トレーニング用に作られた短いフレーズを列挙し、いわば小学生の算数ドリルのように積み重ねる練習法を示すものがある。この本はそれら数多の教則本にないことが解説されている。この本を読みいくつかのエクササイズを試すと、音楽というものが時間の流れとともにある芸術であることに気付かされる。そもそもこれは当たり前のことなのだが、この当たり前のことに気づくと、世にある数多の教則本には時間の流れについての解説が欠如していることがわかる。極論をいえば音楽とは時間と空間をコントロールする芸術なのだ、と。この本では、まずペンタトニックスケールを元にしたアウトスケールの考え方が示される。軽く読んだときは、ペンタトニックから派生するとはずいぶん単純な解説だと思ったが、CDの模範演奏を聴きながら楽譜を読み、自分で弾いてみるとその奥の深さがわかった。本の中盤でモード的解釈やクロマティック、ディミニッシュ、ホールトーンなどスケールの解説がされるが、おそらく筆者は冒頭の章と最後のまとめの章ですべてを言い尽くしたのではないか。アウトスケールというものは時間の流れとともに組み立てられるもので、そこには既存の網羅的に解説されたスケールなどというものは後付けの解釈にすらならず、アウトスケールに対しては全く無意味なものであると。この本からアウトスケールの真実を知ると、たとえばコード進行がなになにのときはこれこれスケールと使うといったような理論は、ギターソロの分野においては、あたかもピアノのバイエルをなぞっているだけであって、そこからは全くオリジナルな演奏は出てこないことがわかる。アウトスケールは時間と空間をコントロールする場において、いかに自分らしい流れの音空間を作るかであって、そこに全く理論は関係ない。音楽は永遠に未開の地であり、無限の可能性があり、すべてのプレイヤーが自分だけのアウトスケールを作り出す可能性があるのだ。この本は俺の目から鱗を落としてくれた。時間と空間をコントロールする芸術。音楽の世界もいつかはアインシュタインのような偉人が出現し、E=MC2のような理論式を見つけ出してしまうかもしれない。なれば、もはや秘密は失われ、音楽は真に芸術の地位から脱落してしまうのだろう。それまでには、まだまだ、やれることがある。パブリックプレビュー版が登場」がある。Mobile」のパブリックプレビュー版が公開され、無料で使うことができることを紹介している。Vitaで動かすこと、横スクロール型の簡単なゲームを作ることをやっている。UnityはC#、JavaScript、Booによる開発に対応しており、この記事ではC#を使ったスクリプトが参考として示されている。連載ハードウエア入門塾「ラスベリーパイで遊ぼう」は注目の記事で、今回と次回の2回に分けて「携帯ゲームを作る」というテーマになっている。ここでいう携帯ゲームは、ラズベリーパイをPCやディスプレイから切り離し、操作スイッチを付け、モバイルバッテリーで駆動しドットマトリックスLEDで画面表示をするというもので、いわばゲームウォッチのようなマシンに仕上げるというものだ。ドットマトリックスLEDは5×7ドットのものでしかないので凝った表示はできないだろうが、LEDを使う手法がわかれば応用は簡単だろう。開発手法としてPCからネットワーク経由でSSH接続することにしており、ネットワークの設定やSSHクライアントとの通信方法などが説明されている。リモート接続の場合はLeafpadが使えないので、ラズベリーパイ内臓のnanoテキストエディタを使う方法が示されている。テストプログラムは日本最初のテレビ放送実験で使われた、カタカナの「イ」の字を表示するものだ。著者のセンスがうかがえる。キーワードで学ぶプログラミング上達法30」だが、ノウハウ記事として書かれたものだと思うが読み物としてさらっと読んでも面白い。わかっていることでも巧い例えで説明されると「なるほど」と膝を打つだろう。「非同期処理とは、ある処理の実行中に別の処理を止めないという意味です。」という説明などは「うまいな」と思う。インストールから『インメモリー』高速化まで」もいい記事だ。Serverのエディションの違いなど基本的なことを説明している。Serverの起動や設定方法、テーブルの作成などが示されている。Serverのバージョン違いや更新プログラムによってインストールがうまくいかない場合の対処方法などが説明されているのでたいへん役に立つ。Evaluationエディションをインストールし、テスト用のテーブルとストアドプロシージャを作成する。テーブルは「メモリー最適化」テーブルとし、ストアドプロシージャは「ネイティブコンパイル」する。大量のデータを追加するストアドプロシージャを実行して処理時間を比較している。通常のテーブルに通常のストアドプロシージャを実行する場合に比べ、メモリー最適化テーブルにネイティブコンパイルしたストアドプロシージャを実行すると40倍以上の実行速度向上がみられることがレポートされている。「遅延持続性トランザクション」と「インメモリーOLTP」の使い方や処理速度の比較も説明されている。『Sphero』プログラミング入門」は米コロラド州のOrbotix社が2013年に発売したボール型ロボット「Sphero」のプログラミングにについての記事だ。Spheroはボール型のロボットで、スマートフォンからBluetoothで接続しコントロールするようにデザインされている。MotionのジェスチャーでSpheroをコントロールする方法が説明されている。SpheroはAmazonなどで1万4千円程度で購入できるそうであり、ロボット実習のエントリーモデルとしてたいへん興味深い。6ページという短い記事だが、言語を作るということが体験できる貴重な記事だ。筆者はこのレポートの末尾に「『言語処理系を使える』ということと『言語処理系を作れる』ということには大きな隔たり、大きな飛躍があります。この記事で、言語処理系を作る面白さ、難しさ、困難を乗り越えた時の達成感の一部でも、お伝えできていれば望外の喜びです。今後も類似の記事が掲載されることを期待している。API活用入門」は連載第2回目。今回は「分類やキーワードで検索し、Googleマップ上に施設を表示」するプログラミングだ。サンプルコードは地図上の半径1キロメートル内の銀行の位置を示すプログラミングを示している。応用次第で様々な活用場面が広がりそうだ。Java入門教室」が始まった。初心者向けに丁寧に解説されているので、Javaをこれから始めようと思う人にはうってつけの記事だ。「HTML5でゲームを作ろう」は連載第8回。今回は「箱入り娘パズルを作る」がテーマだ。付録の冊子は「Javaやりたいこと逆引き事典」だ。Morpheus」には大きな関心を持った。Conference、通称GDCのレポートだ。2が正式に発表された。Morpheusを発表し、デモを行った。この記事ではGDCで展示された実機やデモを体験している写真も交えて、わかりやすくこれらを紹介している。ヘッドマウントディスプレイは考え方としては昔からあるが、なかなか実現だれなかったデバイスだが、これらの発表により開発が加速化するかもしれない。Script徹底攻略」でPart1から4に分かれて36ページの紙面が割かれている。Part1は「HTML5時代のJavaScript入門」で初心者にわかりやすくJavaScriptを説明している。この説明の中で「JavaScriptの関数は、クラスとして利用することもできます」、「正確にはJavaScriptにはクラスという概念はありませんが、クラスを想定することでJavaScriptのオブジェクト指向を理解しやすくなります」という記述がある。これにははっとさせられた。今までオブジェクト指向を何か特別な考え方と思い込み、なかなか理解することが難しかったという経験があるが、よく考えれば関数であるかオブジェクトであるかはその分類に意味があるわけではなく、要は機能の説明として「関数」や「オブジェクト」という言葉を使っているのだ、と気づかされた。多くのサンプルスクリプトで説明がされているが、たいへんわかりやすく面白い。Part2は「おすすめJavaScriptライブラリ」で、資料的な意味がある。OS』とHTML5によるハードウエア操作」も面白い。すべてのアプリをHTML5で記述することができる仕組みと、それがなぜ注目されているのかがよくわかる。Part4は「HTML5セキュリティ入門」で、実際に開発する場合には必要な知識がまとめられている。今月から新連載がはじまった「実践!最新Androidプログラミング」も注目だ。いままで興味はあっても手を出せなかったAndroidアプリのプログラミングが、毎月少しずつ連載で学ぶことができる。プログラミングは書籍やWebを参考にして勉強することもできるが、雑誌の連載はタイムリーに最新の環境で、かつ実践的に学ぶことができる。変化の激しいこの時代に書籍の情報は最新でない場合が多く、Webの情報は部分的でまとまっていないことが多い。雑誌の連載は、最新情報を体系的に学ぶ最適の方法だと思う。MVPの薬師寺国安さんが執筆されている。薬師寺さんには多くの著書があるが、どれも実践的でわかりやすく、初心者が段階的に学べるように丁寧に書かれており、この連載も大いに注目したい。今回は第1回で、「Googleマップを埋め込んでマーカー表示させる」が取り上げられている。ラズベリーパイで遊ぼう」だ。今回は連載第3回、「カメラとレーザーを使った監視装置を作る」だ。Technologies社のCMOSイメージセンサーOV5647を使い、レーザーは赤色レーザー発光モジュールLM-101-A2、光センサーとしてフォトトランジスタNJL7502Lを使っている。プログラミングの便利帳10冊」で、CDに過去の特別付録から9つの冊子をPDFにしたものと新規書き下ろしの1冊の10冊が収められている。読むプログラミング用語辞典」だ。CDはプラケースに入っていて、このまま本棚に立てておけるから便利だ。実技優先C言語入門」は28ページの特集で、前半が「ソフトエア開発の概要」、「開発ツールの準備」、「コマンドプロンプトを使いこなす」、「本、ソフト、ヘルプ、検索で情報収集」となっており、プログラミングのガイダンス的な内容だ。ここにはある程度プログラミングができる人にも参考になることがたくさん書かれている。実際にプログラミングを始める前に、何を作るか、どう作るかなどの考え方や、ある程度できるようになった次に壁にぶつかったときのこと、などだ。後半は「『作る』は簡単ではないが楽しい」として、実際にあるプログラムをステップ・バイ・ステップで作っていく。この過程では、仕様の決定からテスト、ユーザーの誤入力対策、テストデータの作り方など、ひとつのプログラムを完成させる過程が丁寧に説明されている。この後半部分は、実際に自分でやりながら読むのが正しいだろう。特集2「今年ブレークする4言語」ではMicrosoftのTypeScript、GoogleのGo言語、そしてScalaとRuby2.1が紹介されている。この記事では、これらの言語の特徴を実際のコードを示しながら解説している。この記事だけでコードを書けるようにはなりそうにないが、各言語の特徴は簡潔にまとめられておりわかりやすい。ここで紹介されている4つの言語では、やはりMicrosoftのTypeScriptとGoogleのGo言語に強く興味を引かれた。「すぐにでも自分でやってみたい」と思わせる秀逸な記事が、特集3の「Unityで弾幕系シューティングゲームを作ろう」だ。4.3」には2Dゲームを作る機能が搭載された。筆者が「3次元への苦手意識からUnityに手を出さなかった人も多いでしょう」「2次元のゲームであればハードルは一気に下がります」と言うように確かに3Dゲームを作るには、たとえ開発ツールがどんなに優秀でも難しいだろうが2次元なら何かしらのゲームは作れそうな気がする。記事では「スプライト」や「コライダー2D」といったゲーム製作上の概念を説明し、実際にシューティングゲームを作る過程が説明される。これを読んでいて、シューティングゲームを作るのもいいが、パズルゲームを作るのも面白そうだと思わせられた。Chromecastでアプリとテレビを連携」も面白かった。パソコンやゲームマシンがテレビの機能を取り込み、テレビはそれを迎え撃つ、スマホとタブレットが参戦を挑む、といった映像メディアをめぐるデバイス戦争ともいうべき状況が生まれているが、そこでGoogleが発表したドングル型のデバイスChromecastだ。これがどのような仕組みで機能し、アプリ製作者としてはどのような可能性があるかが示されている。ラズベリーパーで遊ぼう」だ。この第二回では「スイッチを接続してWebアプリと連動させる」が課題で、ラズベリーパイにスイッチをつけて入力とし、ラズベリーパイにWebサービスを動かしてスイッチの押された回数をWebでネットワークから参照する、といういきなり実用的なものとなった。この回を読めば、温度センサや距離センサなど様々なセンサをラズベリーパイにとりつけ、取得値をWebサービスで公開するという応用ができるだろう。この連載はたいへん興味深い。