日曜日, 12月 28, 2008

パペットマペットと河崎実

昨日は、パペットマペットのライブに行ってきました。
久々に見たけど面白い。1時間半ずっと笑いっぱなし。
前のほうの席だったってのもあるけど、テレビで見るより面白いなあ。他の芸人もライブで見た方が面白いんだろうな。
新喜劇みたいに舞台をそのままテレビで流す番組がもっと増えて欲しいです。

途中トークの時間があって、映画監督の河崎実さんが登場。監督の名前は知らなかったけど「いかレスラー」「かにゴールキーパー」「日本以外全部沈没」と撮った映画は知っていました。
19歳のときに豆腐が巨大化する映画を撮ったのが映画監督になったきっかけ。現実と虚構がごちゃまぜになっているのが好きらしく、このあたり昨今の拡張現実の流行とリンクしているような気がする。
トークの最中に、プロットの構想をスラスラ語り出す(しかも面白い!)あたり、年がら年中映画のことを考えているんだろうなあ。

パペマペの背後霊は交換可能なので100年後も続けられるという話題も出て来て、なかなか知的なトークでした。トークの最中も笑いっぱなしだったけど。

金曜日, 12月 26, 2008

PyCon2008 OLPC Tutorial 超要約 その4

その3からだいぶあいたけど、とりあえずメモ訳のまとめ。
未来の自分と、これからこのTutorialをやろうとする人のための参考として。

注意点
reStructuredTextでまとめたものをHTMLに変換したので、変なHTMLソースになってます。
また実際には、複数日かけてやってるので、口調や編集の仕方が変化している上に、最後の方は結構適当です。

ではスタート。


Auto-generate a Skeletal Wrapper (Step 002)


Sugarアクティビティには、作るのがちょっとだけ苦痛な"boilerplateコード"が結構あります。さっき(その3で)落としたOLPCGamesには、新しいActvityの構成を作ってくれる、スケルトン生成スクリプトが入っています。
使い方はこんな感じです。実行してみてね。



cd OLPCGames-1.6/skeleton/
./buildskel.py -n HelloPygame -t "Hello Pygame" -s org.laptop.community.HelloPygame

buildskel.pyのオプション:


-n NAME, --name=NAME
分かりやすく簡潔な名前 (ファイル名に使われる)

-t TITLE, --title=TITLE
分かりやすく、人間が読むための名前
(ウィンドウやアイコンのタイトルに使われる)

-m MAINLOOP, --mainloop=MAINLOOP
メインモジュールと関数名。package.module 見たいな感じで。

-s SERVICE, --service=SERVICE
DBUSのサービス名。提供されないなら接頭辞の名前(?)

今回使わないのは、-mだけ。今回はデフォルトである、run.pyのmain関数を使います。
それと、-sはD-BUSで使われるので一意になるように名前付けをしてね。



boilerplateコード

面倒で苦痛で決まりきった書き方の繰り返しみたいな意味。
特に関数化やモジュール化も出来ないものを言う気がする。
Sugar-Activityの場合、フォルダ構造とかMANIFESTファイルとかがそれにあたる。


新しいActivityの登録


ActivityをSugarで使うには登録しないと駄目です。じゃないとSugarのランチャーに出てきません。
まず、sugar-shellを起動します。sugar-jhbuildの場合は"sugar-jhbuild shell"をbuntuのパッケージでSugarを入れてるならsugar-shellコマンドを実行します。
次に、あなたがOLPCGames-1.*/skeletonディレクトリにいるとして次の順に実行します。
(注:HelloPygame.activityディレクトリはさっきbuildskel.pyで作られているはずです)



cd HelloPygame.activity
python setup.py dev

そして、今後楽をするため、シンボリックリンクを張ります。



cd ../../../
ln -s OLPCGames-1.*/skeleton/HelloPygame.activity .

そしてsugar-emulatorを実行してHelloPygameっていうActivityが登録されていたらOKです。
うまく行かなかったらlogを見てね。


ラッパーを見てみよう


好きなIDEで自動生成されたファイルを見てください。
OLPCGamesはGTK Socket (X-Embed) プロトコルを通して、GTKアプリケーションのウィンドウの中にPygame(SDL)を埋め込むための、薄いラッパーです。
これからどんどんカスタマイズしていきます。
さて、何が作られたでしょうか。


メタデータ


HelloPygame.activityディレクトリの下のactivityディレクトリにあるもの



activity.info

何を動かすかとか、アイコンデータの指定とか
http://wiki.laptop.org/go/Activity_Bundles#.info_File_Format

activity.svg

アイコンデータ
http://wiki.laptop.org/go/Sugar_Icon_Format


GTK Wrapper(activity.py)


概要



  • クラス定義

    • PygameActivityを継承

  • GTKイベントの割り込みや生成

  • Sugar用ツールバーの追加

  • Pygameウィンドウのサイズの宣言

  • 名前、タイトルの宣言

  • メインループ関数の宣言

  • 別のPygameスレッドを作ること


Pygameメインループ詳細



  • import

    • pygame : 描画、メインループ、そしてそれら素晴らしいモノ全て

    • olpcgames.pausescreen : sleep状態に素早く移行するためのイベントを発生させる

    • logging : 標準モジュールのログです。使い方を知っている必要があります

    • olpcgames : イベントの定数にアクセスするために



  • loggingセットアップ

  • main関数

    • 画面の準備をする

    • フレームの限界値を設定(25か50がいい)

    • ダブルバッファリング

    • イベント開始

      • 非アクティブ時は画面描画を止める

      • そうでないならイベントを発生させる






サポートメカニズム


setup.py
パッケージング用のスクリプト。stuptoolsではないので注意。
MANIFEST.in, POTFILES.in
setup.pyに食べさせる。

step003


Activityを走らせることは出来たけど、微妙な状態ですね。
というわけで、"Hello World"的なものを加えてみます。
これにはOLPCGamesのTextClassを使う。これはPangoテキストレンダリングエンジンのラッパーです。
Pygameのスプライトクラスは、多くのラスタ画像を表示するのに非常に効率的なメカニズムになってます。
Pygameの大概のことは、スプライト関連のクラスを使うとうまくいきます。
「Hello world」がスプライトエンジンを激しく使わない内に、関連操作に慣れるために使っていきます。



  • Sprite と Sprite-Groups

    • Sprites: imageと長方形の枠(Rect)

      • Rects in Pygame

      • Group タイプとなぜRenderUpdates()するか

      • Group 追加/除去 操作





  • TextSpriteを使ったテキストレンダリング

    • PangoFont クラス

    • Fontの仕様

    • Fontレンダリング結果、画像とRect

    • 文字列の翻訳のためにgettextをつかえ



  • layout関数とRect

    • Rectの仮想プロパティとそれらへの課題



O'Reilly Japan Ebook Store開店

O'Reilly Japan Ebook Storeが開店したそうです。
書籍版よりちょっぴり安いみたい。我が家の場合、本棚を圧迫しないというメリットの方がでかいですな。

リファレンスやクックブックは検索しやすいから電子のメリットは高いはず。逆に読み物系はメリットは高くないかな。むしろ自由に持ち歩けないデメリットの方がでかいように思う。
オライリーのサイトではiPhone(iPod touch)で表示している画像が出ているけど、じっくり読むには辛そう。

それと、買ったEbookを間違って消しちゃったらアウトなのか、それとも一度買ったら何度でも落とせるのかが分からないけど、何となく消したらアウトっぽい。テキストコピーは不可みたいだけど、ファイルコピーはどうなんだろう。質問しようかな。

一月末までにEbookを買った人の中から抽選でオライリーロゴ入りフリースジャケット(限定版)が当たるらしいけど、さてどうしようか。

Safariで日本語書籍が読めれば、それが一番いいんだけど。

日曜日, 12月 21, 2008

Sugarでアニメーション

Pygameだけで画面を作れとの教え通りにしたら、Sugar上で簡単なアニメーションをさせることも楽に出来ました。
見栄えがGtkと離れるから気持ち悪いけど、Gtkと組み合わせるのは将来の課題にしよう。

次に知りたい情報は次の2つ
・XO(Sugar?)のストレージの扱い方
・カメラの使い方

ストレージの方はPyCon2008のOLPC Tutorial資料にあるみたい。このチュートリアルは夏ぐらいに序盤だけをやって、放置していたので、今年中に全部やってみよう。

金曜日, 12月 19, 2008

かわいいプロジェクター

小型プロジェクターは流行ってるみたいですね。
こういうかわいいのもでるみたい。

映像作品をクリアに見せるにはパワー不足だろうけど、逆に見えるか見えないかのレベルで映す前提であればこういうので良いのかも。
小型な分、設置の自由度も高いから、展示の仕方も工夫できるはず。

水曜日, 12月 17, 2008

Gtk with Pygameを調査してみた

思い出したかのようにXOとかSugarで遊んでいますが、Gtkの中にPygameの画面を出したいなあと考えて調べてみた。
割とメジャーな要望らしく、いろいろ解決策を発見。でもサンプルコードが動かない。
要するにDrawingAreaを用意して、それをPygame用とすれば良いらしいのだけど。

時間があれば、自力でなんとかなりそうだけど、Pygame本家でGUIs with pygameという文書を発見。

要約すると「GtkとかQtとかWxの中にPygame入れようなんて思うな。時間の無駄だ」だそうで。
言ってることは分からなくもないけど。
代替として、Pygame(Sprite)で実装したGUIライブラリ(というよりウィジェットといった方が正確?)を提示してるけど、それもどうだろう。

金曜日, 12月 12, 2008

275ポンドで買えるもの

今、1ポンドは135円くらいみたいです。
137.5ポンドだと18,500円くらいですね。
DSiは18,900円なので、まあだいたい同じくらいですかね。

なんとですね、DSiと同じ値段でパソコンを買えるらしいのですよ。茄子さん。
ただ、セット販売で2台ずつしか買えないんですよ。
でも4万円せずに、2台も買えるってすごいよね。輸送費を考えても十分安いよね。
2台もいらないから、1台は寄付してもいいよね。

日曜日, 12月 07, 2008

Python3000とバックスペースキー

昨日、Python3000のインタラクティブシェルでバックスペースが効かないという話を聞いたけど、そんなことないよなーと思いつつ確信がなかったので特に「そーなんだー」と流していた。

今、Ubuntu8.10上のGnomeコンソールで確認したところ、ASCII DELなら普通にバックスペースが効く。Contorol-Hは駄目。
ビルド&インストール時、configureはprefix以外何もつけておらず、makeも特別な事はしていない。

Vistaではコマンドプロンプトも、Power Shellも両方OK。
そして、終了のショートカットがControl-Dではなく、Control-Zに変更されていることに気付く。ちゃんとドキュメント読めよという話ですが。

Macは確認がめんどいので、後回しにしよう。

Python with Hardwareの飲み会に行ってきた

昨日はPython with HardwareとHacker's Cafeのみなさんと合同での飲み会でした。

記憶とデジカメの記録による見たもの聞いたものリスト(順不同)
・(今ある技術で出来る範囲の、それでも十分凄い)電脳メガネ
・Ouch!さんの野望(MES)
・測距センサーによるコントローラ
・電脳スターラリーのプレゼン
・位置エネルギーを使った歩行模型(脱力を利用することを考慮に入れている?)
・a2cさんのプロダクションで使われているものの説明
・未来予測 電脳メガネを実現するには
・iPhoneと網膜センサーと筋肉とチームワークによるインタラクションシステム
(他にもいろいろあった気がする)

金額的にも技術的にも敷居が下がることで、個人レベルで出来ることが拡大していることを実感できる3時間でした。
昨日の飲み会の延長線上に、1000TB以上のストレージが普通な世界があるんだろうなと。
そのなかでa2cさんの、プロダクションレベルで求められるクオリティは高いという指摘には、考えさせられるところがあります。凄い技術が個人レベルであたりまえになったとき、その上のレベルはどうあるか、何が個人レベルと違うのかという事は、もっと意識する必要があるし、それがMake的、DIY的世界にも反響するだろうなと。昨日の今日で、あまりまとまってないけど。

Ouch!さんの野望を聞いていて「ものづくり革命 パーソナル・ファブリケーションの夜明け 」を紹介したいなあと思ったけど、昨日言う機会がなかったので、ここに書いときます。もう読んでるかもしれないけど。技術的内容ではなく、リーズナブルな技術は社会、世界をどのように変えていけるかという事が語られています。もちろんOuch!さん以外にもおすすめです。

メディアアーティストとかにも絡んでいろいろ考えたけど、寝て起きたら飛んでしまった。
そのうち思い出すかな。

幹事のOuch!さんありがとうございました。
それとあれだけ変な事をやっても、何も言わないお店にも感謝です。

木曜日, 12月 04, 2008

Python3000出たよ

とりあえず確認。

Python2.6の場合

>>> class Hoge:
... pass
...
>>> Hoge.__base__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class Hoge has no attribute '__base__'
>>>


Python3.0の場合

>>> class Hoge:
... pass
...
>>> Hoge.__base__
<class 'object'>
>>>

火曜日, 12月 02, 2008

Ajaxについて(概要)

Ajaxとはなにかと聞かれましたが、こういう風に略字を展開すると意味が分かるはず

Asynchronous(非同期) + javascript and XMLHttpRequest(or XML)

要するに「javascriptを使ってXMLを非同期に通信する」というのが、ざっくりした説明です。
最近はXML以外のものも使われるけど、XMLはそれほど重要じゃなくて、大事なのは非同期ってとこです。
目立つ効果としては、ページ遷移が発生しない。なのでユーザのストレスを軽減出来ると言われてます。
とはいえ、結局通信はしているので、重いときには通信が成功したかどうか分かりにくいとも言えます(作り方次第だけどね)。

システム的な利点としては、必要なデータだけを取りにいくので、一回の通信でやりとりするデータ量を抑えられるというのが一番なのかな?HTMLだと直接必要無いタグもやりとりすることになるけど、Ajaxだとデータ構造として最低限のXMLでやりとり出来るので。
ただ、これも作り方とコンテンツ次第だけど、ひっきりなしにリクエストが来ちゃうと結局サーバ負荷が高くなる可能性もあったり。

あくまで通信方法でしかないので、コンテンツ保護とはまったく別の話です。ユーザーインタフェース的な話でしかないです。

Internet Exploer限定とかならコンテンツ保護ソリューションてのは各社から出てるけど、そんなものを使うくらいなら公開しない方がマシ。いまさらっと調べたけどVista対応しているのは少ないみたいだし、これでIE8、Windows7が出てきたら、どこまで対応してくれるか分からない。
最終的に画面をカメラで取られたらアウトなんだしね。

あと、さっき言った新しいマルチメディア用マークアップ言語ってのはこれの事です。日本語記事は適当に検索してね。
SMIL 3.0