「出張 Shibuya.js 24」に行ってきました
9/15(土)に開催された mozilla 24 の 出張 Shibuya.js 24 を見に行ってきました。
twitter のオフ会かと思われるほど twitter やってる人の参加率が高かったと思われるイベントでしたが、僕は残念ながら誰が誰だか分かりませんでした。mozilla 24 の 1 コーナーという位置づけからか、18:30 開始だったので、余裕を持って向かえたのがよかったです。
以下、簡単な感想(敬称略)。資料は Shibuya.js のサイト で見れます。
メーントーク
INSIDE Gecko by gyuque
Firefox 等のレンダリングエンジン Gecko の話。内部的にどのような処理をしているかとか表示される順番とか、興味深かった。Firefox のソースコードをダウンロードした人やコンパイルしたことのある人が結構多かったのが印象的でした。
AutoPagerize by swdyh
便利すぎるというかずっと使っていると存在を忘れてしまうくらい使いやすい AutoPagerize の人の話。swdyh さんだが、頭の中で勝手に「スウェディシュ」と呼んでしまっていたのと撮影している写真の印象から、北欧系の涼しいイメージを持っていたが、実際はアルファベットをそのまま読むらしい。
発表は AutoPagerize の技術的な説明だけでなく、プログラム + wiki の可能性というおもしろいテーマだった。専用の wiki を作りたいとのことだったので、是非期待したいところです。
AutoPagerize は、便利に使わせてもらっていますが、wiki に接続するついでに最新のバージョンかどうか確認して、アップデートされたら、インストールを促してくれるとさらにいいなと思っています。
新世代ブラウザのクロス開発まとめ by id:amachang
時間がなかったので、飛ばし飛ばしだったらしいが、あまりマニアックなメソッドを使ったことがないので、初めて聞く話ばかりでした。目立ったメソッドごとに、Firefox、Opera、Safari、IE 間で比較しているので、時折見直させてもらうと良さそうなスライドでした。それから Safari 3 は 2 と別ブラウザでおすすめらしい。
JS の JS による JS のためのマルチスレッド by D.Maki
JavaScript でマルチスレッドを実現するために、JavaScript のソースコードからソースコードを生成するライブラリの話。すごい。
よく分からなかった単語のメモ
- けいぞく
- トランポリンスタイル
ライトニングトーク
ECMA Script4 リファレンス実装 by Yu Kobayashi
企業のからみとかでなかなかまとまっていないらしい。
5 分で分かる Photoshop の正しい使い方 by cho 45
$X の人。シェルからコマンドで Photoshop を操作していました。技術的な説明のところで終わってしまい、後から資料を見てみましたが、ちょっとよく分からなかった。
jQuery つまみぐい by send
JavaScript ライブラリの jQuery の話。使ってみたい。
SHA-1 の高速化 tips by へるみ
JavaScript を高速化されるための心構えと方法の話。マニアック編では、IE に比べて Firefox の整数の扱いにネックがありそうということで調べたら、32 bit の整数を扱う時の malloc に時間がかかるので 32 bit を扱わないようにする、と言っていました。おもしろかった。
facebook.js by kawa.net
facebook ではユーザがアプリケーションを作って公開できるが、対応させるのはまだまだ難しいという話。facebook でそういうことができるとは知りませんでした。
JavaScript.GIF by id:TAKESAKO
ミサイルランチャーは在庫処分で 980 円らしい。想像以上に安くてびっくりしました。
追記
del.icio.us のブックマークの方に id:swdyh さんから直接コメントを頂きました。
「北欧系、スウェディシュ」。更新通知はGM自体かそれ用拡張がやったほう が良いと思う。
ごもっともですね。GM の更新通知という共通の機能を個別に実装するのは確かにばかばかしい話で、一時的に実装したとしても、最終的には専用のなにかとして抽出するのがきれいな形ですね。
LL魂に行ってきました
8/4(土)に開催されたLight Weight Language 魂に行ってきました。タイムテーブルを見れば分かりますが、各言語の最新情報、言語の作り方、VM 上の LL、といった感じにテーマがはっきりしていたので、分かりやすかった。
会場で twitter を見てたら、otsune さんがこんなことを書いていたのですが、その後あんなことになるとは思いませんでした。
公式チャットなのに人があまり居ないな… LL魂チャット (at Lingr) http://www.lingr.com/room/ll-spirit
http://twitter.com/otsune/statuses/185646232
全体的な感想。
- id:amachang のプレゼン資料にびっくりした
- otsune さんが大活躍だった
- xtal の作者がおもしろかった。使いたくなった。
聞き逃しが多々ありますが、以下、簡単なメモと感想です。なお、こちらに詳細なレポートがありました。すごい。
基調講演
ハッカー気質について - 和田栄一さん
ハードウェアのハックということで、古典的なハードウェア(楕円を書けるコンパスなど)の話をしていて、内容はほとんど理解できなかったのですが、ハードウェアといったら、コンピュータのハードウェアしか想像できなかったので、そういえばこういうのすごく楽しそうだよな、と思いました。それから、PostScript の話になったところで、「私はファイル開いて最初にパーセントビックリ(%!)って書きますからね」と言っていたのですが、ビックリっていうのがかわいかった(普通の読み方なのだろうか)。
Language Update
Io、Clean、R、Lua については全くしらなかったので、まとめて聞くことができて有意義でした。特に Lua については、速いということで、この後のプレゼンでも何度も出されていたので、ちょっと気になる言語になりました。
Perl - 小飼 弾さん
Perl 6 ではなく、Perl 5.10 の新機能の紹介でした。今年は5.8.9、5.10、6.0(仕様)が出るそうです。
ブログにスライドが置いてあります。Perl の新機能を見渡せていいです。
http://blog.livedoor.jp/dankogai/archives/50885751.html
Io - 浜地 慎一郎さん
シンプルな言語だそうです。不気味な文法と連発していた。
- Io とは?
- プロトタイプ型
- 何でもオブジェクト
- 文法がシンプル
- キーワードの数が少ない
- 何でもメッセージ
- if も関数
- unless を自分で作れる
- 多重継承や Concurrency を見てみるとおもしろいのではないか
R - 樋口 千洋 さん
- 特徴
- S の無料版ではない
- バージョンアップが頻繁
- ベクトルが基本
- オブジェクト指向
- 組み込みのデータ型が良い(?)
Python - 柴田 淳 さん
- どんな言語?
- オールレンジ言語
- 実務に使える
- クリーンな言語仕様
- インデント
- 一つのことをするのに一つの方法しかない
- 明確なロードマップ
- 国内の話
- 本がたくさん出てきた
- 勉強会、開発合宿も行われている
- 大規模イベントも行った(http://d.hatena.ne.jp/satoship/20070701/1183283041)
おれ様言語の作りかた
最もおもしろいセッションでした。質疑応答では、なでしこに質問が集中し、日本語プログラミングへの注目が分かりました。xtal の作者がおもしろかったのですが、まつもとさんが、「憧れている、Ruby の機能を取り入れてるのだから当たり前だが、Ruby で後付けした機能(eachなど)が組み込まれているのがいい、C++ でかいているのがすごい、将来が楽しみ」と言っていたのが印象的でした。オブジェクト指向言語でオブジェクト指向言語を実装するのは、混乱するので Ruby は C で書いているとのことでした。また、Sukune の元になった Forth という言語も初耳でした。
それから、司会者の質問に答えて、まつもとさんが Ruby の前に作った言語の話をしていた。話によると、Classic という名のオブジェクト指向言語で、語源は C に Class を加えたから、プロファイル機能(private、protect、public のような誰に公開するかを自分で指定できる機能)があったが使い物にならなかったそうです。
VM魂
Javaと.NET上で動く LL のお話。マイクロソフトとサンのいろいろな思惑があるようです。とりあえず、処理系をまとめると次の通り。
- Java 上
- .NET 上
なんで VM 上で LL なのか?という問いに、Java で大規模開発をしている人にも LL を知ってもらいたいとか、Java や .NET ライブラリをちょっと試したい時に便利という答えが多かったが、結局エンタープライズと LL の関係はそういう風で、開発中にしか使われないのかな。
本題ではないが、フィボナッチ数列の可聴化と称し、テクノっぽいシーケンスを鳴らしていた西尾さんのデモがかっこよすぎだった。
キミならどう書く 〜プレゼンソフトを作る〜
それぞれ言語を指定されて、プレゼンソフトを作り、作ったソフトで発表するという企画。冒頭でも書いた通り、id:amachang の資料がすごかった。keynote かと思いました。また、id:amachang のプレゼン中に出てきた GRDDL という仕様を初めてしりました。
それから、Gauche で作成された小黒さんのプレゼンソフトがすごかった。なにがすごいかというと、データを VNC サーバに置いておいて、それにブラウザ上の Flash が接続して表示している。で、データにバグがあったら接続できますと言って、telnet で接続してた。データにバグがあるというのがまず意味不明なのだが、さらに Lingr の投稿をリアルタイムに表示できるということで、実際に表示してみたものの、会場からは接続できなかったので、表示されなかったのですが、突然 otsune さんの書き込みが表示されて大爆笑でした。その後、Lingr と司会者で会話したりしてました。手を挙げて質問しない人も Lingr を使って質問するということはあり得るんだなと思いました。
Lightning Talk
いろいろ
フジロックの雰囲気を味わえる気がするツールを作りました
今週末はフジロックフェスティバル '07があります。僕の周りでも行くという人はちらほらいるのですが、僕は行けなかったので、せめて雰囲気だけでも味わおうとこんなものを作りました。
Fuji Rock Festival in my Room(Firefox でしか動きません)
http://lab.satoship.net/fujirockfestival_in_myroom/
これは何?
- livedoor Reader 風の UI でフジロック出演者の YouTube 動画をだらだらとみることができる Web サイトです
- カウントダウンチューブのフジロック版みたいなものです
使い方は?
- 左側にアーティスト一覧があります。その一覧からアーティストを選択すると、そのアーティストの動画が右側に表示されます。
- 動画の左横に曲の一覧があります。自動的に再生された動画以外の動画を見たい場合は、曲の一覧の中から聴きたい曲を選択してください。
- 動画の再生が終わると、次のアーティスト(現在選択されているアーティストの下のアーティスト)に移動し、自動的に次のアーティストの動画が表示されます。
もう少し詳しい説明
- アーティストの一覧は、公式ページのアーティストラインナップから作成しています。ステージ順、日付順に並んでいます。
- 曲の一覧は、「(アーティスト名) + live」をキーに YouTube を検索し、1 ページ目の 10 件だけを取得し、そのタイトルを並べています。
- よって、曲の一覧内の動画が選択したアーティストのものである保証はありません。また、上記の理由より、表示される曲の一覧はあまり変わらないと思います。
- アーティストを選択したときに、自動再生される動画は、曲一覧の中から毎回ランダムに選択しています。
注意することは?
Firefox でしか動作しません。ごめんなさい。いずれ対応したいと思っています。- 日本語のアーティストはうまく取得できません。
- 動作が不安定です。おかしな動きをしているような気がしたら、ページを再表示してみて下さい。
- 特に状態管理がとてもあやしいです
- 検索結果が 0 件のアーティストに移動すると、そこで止まります
- レイアウトが偏ってて変なのは、ボタンとか画像を配置予定のためです
技術的な話
- アーティスト一覧のリストはサーバ上から取得していますが、その他は JavaScript だけで処理しています
- YouTube の API は XML を返すので、pipes で json に変換して使っています
- iframe を使った方法を試みたり、Google Developers でやろうとしたりしましたが、pipes がシンプルかつ確実でよかった
参考にしたところ
など
はてなブックマークの追加画面で、おすすめタグの中から自分の使っているタグだけを目立たせる Greasemonkey スクリプト
目立たせるといいながら、地味な下線が引かれているだけですが、上の画像の場合、"internet" と "news" と "search" と "web" と "yahoo!" は、僕が以前に登録したことのあるタグであることを表しています。
おすすめタグに、単数形と複数形(例、"lifehack" と "lifehacks")や、スペースがあるものとないもの(例、"google calendar" と "googlecalendar")が並んでいる場合、自分が使っているタグを確認しないと、似たようなタグが増えかねません。下にスクロールして確認すればいいのですが、それが面倒なので作りました。
スクリプトはこちらになります。
http://lab.satoship.net/js/hb_highlight_mytags.user.js
// ==UserScript== // @name hb: highlight mytags // @namespace http://d.hatena.ne.jp/satoship/ // @include http://b.hatena.ne.jp/add* // @version 1.0 // ==/UserScript== (function() { var my_onload = function(){ with(unsafeWindow){ var div_othertags_list = $('othertags_list'); var spans_othertags = $A(div_othertags_list.getElementsByTagName('span')); spans_othertags.each(function(span_othertag){ var my_tag = tags.find(function(v){ return v == span_othertag.innerHTML; }); if(my_tag){ with(span_othertag.style){ borderBottom = "1px dashed #777777"; } } }); } }; unsafeWindow.addEventListener("load", my_onload, false); })();
Python Workshop the Edge 2007 に行ってきました
6/30 に開催された Python Workshop the Edge 2007 に行ってきました。
Python のことは、作者が Google にいるという程度のことしか知らないにも関わらず参加してしまったのですが、このイベントで、Python の他のスクリプト言語と比べた特徴や、開発環境、Web アプリケーション用フレームワーク、周辺の雰囲気などをなんとなくつかめたので、有意義な一日でした。
以下、参加したセミナーの感想とメモです。
荷電粒子加速器制御システムでのPythonの活用 - 山本 昇さん
高エネルギーがなんのことか理解できず、全くついていけないまま終わってしまいました。なぜ Perl じゃなくて Python を?という質問に、Perl は読みにくいが、Python は分かりやすいというのもあるが、実際は私の趣味と答えていました。
CG映像制作とPython 株式会社セガ VE研究開発部での事例 - 齊藤 淳さん
セガの VE(Visual Entertainment)研で CG を作成している斎藤さんの発表。CG 界では Python が標準らしいです。そうだったのか。
VE 研について
- エンジニアを多く抱えている。12 名。(業界では珍しいらしい)
- 海外に追いつきたい
- CG 業界
- Python が大活躍。海外の大手スタジオでも使われている
- ツールは Maya
Maya について
Plone による情報共有
- Plone http://plone.jp/
- なぜ情報共有?
- VE 研は分業制だから、意思疎通のため
- 他部署への開示
- LDAP 認証
- CoreBlog2 http://coreblog.org/jp/about_coreblog2
- 技術文書管理
- Help Center http://plone.org/products/plonehelpcenter
- ツール管理
- Software Center http://plone.org/products/plonesoftwarecenter
- 使った感想
- 簡単
- 不満を述べるなら、レスポンスが悪い、画像・映像を扱いにくい
- 今後
- ソーシャルブックマーク機能を取り入れたい
- 画像・動画管理をしたい
Pythonコード添削道場
きれいで読みやすくて分かりやすくおもいやりのあるコードを書くためのお話。Python のコードを書いたことがない時にこのような発表を聞けたのは良かった。基本的な考え方は、どの言語でも同じだろうけど、Python のコーディングスタイルには PEP 8 というのがあることや、PEP スタイルを学ぶために、標準モジュールを読むといいということを知りました。
教育現場におけるPython の利用 - 菊池 靖さん
大学でプログラミングの授業をしている菊池さんのお話。単位がもらえればいいというモチベーションの低い学生や旧態依然としたカリキュラムに困っているが、次の点で Python を採用しているそうです。
- 学習しやすく、かつ実用性もある
- インデントがそろってないとコンパイルを通らない、可読性が良い(教員のため)
僕も、情報系ではありませんが、不真面目な学生だったので、複雑な気持ちでした。
プロジェクトにコンパイルはいらない - エマーソン ミルズさん
YAPC で Amazon の EC2 を紹介していたエマーソンさんです。新しく会社を作ったらしい。で、開発人生を劇的に変えたというスクラムのお話。
主概念
- プラットフォームは進化する
- 常にコミュニケーション
- 開発をより人間的に
- ユーザの意識、参加
- 開発プロセスに客の声を取り入れる(最初と最後だけじゃなくて)
非滝的(非ウォーターフォール的)
- スペックは途中で変わる
- 期間の長いプロジェクトはスペックがずれる。ニーズが変わる。
- タスクを同時変更
- デザインしながら開発
- 予算・期間・開発を満たす
- トヨタ方式
- 失敗を許す
- バグの洗い出しにつながる
プロジェクトの抽象化
- 開発を楽しくする
- 細かいスペックよりゴールを決める
- 意思疎通すると楽しくなる
- プリウスの例
- スケジュールは小・中・大・特大に
Python との関係
- 抽象化
- 開発サイクルの短縮
スクラムのここが違う
- スケジュールの見直し
- 開発チームが中心
- 2 〜 3 週でテスト
- バグがあっても、長くて 3 週間で見つかる
- 時間が経つほど、バグが見つかってもどこを直せばよいか探し出すのが難しくなる。
BOF : Python国民投票 - 原 弘さん
事前に行ったアンケートの結果発表です。気になったところのメモ。
Pythonのどこがすきですか?
- ライブラリがしっかりしている
- 一つのことをするのに一つの方法しかない(Perl の逆)
- 誰が書いても同じようになる
そういえば、DHH は Ruby に同じようなことを行っていました。
Rubyで書いたものはどれも,同じことをする場合はだいたい似たように見える。この「統一感」がすごく重要でした。
#2 Ruby on Rails作者 David Heinemeier Hansson(前編) RubyでRailsを書いたわけ:小飼弾のアルファギークに逢いたい♥|gihyo.jp … 技術評論社
Pythonのここらへんどうにかしてほしいってところありますか?
pyObjC で SkypeBot をつくってみよう - ひらた だいじさん
OSX で Skype の Bot を作ってみようというお話。
Python on Mac OSX
- OSX には標準で Python がインストールされている
- PyObjC とは、Python と Objective-C のブリッジ。http://pyobjc.sourceforge.net/
Skype について
その後、実際に作る説明に入りましたが、内容は省略。TwitterPod などを作っている drikin さんのhttp://drikin.com/dorio/を参考にしたそうです。
livedoor Reader の「既読にする」をショートカットキーに割り当てる Greasemonkey スクリプト
「既読にするタイミング」を「手動」にしているので作りました。"t" に割り当てています。
次のサイトを参考にしました。
http://lab.satoship.org/javascript/ldr_keybind_t_touchall.user.js
// ==UserScript== // @name LDR: keybind t touchall // @namespace http://d.hatena.ne.jp/satoship/ // @include http://reader.livedoor.com/reader/* // @version 1.0 // ==/UserScript== (function(){ var w = unsafeWindow; var _onload = w.onload; var onload = function(){with(w){ Keybind.add("t", function() { if(State.now_reading) { touch_all(State.now_reading); } }); }} w.onload = function(){ _onload(); onload(); } })();
livedoor Reader のフィード検索で、タイトルだけじゃなく URL も対象にする Greasemonkey スクリプトを作りました
読みたいフィードを検索しようとする時、タイトルよりも先に URL が浮かんでしまうことが多いので作りました。URL に含まれているユーザ名で検索したい時とか、あるサービスのフィードだけを検索したい時にも便利だと思います。
次のサイトを参考にしました。
インストールにはこの Greasemonkey スクリプトがとても便利です。
ldr_add_linkfilter_to_finder.user.js
// ==UserScript== // @name LDR: add "link filter" to "Finder" // @namespace http://d.hatena.ne.jp/satoship/ // @include http://reader.livedoor.com/reader/* // @version 0.1 // ==/UserScript== (function(){ var w = unsafeWindow; var _onload = w.onload; var onload = function(){with(w){ Subscribe.Controller.prototype.add_filter = function(q){ var filter = function(item){ return contain(item.title,q) || contain(item.link,q) }; this.filter = function(model){ return model.filter(filter) } } }} w.onload = function(){ _onload(); onload(); } })();
livedoor Reader の JavaScript のソースコードは、いつか読んでみようと思いつつも量がたくさんあるので、まとまった時間が取れる時に読もうと後回しにしていましたが、いざ読み始めると、とてもきれいに書かれていて読み易かった。低レベルの部分はそうでもないかもしれませんが、このような機能を追加したいだけなら、割とすぐに該当箇所が見つかるのではないでしょうか。「まるごとPerl! Vol.1」の記事を読んだので、ある程度知っていたというのもありますが。
高度なことをしているのに、読み手には易しいといのが、とてもすばらしいと思いました。インデントもされているし、コメントも少し入ってるし、ファイル名にバージョン番号が付いているので、変更されたら分かり易いし。