日曜日, 1月 11, 2009

OLPC体制変化

昨今の経済情勢のせいか、OLPCプロジェクトは解雇&減給で体制を縮小するそうです。
Sugarの開発はコミュニティベースに移行なので、開発速度の低下は否めないかと。

ただ、メーリングリストでは今のところ混乱は無いようで、「XO Camp楽しいよね」という話題がほとんどです。

Sugarを作っているのでなく、Sugarで遊んでいる私も残念という気持ちはあるけど、潰れなくて良かったという気持ちの方が大きいかも。
コミュニティベースに移行することで、XO以外のハードでもきちんと動くようになる方向に進むといいなあ。
自分でも何か貢献はしたい。Sugarで遊ぶことが何らかの貢献につながりますように。

木曜日, 1月 08, 2009

Pygameでボタンスイッチを作る方法

現状のメモ。

spriteでボタンを作って、それを押したら「何か」が実行されるというのが作りたかったのです。
で、Pygameのドキュメントを眺めてみた。spriteオブジェクトに、自分が押されたかどうか知る仕組みがあることを期待したけど、見つけられず。

なので、
  1. マウスの座標にぴったりくっつくsprite(=cursor)を用意
  2. クリックイベントが発生したらcursorとボタンのスプライトが衝突しているか判定
  3. 衝突していたら「何か」を実行!

という、原始的な方法をとってみた。
ボタンが少なければこれでいいけど、増えてきたら大変になることは確実。
イベントリスナ的仕掛けがあっても良さそうなんだけど(自分で作れってこと?)。
もう少しドキュメントを読まないと。

日曜日, 1月 04, 2009

お正月を過ぎて

情報化社会 in 田舎


お正月は実家に帰って、餅を食べたり、冷麺を作ったり、温泉に入ったり、ご馳走を食べたりとなかなか忙しくすごしました。
ネットに接続出来るのが、実家しかない(探せば公衆無線LANはあったかも)うえ、Willcomも実家以外ではなかなか電波を掴んでくれず、ほぼオフライン状態。
こういう非接続状態になると、コンピュータやネットが全然当たり前じゃない、デジタルネイティブなにそれおいしいの?、という気分になれるので自分にとっては結構重要です。

とはいえ、携帯電話は普通に繋がるので、思ったより情報格差ってのは無いのかも。定額性電話も兼ねる町内有線放送網があったりして、ある意味東京より情報化が進んでいる面もあるかも。

お正月で見た風景からの2009年の予測


2009年を予測せよと言われたので、お正月で見た風景と年末年始に考えていたことを元に予測してみる。

1. Webブラウザベースではないネットワークアプリケーションの増加


Webブラウザで動くアプリではなく、専用クライアントを使用するネットワークアプリケーションが増えるんじゃないかなと予測。
もう少し言うと、Webブラウザでも使えるけど、専用クライアントからの方が便利というソフトが増える、あるいは目立つようになるかと。
既に、2chブラウザとかTwitterクライアントとかGoogle Talkみたいなのはある訳ですが、そういうのが目立つようになるんじゃないかなあ。今、個人でWebアプリを作るのが流行っている(?)けど、わざわざWebアプリにする意義を感じられないものが多いように思えるのですよ。HTTP通信して、適当に出力する程度なら何もWebアプリにする必然性は無いわけで。
コアとなる処理の部分と、公開部分の切り分けという観点から、専用クライアント化は進むんじゃないかな。
後で、もう少しまとめるかも。

2. 全画面表示を前提としたユーザインターフェースデザインが重要になる


これは予測というより、今一番興味を持っていることかも。
ディスプレイの大型化と共に、パソコンのユーザーインタフェースというのは画面に複数の窓を出す方向に進化してきたけど、これからは一つの窓だけがディスプレイに出る = 全画面表示のユーザーインターフェースデザインも並行して研究されるんじゃないかな。
携帯の画面デザインは既に全画面を前提としているので、まったく新しい出来事ではないんだけど、iPhoneやスマートフォン、Netbookといった、従来のケータイよりパワフルだけど画面が小さいデバイスが増えていくと、それに合わせてデザインがされるんではないだろうかという予想です。
ついでに言うと、DSiやSugarのインターフェースも全画面表示ですね。


書いては見たけど、えらい地味な予測かも。あと気になるのはやっぱり地味だけどメッシュネットワーキングかなあ。ちゃんと調べてないから既に旬は過ぎているかもしれないし、特に書けるような事も無いです。

日曜日, 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資料にあるみたい。このチュートリアルは夏ぐらいに序盤だけをやって、放置していたので、今年中に全部やってみよう。