Sunday, September 21, 2008

App Engine Hackathon

土曜日はofficeでApp Engine Hackathon。
講義としてはスケールする Web アプリを書くにはと製品レベルの Web アプリを書くにはでした。基本的にはGoogle I/Oのセッションを日本語で説明するかんじで、AppEngineつかう人はぜひ知っておくべき情報です。
あとはひたすら各自でコーディング。
昼と夕方に弁当がでました。

Software Freedom Dayということもあり(?)個人的には最近放置していたsnapshot.debian.netのインデックスをなんとかしようとscratchから作り直し。いままでのversionは pdumpfsのlogをよんで、更新されているdebに関して情報ととりだして packageごとのPackagesとSourcesをつくっていました。かなりad-hocなruby scriptで、生成されるものもそのままPackages, Sourcesなのでわかりやすいことはわかりやすいけど、いかんせん量がおおすぎてとりまわしが難しかったのです。ファイル数が約55万、ディレクトリが約24万、トータルで1.6GBほど。新しいディスクやマシーンにコピーしようとしてもファイル数が膨大すぎて何時間もかかってしまうし。
ちなみに現状のsnapshot archiveはこれくらい
$ df -h /archive/
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 4.5T 3.7T 613G 86% /archive

というわけで次世代ではなんらかのdatabaseを使おうと思っていたのでした。コピーの手段も pdumpfs から cp -a --link + rsync に変更してしまっているので、そのままじゃ動かないし。
App Engine の Hackathon なので App Engine を使うことも考えたのですが、なんといっても量が多いのでquota(500M)に収まらないんじゃないかと思い、とりあえず python + sqlite でコーディング。実用的なものをめざしつつ、サイズが小さくおさまりそうなら App Engine版をつくることを見据えた選択をしました。
最近 SQLとかさわってないので思い出しつつ、いくつかはまるところがあったり。
sqlite で string な column に'1.0'をつっこむと1になってしまうとか。'1.0 'とかにするとよさげ。
とりあえずそれっぽいところまでできたのですが、なんせ量が多いのに対しperformance(特にindexing)がいまいち。
そもそも 2005/03/12 (残っているなかで一番古いやつ) ですら、一日分だけで Packages.gz+Sources.gzが 約220ファイル、延べ47パッケージエントリ、gzipされてるファイルで90Mほど、Packages.gzとSources.gzをpython-deb822で全部scanするだけで7分ほどかかります。
つくったindexerではできるdbファイルがsql tableの作り方を工夫して無圧縮で約100Mほどまでにできたのですが、しかしindex構築するのに数時間かかってしまっています。dbファイルとhddに置いてたらかなり遅かったので/dev/shm(tmpfs)以下に置くようにしたら少しは早くなったのですがそれでもまだまだ遅いです。大きめのPackages.gzだとひとつのPackages.gzファイルだけで10分~20分とかかかるかんじ。
現在 1288日分あるわけで、1日処理するのに4-5時間以上かかるとすると、全部のindexをつくるのに1年ほどかかってしまいそうです。もっと高速化しないとなー。
やはり全スキャンはやめて以前みたいに更新ログから更新分だけを処理するようにしないとだめかな。
社内にあったらMapReduceでばばんとできるのになー(Google脳…)

Saturday, September 13, 2008

ESPer2008

未踏ソフトウェア創造事業関係者が集まるESPer2008に参加してきた。
一番驚いたのは、未踏ソフトウェア創造事業の英語表記が「Exploratory Software Project」から「The MITOH」に変わったらしいということ。
そういえばなんか未踏iPediaなんかできていたのか。IPAは○○iPediaが好きだな…

しかし今日はエンジニアの未来サミットとかぶっていたのね。takesakoさんはESPer2008に参加しつつUstream.TVの中継をみていた。さすが。

Friday, September 12, 2008

OpenSource協議会 System iセミナー と 裏Hackathon

今日はIBM飯倉にOpenSource協議会 System i主催の『ここまで来た企業情報システムのオープン化!』最新技術動向・事例セミナーで、「次世代Webプラットフォームにおける三つのC 〜 Client、Connectivity、そして Cloud」というタイトルでしゃべってきた。 他の会社の講演もあったけど、さっさと戻って裏Hackathon。本当は木金土と2泊3日で Hackathon だったのだけど、この用事のためにいけなかったのだ。そういうわけでこの二日間は、いけなかった人数人と一緒に会議室にこもって 裏Hackathon していた。 今回は春に20%でちょろっと作ってほったらかしにしておいたシステムを改善をめざした。完璧にはほど遠いけど以前よりはだいぶよくなってきたかなー。やりはじめるといろいろやりたいことがでてくる。普段やってないあたりなので、いろいろつまづくところもあったりもしたが、楽しい2日間であった。

Tuesday, September 9, 2008

NRI ABCIセッション

今日は丸の内へいってNRIのABCI(Advanced Business Creation Initiative)セッションにて講演。
概要: ソフトウェア開発においては、エンジニアの技術力の差が大きく効いてきます。変化の激しいソフトウェア業界で生き残っていくためには、自分自身がどのようなエンジニアになることができるかが重要となります。 フリーソフトウェア・オープンソースソフトウェアの世界で活動してきたソフトウェアエンジニアとして、どのようなことをしてきたか、またその時どのような判断をしてきたかなどについてお話しします。
というかんじのネタで1時間ほど。基本的には昔話をベースにMy Job Went To Indiaの格言を引用しつつどうあてはまるかとかを話していました。 気になった人は本を読んでみてください。 そういえば会場について総合受付のところで「ぐーぐるの鵜飼ですが」といったら「ぐるぐるですか」とかいわれたよ?

Monday, July 7, 2008

Google 技術講演会 in 京都

Google 技術講演会 in 京都のため、また京都へ。会場はハイアットリージェンシー京都だったので、ちょっと早めに京都入りして三十三間堂を見てきた。京都駅から歩いていったので結構汗だくに。

15:15に受付開始して16時まで軽く交流会。16時から4つのプレゼンテーションとQ&A。そして、また交流会。抽選でGoogleロゴいりフォトフレーム5つと、サイン入り「Binary Hacks」1冊。今回は特にプレゼンとかもなくカメラマンで写真を適当にとりまくってました。最後の挨拶だけして終了。大きな地図で見る

その後、KMC関係者を中心に四条木屋町のアジアジアで宴会。さらにその後 残った人でDylan IIで1時過ぎまで。

Saturday, June 28, 2008

Blogger in Draft

Blogger in Draftの新機能をためしてみた。

Star Ratings: Star Ratings codeは次のようなかんじみたいだ。

 <p class='post-footer-line post-footer-line-3'>
 <span class='star-ratings'>
  <b:if cond='data:top.showStars'>
   <div expr:g:background-color='data:backgroundColor'
           expr:g:text-color='data:textColor'
           expr:g:url='data:post.absoluteUrl'
           g:height='42'
           g:type='RatingPanel'
           g:width='180'/>
  </b:if>
 </span></p>

Embedded Comment Form: ついでにOpenID とかでもコメント書けるようにしておいた

Thursday, June 26, 2008

ソフトウェアシンポジウム2008

ソフトウェアシンポジウム2008のパネル・ディスカッション「FLOSSは日本のソフトウェア技術者を救うか〜Don't trust anyone over thirty」にひろのぶさん、かずひこさん, Matzさんとともにパネリストとして参加してきました。 FLOSSの4つの自由でソース読んだりいじったりすることでソフトウェアの技術が身につくんですよ、上流→下流よりもコア→アプリケーションなんじゃないんですかね、簡単なことを簡単にできないようでは難しい問題にはかないませんよ、できる人は仕事がはやいからどんどん作ってどんどん改良していくのですぐれた成果物がだせるんですよ、ソフトウェア開発はyak shavingになりがちだけど、やってみないとわからない問題というのはたくさんあるわけで、yak shavingすることで技術力がつくし、その中に真の解決すべき問題があるのかもしれませんよ、Done, Get Things Smart、コードレビューするのは大事ですよ、継続することが大事でそのためには好きであるほうがいいですよ、つまらないと思っているタスクも見方をかえるとおもしろい問題なのかもしれませんよ、とかそういう話をしました。 Q&Aではmatzを説得する方法とかMatzさんに限らず一般的にFLOSSコミュニティで活動する上で大事ですよ とか、コミュニティは大事だけど特に単なるお客さんになりがちなユーザーコミュニティとかはどうか とか。 しかし、ほとんど「上流→下流」な仕事はしたことないのでそういう世界は実際どういうかんじなのかわからないんですが、コード書けない人が設計やっているとか聞くと、それでよく作れるなーとか思うんですがどうなんでしょうか。もしコーダーは設計を機械的にプログラムにおとしているだけというのなら、そこはまさにコンピューターでやってしまうべき(自然言語なんかで記述するよりなんらかのDomain Specific Languageで書いてしまったほうがよさげで、コーダーみたいな人は不要)だと思うし、そうじゃないんなら、そこにはそれなりにややこしい問題が潜んでいることもあるわけで、重要な部分は技術力があって経験豊富な人がしっかりと実装しないと駄目だろうと思うわけです。実装しないと設計の問題がわからないことはよくあることです。実装しなくてもきちんと設計できるっていうのはよほどすごい人か、そもそも大して難しくないシステムかのどっちかじゃないかと。 仕事もあるんで、シンポジウム自体は3日あるけど初日のキーノート、パネル、懇親会だけでてさっさと帰ってきました。 さて、高松に来たからにはうどんを食わなければ、というわけで3食たべてきました。 まず高松空港からリムジンバスで到着した高松駅の近くで発見した「連絡船うどん」 夜は懇親会で結構食べたけど、その後町のほうにでかけて「北古馬場ごえもん」 朝早く起きて駅の近くの「味庄」
大きな地図で見る

Sunday, June 22, 2008

KMC 0x20周年記念 OB会

土曜日は朝10時から京大会館にてKMC (Kyoto University Microcomputer Club)の0x20周年記念 OB会。 しかし朝寝坊してしまって会場の京大会館についたのは12時ごろ。午前の部が終わりかけていた。参加者70人くらい。KMCはいろんな人材を輩出してますなー。へたなイベントよりかなり豪華メンバーなイベント。 「これからのプログラマ」というお題でパネルすることになったので昼ぐらいにGoogle Docsつかって適当に資料作成。 晩は京都大学のレストランカンフォーラでパーティー。 その後、The Flying Kegで1時間ほど呑みをして帰省した。 そういえば2週間後 7/6には京都でGoogle Tech Talkがあるのでまたいきますよ

Saturday, June 14, 2008

FSIJ総会

今日は秋葉原ダイビルにてFSIJ理事会および総会。 今年はGNU Project 25周年だとか。 「フリーソフトウェアの世界はお互い様」「商売やってる人は『タダで落ちてるから使おう』だけじゃなくもう少しソフトウェアの生態系・エコを考えたほうがいいんでは」などなど その後、拡大月例会: プライバシ保護デバイスと自由ソフトウェア ソフトウェアと違ってハードウェアがからんでくると自由と実践とのバランスがむずかしいものだな。

Tuesday, June 10, 2008

Google Developer Day 2008 Japan

帰国早々今日は横浜パフィシコでGoogle Developer Day 2008 Japan。 今年は基調講演の中でGoogle App Engineの紹介。 Keynote終わったあとはPress Luncheonに参加。Pressの質問はほとんどAndroidに関するものだったので私が答えることは特になかった。 午後は基本的にGoogle App Engine codelabセッションで参加者のいくつかの質問に答えたり。 Q「ローカルでは動くけどデプロイするとファイルにアクセスできなくて動かない」 A「そのファイルをapp.yamlで明示的にuploadするようにしないと(importしているファイルなどは自動的に判断される)」 あとはkeyとkey nameの違いとか。基本的にはkey = Entity type + parent entities + key name で、これがbigtableのrowkeyになっているということのようだ。Under the Covers of the Google App Engine Datastoreに詳しい。 Google App Engineでアプリを書く人、もしくはスケーラブルなソフトウェアを書く人はBuilding Scalable Web Applications with Google App Engineは見ておくべき。