Windows Developer Days 2日目にも参加してきた

2012年4月25日水曜日

昨日の Windows Developer Days 1日目に参加してきた の続きです。

= キーノート
既にいろんな記事が公開されている気がしますが、VOCALOID全力推しのプレゼンテーションでした。
Windows 8とその周辺のAPIを使うとどのようなことが出来るのか、どんな未来を作っていけるのか、というものでした。

オープニングムービーはこれ。かなり力入ってます。
映像はMiku Miku Danceで作ってるとのこと。Windows 8(というかMetroスタイルアプリ)の利用モデルとして、よく出来ていました。多分プレス記事が公開されるので詳細は端折りますが、Metroスタイルが当たり前になった時にどんなWindowsの世界が展開されるのか、というイメージを参加者と主催者が共有出来る、良いデモだったと思います。

= ランチ
今日は、昨日よりもしっかりと食べられました。茶そばうまうま。

クラウディアさんKitKatが大量展開されてました。

キーノートのムービーにあった、TULLY'Sの看板。
昨日見た時は「なんだろこれ?」という感じだったのですが
納得でした。いい未来の像のひとつ。

では引き続き午後のセッション。

= Windows 8とAzureで更に広がるVOCALOIDの世界
キーノートでがっつりとVOCALOIDの利用モデルを見ることが出来たのでこのセッションは回避しようかと思いましたが、

そう聞いたら行くしかないわー。行くしかないわー。
私はセッション会場前へ早めに着いたのですが、その後入場待ち列がどんどん伸びていき立ち見必至な状態に。
講演者はヤマハ株式会社の剣持氏。「VOCALOID開発元締め」と自己紹介されていました。ライブ作曲を交えつつVOCALOIDの技術サイドの話など、幅広く面白い話を頂きました。
気になったポイントをいくつかメモ。
  • VOCALOID街頭調査: 2011年4月 14歳から40代の男女: 10代68% 20代61% 30代42% 40代35%
  • プラグイン、ジョブスクリプトはLua言語で書くことが出来る
  • 楽器が変わったり増えたりすると、生まれる音楽も変わる。ベートーベンのピアノソナタに途中で新たなタイプが増えたのは、彼が新しいピアノを使うようになったから。同じようなことがVOCALOIDによって引き起こされていくのではないか
  • VOCALOIDのの3つの未来。better quality, easier-to-use, easier-to-join
    • 品質にはまだまだ満足してない
    • ソフトの使いやすさを改善していきたい
    • 取っつきにくそう、と思われずにもっと色んな人が入ってきやすくしていきたい

セッション後半は、Microsoft MVP for Windows Azureの亀渕氏による VOCALOID + Windows Azureのお話。
"VOCALOID3 as a Service on Windows Azure"のコンセプトはsimple, scalable, portableとされ、きれいにAzure上でのスケーラブルな設計をされていました。

= ミスドブレイク
安定のポン・デ・リングと、なんだっけ。
おいしかった。

後でまた来た時には箱詰めされてた。
会期中に配り終わらなかった分はお土産パックに
なる、とかだったのかな。

糖分大量補給済みだったので避けましたが、
アイスもありました。

「何が始まろうというんです?」な状態。
右側のMacBook Pro 17インチがひときわ異彩を放っています。

= BigDataの活用で忘れてはいけないポイント

  • (なるべく生の)データをちゃんと蓄積していくこと
  • ビジュアライズ方法を練ること
だったのかな。資料公開されたらもう少し追いかけたいです。


= ローミング - PCの境界を超えた作業状態の維持
従来から.NET Frameworkベースのアプリケーションではローミングデータとローカルデータの使い分けが出来るようになっていたのですが、これがクラウド対応するよーという話なんだろうなと思いつつセッション潜入。
ライブコーディングが長めだったので集中力切れていしまいましたが
ローミング対象に向いたデータ: アプリ設定で使用する小さなキーと値のペア。読みかけの本のページのようなユーザーの状況。独自フォーマットの小さな設定ファイル。また、常時ネットアクセス出来るとは限らないことにも注意を払う必要がある
というお話でした。

= Direct XとGPUチューニング
途中入場でしたが、

  • パフォーマンスについては、レンダリングプロファイルを取ってチューニングすべき
  • 60fps出せなければ58fpsとか中途半端になるのではなく、ガクッと30fpsまで落ちる
  • 60fpsと30fpsを行き来するとかなりユーザにとってストレスになるのでなるべく60fpsを守るべき
  • そして、できるだけ消費電力を抑える必要がある
  • レンダリングコスト削減について2点
    • シェーダー演算の複雑さを最小限に抑える
    • 冗長な処理を最小限に
  • ラスタライズ削減で2点
    • ピクセルバウンドが原因の場合はターゲットをスケーリング
    • 深度値の複雑性、またはオーバードローを最小限に抑える
  • ここでは挙げていないけど、z-prepassレンダリングも有効
  • 不要な分については処理ビット数を減らす。Minimum Precision機能。HLSLにmin16float/min12int/min16intというのが追加されていて、これらを使って最小精度を指定出来る。例えば32bit処理が必要ないところを16bit処理出来れば、同じ時間で2倍のデータを処理出来る(注:GPUはこういう処理に向いてますね)
  • タイルベースレンダリング。一部のグラフィックアーキテクチャではタイルキャッシュが使用される。なるべくメモリへアクセスしないように、というアプローチ
  • タイルベースレンダリングの方針
    • シーン半ばでのフラッシュを避ける
    • レンジターゲット間のスワップを避ける
    • レンジターゲットの位置部分だけを更新する場合はシザーを使用する
    • 可能な場合はDISCARDおよびNO_OVERWRITEを使用する
ということで、実践的なテクニックが多く紹介されていました。セッション資料が公開されたらしっかり読みたい。

= 二日間のセッション終了(^o^)
一足早く、これで終了。

二日間の様々なセッションを聞いている中で、こんなことに気付きました。
「最近ほんの少しだけどWindows Phone開発に触れ始めたことで、Metroスタイルアプリの開発に関しても想像力の働くところがかなりある」というものです。
ここで、「ある技術について学んだことが他のエリアにも転用出来る」というのは私が凄いのではなく、アーキテクチャが優れているということに他なりません。
そして、
  • 幅広いデバイスでのOS動作
  • x86に加えARMでの動作も前提としたアプリケーション開発という新たな常識の導入
  • これを容易にするマネージドコードとその高パフォーマンスなランタイム(当然、更にパフォーマンスを確保したければネイティブコードを利用するという選択肢も保持されている)
  • 統一されたデータ処理の枠組み(LINQ)を含む強力かつ優れたC#などの言語
  • 翻ってサーバ側では柔軟な構成と高パフォーマンスを実現するWindows Azure
  • そして最高に洗練された開発環境であるVisual Studio

技術的な要素は揃いすぎなぐらい揃っています。あとはこの舞台で何を作るか。その多くは我々開発者に委ねられている状況だということがはっきりと分かりました。
こうなるとワクワクしてしょうがないので、まずはどんどんWindows Phone用のアプリも開発していきます :)

Windows Developer Days 1日目に参加してきた

2012年4月24日火曜日

昨日の Bar Windows PhoneでLTしてきたよ からの流れで、Windows Developer Daysの1日目に参加してきました。

Windows 8自体の動向、Windows Phoneシリーズの動向が目玉ですが、引き続きWindows Azureや最近のWeb動向なども注目トピックです。

会場は、『ザ・プリンス パークタワー東京』でした。こんな感じの外観。


ちなみに会場は入って地下2階。


廊下のカラーはブルー基調だった。

で、ここから進んだところに「no photo no recording」の掲示が。残念ながらプレス関係者以外は撮影禁止のようです。
ということで、この先は休憩時間以外の写真無しです。

開発者向けイベントとしては久々にMac率が結構低く、スーツ率が高めだったのが印象的でした。1/3ぐらいは招待枠で仕事として来られてる方々かなぁとか思いつつ30分少々遅れて始まったキーノートから。

= キーノート
メインプレゼンターは Steven Sinofsky 氏でした。まずはWindows 8について、その新機能を紹介。ところどころのデモは日本マイクロソフトの藤本氏が担当されました。
正直なところ、既にWindows 8 Consumer Preview(以下Win8CP)を利用している人にとっては目新しいところ少なかった。画面タッチ対応端末特有の使い方については「なるほど」と思う部分がいくつかありましたが、ざっくりまとめると

  • Windows 8のMetro用アプリ間の結合は、従来のWindowsアプリよりもだいぶ疎になる。メニューの呼び出し方など、AndroidのIntentやContentProviderに近い形での実装となる
  • Windows 8では、従来のアプリケーション(例えばOffice 2010)でもWindows 7と比較して高速に動作する。これはOS自体のチューニングによるもの。
    →これは私自身Win8CPを使っていて感じるところで、Visual Studioなどの動きも結構キビキビになっています
  • WinRTがシステムサービスのコアAPI群。上のレイヤには選択肢がある。XAML使って開発をC#/VB.NETかC/C++で行うスタイルかHTML/CSS+JS。デスクトップアプリについては進化無し
  • 基本的に、Metro向けのアプリはx86とARMの両方で動作することを前提とする
  • ビジネスアプリについても、Metro化でメリットを見いだせるものもある。Microsoft内製のものとしては、Microsoft DynamicsをMetro化している
  • 様々なデバイス向けに既に最適化が進んでいる(例えばシャープのBIG PADでも快適に使えるようになっている)
  • 6月の第1週に、Consumer Preview版の次版となるRelease Preview版が公開される予定
という感じでした。デモの多くはタッチ対応PC上で行われていましたが、一方で「現在の10億人のPCユーザにとって、多分このUIは向こう5年間要らない。やっぱ主戦場はタブレットだなぁ」なんて考えながら聞いてました。

あと気になったところは、Windows環境をUSBメモリに入れて持ち歩く「Windows to go」の出来が結構良くて気持ちよく使えそうな感がしたあたりです。多分おおくの企業では使わせてくれないのだろうけど。。



= ランチタイム

メインのランチ会場と、各スポンサーセッションでのランチを選べる形でした。が、2,000人の登録者というのは凄いものでランチセッションは満員、ランチ会場もかなりの列が出来ていました。軽く食べられそうなものを食べて、あとは
おねーさんの配布してたレッドブルをgokgok。

このタイミングでいくつかの展示も見に行きました。


NVIDIA

Azure。ということは…

3次元クラウディアさん。


こちらはクラウディアさんらの3DモデルがMMD上で。

さらっと見て、ランチ会場に戻りもう1本レッドブル頂いてgokgok。

レッドブルには専用ゴミ箱が用意されてました。

こんな具合で休憩時間終了、午後のセッションへ。

= 「ユーザーに最高のエクスペリエンスを提供するVisual Studio 11のアプリ開発」
高橋忍さんの講演です。よくblog読んでお世話になっています。
が、内容は割とVisual Studioにあまり馴染みの無い方向けだった。しまったセッション選びミスった。日々使ってVisual Studioサイコー!!と言ってる私には不要でした。

会場パンフに、ランチ会場だったエリアが午後のセッション中は休憩スペース兼お菓子類のデプロイ先兼電源スペースになるという記述を見つけたので、中座して休憩スペースへ。


= 休憩スペース
ミスドおぉぉぉ(^o^) 無料配布でございました

同じくフリードリンクをゲットしてブレイク。
ランチ直後だけどブレイク。

= 「AndroidアプリからMetroスタイルアプリへ
省略します。

= 「Hadoop on Windows "一見奇妙なその取組と設計・実装・活用法"
Windows HPCを使わずにHadoopでやることの意味、的なお話。もうちょい時間が経ってMSDNに情報まとまるの期待です。

= 「.NETによるWebSocketsサーバー開発」
クライアントではなく、あえてサーバ側を.NETで書くという話。C#大好きの私にとってはwktkのネタでした。
軽くまとめ

  • WebSockets自体、RFC段階は終わってるよ。セキュリティの問題が解消してFirefoxとかでも再度enabledになってる
  • データとしてはUTF-8かバイナリを扱える。SJISとかダメなので注意
  • アーキテクチャを見てみると、IIS無しでもWebSocketsのライブラリ使えそうな感じがする。Azureへそのまま持っていけそうな気がする。でも実はダメです。http.sysに依存していて、その中の実装がWin8依存。
  • 一方、http.sysからはCOMのインターフェイスもexposeされているので、実はC++でも書けます
  • SignalRというプロジェクトで、よさげなライブラリ公開されてます
ライブラリを数パターン紹介頂いたのですが、どれも割とよく作りこまれている印象を受けました。「ただ実装しただけ、使い方はなんか考えてよ」というブン投げスタイルをよく見かけるのですが、そうではない、ちゃんと利用モデルを考えて練っているように見えるところに好感がもてました。

あと、私はFiddlerというデバッグプロキシを知らなかったのですが、WebSocketsにも対応しているなかなか凄いやつのようです。機会あれば使ってみよう。

Microsoftの、特に.NET周辺については Codeplex でのコミュニティベースのライブラリ開発というのが結構よく機能しているように思えます。


= 「Kinectを中心としたナチュラルユーザーインターフェイスに関するセッション」
一日目の最後。講演者は日本マイクロソフト株式会社 インタラクティブエンターテインメントビジネス デベロッパーネットワークグループ アドバンスドテクノロジーグループ ソフトウェアデベロップメントエンジニア 千葉 慎二氏です。長いw
Kinectについての概要を割と包括的に話されていました。特に気になったのはXBOX用とWindows用で微妙にデバイスが違い、商用に利用出来るのはWindows用のみ、というところでした(ちなみに価格も、XBOX用は14,800円程度、Windows用は24,800円程度、と異なります)。

ナチュラルユーザーインターフェイスを作り上げる上で重要なこととして
「人が入力のための特別な操作をおぼえるのではなく、人が直感的に動いた結果が想定通りの出力となるようコンピューター側で理解する」
ことを挙げられていたのが印象的でした。このために
「人が自然に行うであろう動作を判断する。目的を明確化する。」
ことが必要だとも。結論としては、人の行動をよく観察し、分析し、それをモデル化し、デザインし、ひたすらテストを行なってチューニングすることで快適に使えるインターフェイスを作り上げる、ということでした。このあたりは、もっと応用例が増えてくれば更に洗練したアプローチが生まれてくるのだと思います。

ということで、充実した一日でした。


= …からの、レセプションパーティー
遅れて参加したので食べ物は既に皆無、絶無でした。
人いっぱーい。

たまにお目にかかる方々がいらっしゃったのでビールを頂きワッキャと喋っているとプレゼント抽選会開始。
こんな感じ。

賞品は

  • シャープのプラズマクラスターイオン発生機
  • NikonのCOOLPIX(コンデジ)
  • Roomba
  • XBOX 360 + Kinect諸々セット
  • Kinect for Windows
という熱い品々に加え、

Lumia 800が5名に!

という、開発者向けイベントらしいものでした。


運営された皆様、お疲れ様でした! 明日もよろしくお願いします。

-- 追記: 2日目はこんな感じでした。 Windows Developer Days 2日目にも参加してきた

Bar Windows PhoneでLTしてきたよ

毎週月曜、Androidクラスタの方にはお馴染み渋谷某所のBar Android。

先週久々にお邪魔したところ、@kabayan さんから「来週はWDDの前夜祭ってことで、一日限りBar Windows Phoneってのをやるんだけど来る?」と声をかけて頂きました。

ちょうどWindows Phone向けのアプリ開発を始めようとしていた時期で丁度良いやと思い行くことに。ついでにLT枠もあるっぽいということをチラッと聞いていたのでその後zusaarを見て @tezawaly さんへメンション飛ばしてみたところokとのこと。

で、水曜にMicrosoft主催、NECラーニング開催のWindows Phone 開発トレーニング無料キャンペーン!さらに App Hub Token付き! (2012年5月15日開催分まで) (App Hubの1年間登録チケット9,800円相当がもらえるから、とか言っちゃいけない)に行ってきました。

その時に作ろうと思ったのがtwitterのエゴサーチツール。Androidだとフリーダムな作り方が出来るけどWindows Phoneだとどうなるんだろうと調べ/考えてみたところ、結構勝手が違う。

ということで、実装しながらぶつかったポイントなどをまとめたLTをやってきました。
資料はこちらです。


なんか秋葉原某所方面からいらした感のするNokiaクラスタの方々とかガチでWindows Phoneなクラスタの方(含VBマスター)やらと、恐ろしくガチな感のする方々の中で単純なAndroid開発者向けのtipsっぽいの喋るというのはアレな感でしたがとりあえず気にせず喋ってみたところ、やっぱりアレな感じでした^^;

予想よりも喋るボリュームが多く、というかお酒少々飲んでいた分か時間感覚が微妙で最後の1枚喋れず…まあどのみち全体に大したこと書いてないのでいいんですが。

普段触れているAndroidとは別の思想で組まれた環境に触るというのは、設計やアーキテクチャについて考える良い機会になると思っていますし、やってみると結構面白かったので、これからもWindows Phone方面の開発もやっていきます。皆様ありがとうございました。

最後に撮った写真を少々。

入り口、小雨がぱらついていたのでぬれちゃってました。


2Fへ着いたところ。人多すぎでどうしようと思った。

Windows Phoneなカクテルを完全スルーしてグレンリベット(12年)をいただきつつ。

@m_moonly さんと @vvakame が電脳メガネ(MOVERIO)でキャッキャしてるところ

電源入れて真剣なわかめw

LT後のじゃんけん大会でbluetoothキーボード頂きましたヒャッハー
PSVitaで使えたりしないかな。

なんとクラウディアさんのKitKatも。


TechLION vol.6 まつもとゆきひろ氏トークライブ聞いてきたよ

2012年4月12日木曜日

昨日の昼、ふとtwitterを見ると
という面白そうなツイートがあった。matzゲストかー、ゲストかー、
ということでZusaarの事前登録をした。事前決済のイベントって初めてでpaypalごにょごにょと。

目当てはもちろんまつもとゆきひろ氏のトークライブ。生matz氏は2008年8月のLightweight Language future、2009年10月21日のJapan Linux Symposium以来の3回目。毎回トークがマジで上手いので凄く楽しみ。

途中で@_erisan_さんと合流して会場についたのは開始10分前ぐらい。
会場の雰囲気はこんな感じ。
開始直前、だいぶ賑わってきてる。
後から気づいたけど、この写真の中央あたりで本持って歩いてる人matzや…。

まつもとさんトークライブのお題は「10年先も勝負できるプログラマーとは

@_erisan_さんの知り合いのUSP研究所/会の方々がいらっしゃるテーブルにお邪魔し…
たところ、めっちゃステージの目の前。すげぇ。

twitterのタイムラインを眺めると、ぽつぽつと私も知ってる方いらっしゃるらしかったので後で挨拶しようと思いつつトークライブ開始。

まつもとさんめっちゃ目の前でびびる。

以下はtsudaってたのを抜粋してお届けします。
「最近肩書き増えましたねー」
matz「Groovenautsのチーフアーキテクトになりました。FSF Award 2011もらいました。」 matz「PerlのLarry WallはFSF AwardもらったけどPHPの人はもらってない」(会場爆笑) 
matz「賞とかあんまり感動しないと思ってたけどStallmanからもらったらウルウルしちゃった」
matz「松江市名誉市民第一号は小泉八雲。私と一緒に取った人は人間国宝の人」
「そのうちまつもとさんも人間国宝になるんじゃね」
matz「まあStallmanはRuby使ってないんですけど。Lisperだから」
matz「StallmanとLispについて語ったりしてきた」
matz「10年先ってのはIT業界にとって永遠の未来みたいなもんに思える。まずは10年前からの変化を考えてみる」
matz「Rubyだと、10年前はRails以前。誰もビジネスにRubyが使えるとか思ってなかった。Javaと生産性論争とかしてたのが2006年ぐらい。Railsの作者はすげぇ議論好きで炎上大好きw」
matz「2002年、Rubyは日本を代表するOSSではあった」
「LLイベントの2回目とかだと、アンケートで"Rubyを仕事で使えてる"と答えた人は凄く少なかった」
「そもそもレンタルサーバにRubyがプリインストールされてなかった」
matz「自分の周りはあんまり変わってない。以前からほとんどの時間をRubyに使ってた。講演多くなり始めたのは2001年あたりからだからあんまり変わってない。メールあったしWebあったしチャットあったし。」
matz「だから、この先の10年の変化も意外と大したことないかも。違うんだろうけど劇的には違わない(未来は連続的にやってくる)と仮定する」
matz「アシモフのファウンデーション・シリーズの"歴史心理学"って架空の学問(数学的理論で未来を予測するもの)をヒントに考えてみる。…。やっぱ無理。」
matz「人間は数式化できないし歴史に個人の影響は不可避だから。けど、歴史じゃなくて技術動向ならある程度予測出来るかも。前提はムーアの法則」
RT @l_b__: 歴史心理学ではなく、心理歴史学(Psychohistory)だと突っ込んでみる。


ちなみに、プレゼンスライドの下をちょいちょい動いてるウサギはプレゼンタイマーらしい。
matz「エクストリーム未来予測してみる。まず価格。メインストリームPC価格はあんまり変わらないけど極小デバイスにどんどん入れられるようになってく(家電のフリしたコンピュータが増える)」
matz「家電にRubyはもうちょい頑張ったら…」
matz「次に高性能化。今のメインストリームPCは20年ぐらい前のスパコンと同じぐらい。10年後は1024コアとか買えちゃうんじゃね?スパコンの技術が形を変えて降りてくる感じ」 matz「"京"って8万CPUぐらい載ってる。10年後コンシューマに1024コアとかそんな不自然じゃない」
matz「次は大容量化。ひょっとすると次世代メモリだと今のDRAM同等で永続化可能ってことになるかも。主記憶だけで320GBとか。数段階のキャッシュ構造が主記憶だけで済むかも」
matz「そうなるとソフトウェアアーキテクチャも変わる。次は広帯域化。これによってデータ処理の場所は幾度と無く変わってきた。まだこの振り子は続きそう。」
matz「先の動向まとめると1.PCのマルチコア化。OSはいいけど言語はまだ課題ある。7万コアとか言われるとまだうまく抽象化してプログラマに提供出来てる言語はない。2."組み込みの非組み込み化"。3.クラウド化、管理ノード増えるに従って抽象化レイヤ出来るはず」
matz「例えば電力はもはや抽象化されたパワー。計算リソースもそうなる。そうなると"向こうとこちらの使い分け"という課題が残る。」
「そして"データの入り口"という課題。データは自動的に生まれるものではなくてどこかにあるものを取り込んでくることになる。どう集めてどう加工して入れるか。ここ数年の主戦場はここかな」
matz「10年先でも重要なことを押さえる。"数学"。数千年前からやってるもんだからあと10年でどうかなるものじゃない。僕はホントに数学ダメ。得意科目国語と英語。」「言語得意なんだ!」(笑)
matz「だいじなもの続き。(コンピュータ)サイエンス。何よりもサイエンス的な考え方。事実に基づいて推論を行なって検証するというスタイル。これをその時その時のトレンドに合わせていくことで地に足のついたエンジニアになれるのでは。そして新しいものにチャレンジ」
(このあたり、自社の考え方と同じだなぁと思いながら聞いてた)
matz「年をとると新しいことしたくなくなる。"大人げない大人になろう"」
「中学生コミッタに負けないとか?」(会場笑)
matz「柔軟な精神大事。社会生活には分別あったほうがいいけどプログラミングに関しては大人げなく。そしてコミュニケーション能力大事。言語を使う人はどう考えるだろう、とか考えながらメール書いたりとコミュニケーションにかなり時間を使ってる。」
matz「そして"名声w" というか個人の持っている評価というもの。僕はOSS/FSSの人なので名誉経済で生きてる。この世界だと勤めてる企業とかでは通用しない。何を作った人だからプログラミング力ありそう、と考えてもらえる。これが色々といいことにつながる。」 
matz「例えば自分の考えたこと、感じたことをblogやtwitterに書く。自分の書いたコードを(権利的問題無い限り)公開する。こういうことを10年、20年と続けるということ。Rubyは20年目、その前4年ぐらいEmacs Lispのプログラムとか出してた」
matz「現在の私は、私が天才プログラマだから、というわけじゃなくて何かを作るとこまでやったという継続によって成ってる。これによって普通じゃない人になれる。」
matz「小学校1年生の時に担任の先生から"なんで他の人と同じことが出来ないの?"って怒られたw」
matz「今から10年何かを続けることで、10年先も通用する人になれる」

このへんで本エントリのまえがきに書いた、前回生matzを見た2009年のJapan Linux Symposiumで Linus Torvaldsが
"毎日10時間10年続けたらなんらかの人になれるよ"って話してたのを思い出した。やっぱ同じなのかなぁとか。

matz「そして"楽しさ"。プログラミング楽しいとずっと思ってて楽しくないと思ったことはない。このポイントは私の場合"万能感"。プログラミングって"やれば出来る"が結構通用する。在りし日の万能感を取り戻せる感じ」
matz「このへんが"世界変革の源泉"。多分この先の世界を変えるのはIT。プログラム書かないと世界は変わらない。"Change the World! Happy Hacking!"」

その後少々時間があったようで質疑応答少々。tsudaってると質問考える余裕ないのが悔しいとこだなぁと思いつつメモ。

matz「Rubyの場合、いいとは言われるけど使われない状態が10年ぐらい続いた。愛されるプロダクトを作って継続することが、Rubyについては成功の秘訣だったかな」
質問「世界の皆が使えよ!と思って作ってた?自分のために作ってた?」matz「僕は自分のためだけに作ってた。完全にselfish」

最高に面白かった。まつもとさんのトークは技術者として元気出ますね。

トークライブ後にキャッキャと@fukuyukiさんにまつもとさんとのツーショット撮ってもらっちゃった、ミーハーな私でした。

そしてblog書いてて全然後のセッション聞いてませんごめんなさい(∀`*ゞ;)テヘッ

Evernote APIを使ったAndroidアプリを作る(1)

2012年4月7日土曜日

超長期間積みタスクのうちのひとつ、Evernoteを使ったお金メモアプリを作ろうというもの。

アイディアとしては「日々使ったお金をもとに家計簿を付けていくってのは続けていくのが結構しんどいけど、単純なルールでメモを取り続けること自体はそこまで大変じゃないのでは?」というところからスタートして「じゃあメモを書く先はEvernoteにして最低限の機能を用意し、携帯からでもPCからでも簡単に書ければいいよな」と辿り着いて自分の使ったお金のメモをEvernoteに取り始めたのが去年の4月4日。実にまる一年経ってる。
最初の読みは当たっててEvernoteにお金メモをつけていく事自体は今も続いてる。続けて一周年記念にそろそろAndroidから簡単にお金メモをいじれる(まずは投入出来る)アプリを作ろうという次第。


これ、そもそもEvernoteのAPIキーを取得したのは2010/09/19で実に1年半も何ら形にしてなかったとか泣けてくる。

まずは最低限の機能を持つメモ投入アプリを作る中でEvernote APIのクセに慣れていこうと思い作業開始。
パッケージ名はjp.muo.moneynoteにしつつ調べてみると名前被ってそうなのでアプリ名は後からもうちょい考えることにする。

使うのはEvernote Cloud API。
http://dev.evernote.com/documentation/cloud/ このへんから入手する。元々はWebサービスAPIとアプリAPIという区分がされていたのだけど、どうもそれらは統合されて 一方でプラットフォームへのライトな統合を行う(AndroidだとIntentベースでのEvernoteアプリ連携をする)Local APIというのも用意されてる。Cloud APIについて、執筆時点での最新版は1.21。

このSDK一式にはAndroid用のバインディングが含まれているので、クラスツリーを丸ごと新規作成したプロジェクトに投入。いきなりエラー出る。log4jが必要なので http://www.slf4j.org/index.html から入手し、今回の場合slf4j-log4j12-1.6.4.jarとslf4j-api-1.6.4.jarを参照に追加した。
thriftも足りないと言われるので http://thrift.apache.org/download/ ここから入手。ソースしか入ってないっぽいので thrift-0.8.0/lib/java ディレクトリにて
$ ant
でビルド。build/ 以下にビルド結果が出力されるけど、この中の lib/ ディレクトリにlog4jとか含まれてるな。こっち使ったほうがいいかも(今回は既にインポートしたものを使った)。

まだエラー出る。Android用ライブラリは参照設定したけどJava用のEvernoteバインディング自体を参照してないからっぽい。evernote-api-1.21内の java/lib/ 以下を見ると色々ある。そもそもlibthrift.jarとかlog4j-1.2.14.jarとかも含まれてる。依存関係的にここのライブラリ使うのがいいかも、と思いつつ先にインポートしたのをゴリ押ししたところ、案の定thrift周りで存在しないメソッドがあると怒られる。少々インポートするライブラリを整理。
  • evernote-api-1.21.jar
  • libthrift.jar
  • log4j-1.2.14.jar
  • slf4j-android-1.5.8.jar
のみでOK。
次に、ざっくりとサンプルを読む。evernote-api-1.21/android/sample/HelloEvernote/src/com/evernote/android/sample/HelloEvernote.java は、Cloud APIではなくLocal API(端末にインストール済みのEvernoteアプリをIntentで叩いて各種機能を実現するもの)の模様。これではなくEDAMベースでのデータ交換を行う evernote-api-1.21/android/sample/HelloEDAM/src/com/evernote/android/sample/HelloEDAM.java を読む。
sandbox環境に接続してメモ付きで画像をノートとして保存するための機能が一通り書かれてる。ログイン系は基本的にそのまま使うとして、今回実装したい機能は

  • ノートブックの一覧 を取得する
  • ノートブック一覧をユーザに対して表示し、うち1つを選択してもらう
  • 選択したノートブックのメモ一覧を取得し、コンテンツをローカルに取り込む
  • 任意のタイミングでノートブック内の一覧を更新出来るようにする
というもの。APIについて親切なチュートリアルなどは特に無いので、http://dev.evernote.com/documentation/reference/ のリファレンスを眺めてそれっぽいメソッドを探していく。
ノートの一覧は listNotebooks だろうな。ということでこんなコードを書いた。


    private void chooseNotebook() {
        try {
            final List<Notebook> notebooks = getNoteStore().listNotebooks(getAuthToken());
            String[] noteNames = new String[notebooks.size()];
            for (int i = 0; i < notebooks.size(); ++i) {
                Notebook notebook = notebooks.get(i);
                noteNames[i] = notebook.getName();
            }
            new AlertDialog.Builder(this).setTitle("ノートを選択してください").setItems(noteNames, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Notebook selectedNotebook = notebooks.get(which);
                    setTargetNotebook(selectedNotebook);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

で、実行したところここへくる前のログインでコケて詰んだ。APIキー発行してもらってからかなりの時間放置してたのでexpireしてるかも。ということでEvernote宛の問い合わせメールを書いて本日は終了。

NOTTVのモニター機(N-06D)が届いたので遊んでみた

twitterのタイムラインでしばらく前に盛り上がっていたNOTTV。
一応モニター応募してたんだけど音沙汰ないのできっと抽選で漏れたんだろうと、すっかり忘れてコード書いてたら今日の朝唐突に届いた。
ホッカイロは昨日会社のお花見でもらいました。まだぬくぬく。

モニター期間は2012年4月8日〜2012年4月21日の2週間とのこと

ひとまず起動してみる。部屋映り込みすぎてて恥ずかしい。
防水の注意

起動

横向きだけど、ロック画面

ホーム画面。普通の構成+NOTTVって感じ。

あちこちで言われてるように、何かやろうとするとすぐに"あんしんモード"アプリが邪魔するので基本的にWebを見ることとNOTTVアプリで放送を見ることの2つしか出来ない模様。
まあそれならそれでいいやと思い、テレビ観てみる。ニュースチャンネルは基本的にTBSのニュースバードを配信してるみたい。
番組表を見て

視聴予約あるけど録画予約が無いことに愕然としつつ

ぽちぽちといじった。

一通りNOTTVアプリを触って、ニュース流しつつ「番組観ながらツイート出来ないのかー、ほったらかして期限切れたら返送しよう」と思ってたところにメールが。

ん?さっきの紙には4/8-4/21と記載あったけどこっちには4/15-4/28とある。期限過ぎて返送すると何かしら請求されたりしそうで怖くなってきたので、今日外出する時に返送することにした。ごめんね、モニター期間めっちゃ残ってるのに返送してごめんね。

とりあえず、せっかくなのでインストールされてるアプリを眺めたり、起動してみては"あんしんモード"アプリに阻まれ(ノ∀`)アチャーとしばらく遊んでみた。取扱説明書アプリも含め起動出来ないというなかなかの状態。だけどエリアメールアプリは起動出来た。

ついでにブラウザでいくらかコンテンツ見てみるかーと思いブラウジング。
Google PlayのWeb版は開けるけど、当然これだとアプリのインストールは出来ない。

アンチウィルスアプリの体験版リンクがあり、
せっかくなのでインストールリンク辿ってみた。
なんかダウンロード出来てる。

いや、インストールしたいんだってば。「設定」へ

ん…?あっさりチェックついた

その後MacにつなぐとUSBデバッグ接続されるし

adbのデバイスリストに出てくるし

スクリーンショット撮れるし

Playのアプリアップデート出てくるし

あ、mock location有効にしたらNOTTV起動蹴られた

mock location外して起動したら無事にツイート出来るし

ついでにスピードテストしてみると流石のスピード><

で、USBデバッグ有効にしてから全然"あんしんモード"が邪魔しなくなったなと思い調べてみると ご注意事項 に
次のいずれかに該当する場合には、本アプリが正常に動作しない場合があります。ただし、当社は、それ以外の場合において本アプリが正常に動作することを保証するものではありません。
  • 1ホームアプリが端末標準のホームアプリではない場合
  • 2USBデバッグ機能が有効の場合
  • 3タスクキラーアプリやアンインストールアプリ、本アプリと類似の機能を有するアプリがインストールされている場合
と記載されてた。そういうことなんだ。