プロトタイピングツールとしてのLL
佐藤 伸吾
株式会社ケイビーエムジェイ
2008/10/24
「あんなことができたらいいな」と思ったら、とにかくコーディング。軽量プログラミング言語をプロトタイピングツールとして使ってみよう(編集部)
私はプライベートにおいてHacker's Cafeというグループに参加しています。所属組織の枠を超えた緩いつながりの気楽な集まりです。主に土日などの休みを使ってメンバーが集まり、各自好きなコーディングなどを楽しんでいます。
この記事ではHacker's Cafeの活動から生まれたさまざまな成果物の紹介、およびその迅速な開発を可能にした軽量プログラミング言語(LL)のメリットについて解説します。
関連記事: | |
Praggerとnetpbmで作る画像→AA変換ツール http://www.atmarkit.co.jp/fcoding/articles/asciiart/asciiarta.html |
プロトタイピングツールとしてのLL
PCからのハードウェア制御はそれなりの専門知識がないと気軽には試せない分野でした。しかし、現在ではGainerというI/Oモジュールを用いることによって、ハードウェアを制御するソフトウェアを比較的簡単に記述できるようになっています。
また、画像処理や画像認識などのコアな分野においても、OpenCVやARToolkitなどのような非常に高機能かつ便利なライブラリが使用可能です。
これらの構成要素を手軽に組み合わせ、思い付いたアイデアの実装および評価を気軽かつ迅速に行うためのツールとしてLLは非常に魅力的です。以下にLLを用いた作例をいくつか紹介していきます。
RailsからチョロQを操縦する
2008年2月ごろ、『+GAINER-PHYSICAL COMPUTING WITH GAINER』という書籍に「GainerでチョロQを動かそう」という解説記事を見つけ、非常に興味を引かれました。操縦信号の伝達にHTTPを使えば遠隔地からチョロQを走らせることもできそうだったので、プロトタイプの作成を試みました。
図1 チョロQシステム概略図(筆者資料より) |
ソフトウェア的にはさほど難しい部分はなく、どちらかというとハードウェア的な部分で苦戦しました。特に赤外線リモコンをばらしてミニリレーを取り付ける作業です。いままでハンダ付けを一度も行ったことがなかったので、配線には非常に苦戦しました。しかしGainerを用いることによってハードウェア制御のソフトウェアをRubyで簡単に記述できました。
「電脳メガネのようなもの」を自作する
電脳メガネとは、「電脳コイル」というアニメ作品の世界に出てくるメガネ型のコンピュータのことです。以下、Wikipediaから一部引用します。
「電脳」と呼ばれる技術が一般に普及している近未来。電脳世界の情報は「電脳メガネ」によって現実世界に重ねて表示され、手で触れて操作できるようになっている。「電脳」は日常生活に溶け込み、子供でも当たり前に扱えるが、それ以外の部分は現在と大差ない。 電脳コイル−Wikipedia |
私の目にはとても魅力的な世界に映りました。
「電脳メガネの存在するデジタルライフスタイルをいますぐ体験したい」
この電脳メガネのようなものを現在の技術を使って個人レベルで自作できないだろうか。まずはシステム全体をイメージし、詳細部分の実装を具体的に考えていきました。
図2 電脳メガネシステム概略図(筆者資料より) |
ここで問題となったのが視界状況の検出です。画像認識で状況を検出するには相当量のコードを書かなければならないでしょうし、強力なCPUパワーも必要そうです。
「もっとシンプルな解決策はないものだろうか」
例えば、使用者の首の向きや方角を検出できれば、視界方向に関連している情報をリアルタイムに表示できるのでは。電子工作はまったく経験のない私でしたが、ネット上で検索したところ、どうやら地磁気センサーという電子部品で方角を検出できるらしいということが分かりました。
電脳メガネを装着した様子 |
秋葉原の秋月電子という電子部品専門店で地磁気センサーを6000円程度で購入できることも分かりました。部品のめどがつけば、あとはそれらを接続してソフトウェアを書くだけです。私は「電脳メガネのようなもの」の制作を開始しました。
ここでプロトタイプ作成に使ったのがRubyCocoaです。RubyCocoaを用いると、RubyからMac OS XのリッチなグラフィックAPIであるCoreAnimationを操作できます。
MacネイティブアプリのプログラミングにはObjective-Cを用いるのが一般的ですが、やはり使い慣れているプログラミング言語でコーディングできるのはありがたいですし、RubyにはRubyGemsという形式で豊富なライブラリも用意されています。例えば、AmazonのWebサービスなども気軽に試せます。
最初にRubyCocoaで情報表示のプロトタイプを作ったので、その後のObjective-CとCocoaフレームワークによる作り込みもスムーズに行うことができ、短期間でそこそこのシステムに仕上げられました。
電脳メガネの動作画面 |
関連記事: | |
Cocoaの素、Objective-Cを知ろう http://www.atmarkit.co.jp/fcoding/index/objc.html |
1/2 |
Index | |
思いついた未来を軽量言語で実装してみよう | |
Page1 プロトタイピングツールとしてのLL RailsからチョロQを操縦する 「電脳メガネのようなもの」を自作する |
|
Page2 電脳スターラリー 自走式Webサーバ 未来のコンピューティング |
Coding Edgeフォーラム トップページ |
Ruby/Rails関連記事 |
プログラミングは人生だ まつもと ゆきひろのコーディング天国 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる |
|
生産性を向上させるRuby向け統合開発環境カタログ Ruby on Rails 2.0も強力サポート 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる |
|
かんたんAjax開発をするためのRailsの基礎知識 Ruby on RailsのRJSでかんたんAjax開発(前編) 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう |
|
Praggerとnetpbmで作る画像→AA変換ツール Rubyを使って何か面白いものを作ってみよう! 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう |
|
コードリーディングを始めよう Railsコードリーディング〜scaffoldのその先へ〜(1) 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|