2014-05-22

シリコンバレー訪問 第 3 日目

シリコンバレー訪問 3 日目の様子。

起床は 6 時半。少し早く目が覚めた。ホテルの周りを散歩。違う場所で朝ごはんを... と探し回るも、勇気を出せず、昨日と同じ Paris Baguette で食事。マンゴーとロースト・ビーフを巻いたモノをいただきます。

時間があるので、朝の散策。Cupertino City Center 発見。

噴水が綺麗。

奥には Cypress - A Kimpton Hotel。ホテルの前にある噴水も綺麗。シリコンバレーの朝は日刺しはあるけど、乾燥していて、むしろ涼しい。水の音も心地良い。こんな場所で、まったり出来たらイイね。


Facebook & Google

車でピックアップしてもらって、Facebook 本社を見る。

社屋を見ても観光するようなスポットはないのね。少しひき返すと、Facebook 本社前に「いいね」の看板。「いいね」の格好で記念撮影。

続いて、Google!!!

Apple 本社もそうだったけど、シリコンバレーで大きな敷地を持つ会社は自然が多い。

Google Street?

大きく「Google」とロゴの入った社屋!

Google 本社といっても建物は一つだけじゃない。こちらは歴代 Android のコードネーム (の像) が並ぶ社屋。


Wi-Fi ネットワークも確認。オッ! GoogleGuest なるネットワークを発見! 誰でも使えるのね〜? (使おうとしたら、接続できなかったけど。何でだろ?)

ChatWork at Plug and Play

午後は ChatWork Inc. が入っているインキュベーション・センター Plug and Play に戻ってブレスト。

ChatWork Inc. でインターンしている人達と自己紹介しながらランチ (Plug and Play には食堂も付いている)。午後一杯はブレストの続き。

晩ごはんは、社長宅にてブリの照り焼きを頂く。久しぶりの白ごはん。久しぶりのお味噌汁。ホッと一息。

Untitled

食後は雑談に花が咲き、ホテルに帰ったら AM 1:00 を過ぎていた。

2014-05-21

シリコンバレー訪問 第 2 日目

シリコンバレー訪問 2 日目の様子。

起床は朝 8 時 (こちらは現在サマータイム)。9 時過ぎにホテルを出て近所にある Apple 本社に向かう。途中、Paris Baguette (パン屋さん) に寄って朝ごはん。お昼が近いので、サラダ・セットのみの軽い朝食。といってもボリュームはアメリカン・サイズ。

Untitled

朝食後、あこがれの Apple 本社へ。有名な「One Infinite Loop」と書かれた看板の前でポージング。アップル本社は緑に包まれた素敵な会社だった。

本社の中には、一般人でも買い物が出来る Apple Company Shop がある... ということで見学。買い物はしなかったけど、T シャツ、パーカー、帽子にマグカップ、タンブラー、鉛筆 etc. 色々なノベルティーが売っていて物欲を刺激された。

One Infinite Loop を一回りしたらお昼ごはん。IN-N-OUT というハンバーガー屋さん。アメリカンな大ボリュームかと思いきや、意外と並のサイズ。タマネギは辛いのでオーダーの時に外す方が良い、とのアドバイスもあったけど無視。タマネギありでも美味しかった。ポテトとコーラはミディアム・サイズだけど大きい。やはり、ここはアメリカだった。


昼食後は T モバイルにて、滞在中の通話手段を確保。Moto X 用の SIM を入手。Android の設定を兼ねて、ChatWork Inc. が入っているインキュベーター・センター Plug and Play を訪ねる。様々なスタートアップが小さな (?) スペースを借りて仕事をしている空間にちょっと圧倒される。写真は、Plug and Play の一階にあるコーヒー・サーバー。無料で提供。ぼくも一杯頂いた。

ここから 2 日目の行程は本気モードへ。カフェ Red Rock Cofee の一席でコーヒー飲みながらブレスト。Red Rock Coffee は IT 系スタートアップの人達が集う場所として有名 (らしい)。席についている人達は何やらディスカッションしているか、Mac を広げているかの二択。電源完備でバッテリー気にせずに開発に集中。店内 Wi-Fi もフリーで開かれていて、ウェブ・サーフィンしたり、Google Spreadsheet を開いたりする分には全然問題なし。こういう場所で自分達もブレストすることで、スタートアップの熱気に触れる。流石に本気で開発している姿を写真に撮るのは憚られたので、遠景にてカフェの様子を撮影した。

晩ごはんは、メキシカン料理のお店 Vive Sol。温かいスープを注文。スープ一杯でお腹一杯になった。鶏の肉が入っていて、スープといえども食べごたえ十分。


ホテルに帰る前に、シリコンバレーにある ChatWork 社長宅にて再度ブレスト。なかなか密度の濃い一日を送った。

PS. 五月下旬のシリコンバレーは気候も穏やかで、昼は T シャツ一枚でも、吹く風が気持ちいい。ところが、夜になるとグッと気温が下がって凍えそうになる。今日は夕食前から体が冷えて思考力が低下した。明日は、上着もちゃんと持っていく。

2014-05-20

シリコンバレー訪問 第 1 日目

ぼくが勤めている ChatWork 社の初の試みとして、シリコンバレーに来ている。目的は見聞を広めること。スタートアップが生まれ続ける地の感触を肌で味わうこと。乱暴に言えば観光とか修学旅行なのだけど、「成果」が自分達のプロダクトに現れるよう頑張りたい。

こちらの旅については、公式ブログ ChatWork Creator's Note にちゃんとした情報が載る (ぼくも書くことになる) はず。なので、当ブログでは肩の息を抜いた記事をお届けしたい。

初日は移動

成田発、韓国は仁川 (インチヨン) 国際空港経由でアメリカのサンフランシスコへ。

ツアー旅行を除けば、海外旅行は初めての経験。14 時頃のフライトに対して、11 時に空港へ到着。早々にチェックインを済ませて、両替を行なう。

Untitled

成田から仁川へのフライトで昼食。カレーのようなものの中に干し椎茸が入っていて甘くて美味しい。

Untitled

仁川空港での待ち時間はたったの一時間。とにかく広い! 急ぎ足で搭乗口付近までやって来て、ベンチに座って小休止。

Untitled

仁川からサンフランシスコへ。アナウンスが韓国語と英語だけになり、ちょっと緊張。10 時間近くを飛行機の中で過ごす。

まずは一回目の食事。ポーク。

Untitled

二回目は朝食を意識しているのかな? シリアルを選択。万国共通の味で安心。

Untitled

サンフランシスコ国際空港に下り立って、入国審査。怖かったので写真は撮らなかったよ。審査官は強面だったけど、「Thank you」と言ったら「Bless you」と返してくれた。

サンフランシスコ空港から移動。道路の外は意外と田舎っぽい。

Untitled

サンフランシスコのコワーキング・スペース「Hatch Today」の中を覗かせてもらったり、スタートアップ企業を訪問したり。着いた初日から濃い一日を送った。締めはステーキ・ハウス。300g のフィレ。

Untitled

美味。ただし、予想以上のボリュームに今もお腹がくるしい。

さてさて、明日はどんな一日が待っていることか。

2014-04-29

Google Spreadsheet で条件付書式を使ってセルに色を塗る

Excel 使いの友人が「条件付き書式」でのセル背景色を変更する、ということが Google Spreadsheet で出来ないと嘆いていたのが一年ほど前のこと。Google Spreadsheet はその機能をサポートしたのだけど、そのやり方を伝え損ねていたので、ブログに書く。というか分かり易いように YouTube で動画を撮った。

30 以下のセルは背景色を「赤」に、70 以上のセルは背景色を「青」にする設定をしてみた。

やり方を文字にも落としておく。

  1. 条件書式付きの対象としたいセルを選択する
  2. メニューから「表示形式 > 条件付き書式...」を選択
  3. 条件を「次より小さい」、値を「30」に設定
  4. 背景色を「赤」に設定
  5. 「条件を追加」をクリック
  6. 条件を「次より大きい」、値を「70」に設定
  7. 背景色を「青」に設定
  8. 「条件を保存」

ちなみに条件書式に使える条件は以下の通り:

  • 次を含むテキスト
  • 次を含まないテキスト
  • 完全一致するテキスト
  • 空白セル
  • 日付
  • 次より前の日付
  • 次より後の日付
  • 次より大きい
  • 次より小さい
  • 次と等しい
  • 次と等しくない
  • 次の間にある
  • 次の間にない
  • カスタム数式

書式には「テキストの色」と「背景色」を選択できる。

Google Spreadsheet でセルをドラッグして数を増やす方法

Microsoft Excel ではセルに「1」と入力して、そのセルをドラッグすると 2, 3, 4,... とセルの数が増えてゆく。同じことを Google Spreadsheet でやると、数は増えず「1」の入ったセルが増えてゆく。けれど、少し手を入れれば Google Spreadsheet で同じことができる。

簡単な動画を作ってみた。

最初は Excel と同じ方法。当然 1 が並んで NG となる。

次が Google Spreadsheet のやり方。

セルに「=」を入力したら増やす前のセルを選択する。今回の場合 B2。次のセルは B2 に 1 加えたものだから、B3 セルは「=B2+1」となる。

B3 セルの値は 2 になった。この B3 セルをドラッグすると 3, 4,... とセルの値が増えてゆく。

計算式を一度作らなきゃいけない点が面倒だけど、一度やり方を覚えれば難しくない。やり方に気がつかないとハマっちゃうけどね。

2014-04-27

近況・会社が引越をしました

2014-04-01、チャットワーク株式会社入社した。

最近の ChatWork 社の動きで大きかったのは東京オフィスの引越を挙げられよう。

2014-03-28 (金) に、「旧LIGオフィスにChatWorkがお引っ越し!オープニングパーティー」を開催。4/3 に引越を行ない、LIG 社のブログにも取り上げられた。

ぼくの周りの会話

転職の話を持ち出すと、こんな会話が何度も起きた:

  • 友達: 最新どう?
  • ぼく: うん、会社が引越した
  • 友達: へえ、どこに?
  • ぼく: 上野のほう
  • 友達: 通勤は楽になった?
  • ぼく: ううん。遠くなった
  • 友達: なんで遠くへ引越したの?
  • ぼく: 引越したのは、ぼくじゃなくて、会社が引越したの...

「会社が引越した」と言っているのに、いつの間にか「ぼく」が引越したことになっている。そりゃ、会社の近くに引越したいのは当然の摂理だけどね。人は、どうやら、自分の信じたいものを信じるらしい。

なので、ちゃんとブログにちゃんと書いておく。

  • 4/1 (火) 入社した
  • 4/2 (水) 引越準備
  • 4/3 (木) 引越当日
  • 4/4 (金) 新オフィスで仕事開始

入社早々新オフィスへ引越という大イベントを経験した。自分の家の引越は大変だけど、オフィスの引越はみんなでワイワイやるので楽しい。

ブログ clmemo@aka、9 周年

2014-04-27 (日) をもって当ブログ clmemo@aka は 9 周年を迎える。

2013 年を振り返ってみると、2 月末に アクトインディに入社、翌 2014 年 4 月に ChatWork へ転職。挑戦の多い一年だった。

9 年間の記事投稿数を見てみたい:

  • 2005: 328
  • 2006: 659
  • 2007: 205
  • 2008: 202
  • 2009: 217
  • 2010: 139
  • 2011: 179
  • 2012: 223
  • 2013: 170

2006 年の 659 記事は別格として、一年 200〜300 本の記事を書いてきた。去年は 170 本と平均より少ない記事数に留まった。特に 6 月を過ぎてからの記事数減は残念につきる。

ブログを長年書いている身として、インプット、アウトプットが少ない日は仕事も乗らない。去年はインプットは多いものの、アウトプットできる日が少なかった。今年は小ネタでも良いので記事数を増やしたい。

9 年目の clmemo@aka もどうぞよろしく。

ref.

2014-04-24

iphone_dev_jp feat. Ben Zotto の講演まとめ

2014-04-22、iphone_dev_jp において Penultimate の開発者 Ben Zotto 氏の講演が開かれた。

  • 日時: 2014-04-22 (火) 19:00-21:30
  • 場所: アーク森ビル 31F 株式会社ドコモ・イノベーションベンチャーズ ラウンジ

Penultimate は iPad 用の手描きアプリ。Evernote に描いた絵を保存できる。

講演では、Penultimate のパフォーマンスでボトルネックとなった「画像」の内部処理が語られた。

iOS と Evernote

Penultimate は特定のタイミングとイベントで Evernote と同期 (sync) する。Evernote API は画像のデルタ保存 (差分だけを保存する技術) をサポートしていないので、全て上書きになる。

iOS には画像を扱うメソッドが 2 つある。

  • UIImagePNGRepresentation
  • UIImageJPEGRepresentation

PNG と JPEG のメソッド。PNG は可逆圧縮で、JPEG は不可逆圧縮。

2.5 MB の RAW データをそれぞれの方式で圧縮した場合のデータが示された。使う画像は、メモのような書き物、画像的な図、そして書き物と図を一緒にした dense。

結果は、メモや図では PNG に運配が上がる (メモ: 145 KB < 155 KB; 図: 110 KB < 136 KB) ものの、dense では JPEG の方が良かった (dense: 251 KB > 191 KB)。

PNG-8

Dense を考えれば PNG より JPEG の方が好ましいか。

ここで Penultimate が扱うデータに注目してみる。Penultimate では 32bit の PNG 画像など扱わない。せいぜい使う色の数は 256。ならば、256 色のカラー・パレットを持つ PNG-8 形式を使えば画像サイズは 1/4 になる。

PNG-8 には pngquant というツールで変換できる。その結果は次の通り:

PNGJPEGPNG-8
メモ145 KB155 KB61 KB
110 KB136 KB36 KB
Dense251 KB191 KB91 KB

このように、Dense であっても PNG-8 の方が JPEG よりサイズが小さい。

補: Quantization

PNG (32bit) から PNG-8 に変換する手順を簡単に書いておく。

  1. 元の画像から色のヒストグラムを作成する
  2. 最適化されたカラー・パレットを決定する
  3. 各ピクセルに対して、カラー・パレットから最適な「色」を決める

3 番目の手順は、コードで書けばこんな感じになる。

for (pixel in image) {
  for (color in palette) {
    // 元の色に対して color が合うかどうか判定する
  }
  // 選んだ色をピクセルに貼り付ける
}

第 1 試行

Mac では 0.7 ms で実行できた。

iPad では 6 秒かかった。

遅すぎる!!

プロファイルを取ると、Quantization の手順 3. で時間を喰っていることが分かった。

第 2 試行

上記コードの内側のループを SSE のアセンブラで、外側のループを OpenMP で処理したい...

のだけど、どちらも iOS にはない。

ので、SSE の代わりに ARM NEON を、OpenMP の代わりに Grand Central Dispatch を使う。

その結果は... 5 秒だった。

The fastest implementation of a slow algorithm is still slow.

遅いアルゴリズムを最速にチューニングしても、遅いものは遅い (意訳)

第 3 試行

内側のループを外してみる。

pngquant は「どんな画像」に対しても「良い」カラー・パレットを作成する。けれど、Penultimate は手描きアプリだから描ける画に制限がある。だから、事前に「ある程度良い」カラー・パレットを作成可能なはず... というアイデア。

具体的には pngquant をオフラインで実行し予めパレットとテーブルを作成する。これらを最初からアプリの中に保存。必要な時に (都度々々作成するのではなく) ロードする。

これで実行速度は 0.5 秒になった。

第 4 試行

そして、最後の試み。予め作ったカラー・パレットを 3 次元表示してみる。

Color palette in 3D

これはまるで、立方体にテクスチャーを貼ったもののように見える。3D テクスチャーと言えば OpenGL。

3 次元を 2 次元に展開すると (ref. ボロノイ図) こうなる。

Color palette in 2D

このデータを OpenGL から使うように再コーディング。OpenGL は CPU ではなく GPU を使うことができるので (特にこの手の処理では) 処理能力の向上が期待される。

結果... 0.025 秒。

圧倒的じゃないか!!

Morals of the Story

Zotto 氏は最後に開発の肝を紹介した講演を閉じた:

  1. Find your bottlenecks with profiling
  2. Use peculiarities of your data to find opportunities
  3. Put the platform to work!

(意訳)

  1. プロファイリングでボトルネックを見つけなさい
  2. 扱うデータの特異性を有効利用しなさい
  3. プラットホームで動くようにしなさい

あとがき

iOS の話だったけど、XCode とか、UI とか、NSObject とか全く出なかった。データ最適化の手法を見せつけられた。なんか、C の世界に戻って来た気がした。

OpenGL の高速化には舌を巻いた。

最後の質問タイムで、こんな質問が出た。「何をもって、最適化の『終点』としたのか? 何故 0.5 秒で満足しなかったのか?」。Zotto 氏は「自分はエンジニアで...云々」「でも、当時はプロジェクト・マネージャーもやってて...云々」と前置きを宣わって、こうとどめを刺した。

そこに OpenGL のパイプラインがあって、数時間でやれるんだったら、試してみたくなるだろう?

2014-04-23

ダンボーのモバイル・バッテリー — アクトインディ送別会でのプレゼント その 2

cheero power plus DANBOARD version

アクトインディの送別会でよつばとのマグカップを頂いた。実はもう一つプレゼントをもらっていた。それが、ダンボーのモバイル・バッテリー。正式名称は cheero power plus BANBOARD version -mini-。

モバイル・バッテリーで有名な cheero がキャラクター・ダンボーとコラボした製品。人づてに聞いて確認していないのだけど、このダンボーは、マンガ「よつばと」で生まれたのだとか。マグカップといい、「よつばと」繋がりでプレゼントは選定されたっぽい。

ますます、「よつばと」を読まなきゃな気分になる。ネット喫茶に置いてあったかな?

コンパクトなモバイル・バッテリー

ぼくは今、2 つのモバイル・バッテリーを持っている。cheero power plus と Anker astro M3 の 2 つ。cheero が 10,000 mAh で、Anker が 13,000 mAh。

ぼくが今回もらったのは、ダンボーは mini バージョンなので 6,400 mAh。

せっかく 3 つ持っているので、サイズの比較をしてみた。

モバイル・バッテリーのサイズ比較

上から、ダンボー、cheero、Anker。どんどんサイズが大きくなっていく。バッテリー容量で言えばダンボーは Anker の半分なんだもの。納得のコンパクトさ。ダンボーは、iPhone なら 2 回は満充電できるはず。使い勝手、良いよね。

もらったものは使ってナンボ、ってのはあるけれど、貰い物を傷つきやすい鞄の中に放り込むのは抵抗があって、ダンボー君は今で待機状態。メイン機は Anker になっている。白いのが Mac や iPhone と色のマッチングが良くてね (バッテリー容量はあまり気にしていない)。

おしゃれなお出かけがあったら、ダンボーを持って行きたいな。素敵なプレゼントをありがとう。あと、よつばと、読みます。

2014-04-14

よつばとのマグカップ — アクトインディ送別会でのプレゼント 1

よつばと! マグカップ (牛・300ml)

2014-03-31 をもってアクトインディ株式会社を退職した。3/28 に会社の人達が送別会を開いて下さり、プレゼントを頂いた。そのうちの一つがマンガ「よつばと」のマグカップだった。会社でコーヒーを飲んでいたのが印象に残ったのかな?

さて、ぼくは「よつばと」を読んでいない。なぜ「よつばと」のマグカップなのか。これは、マンガも読みなさい、というお達しなのかな?

サイズは 300ml ということで、ぼくが愛用している Amazon のマグカップ (380ml) より一回り小さい。

【Amazon.co.jp限定】Amazonオリジナルマグカップ白
【Amazon.co.jp限定】Amazonオリジナルマグカップ白

今回、記事にするに当たりネットで価格を見たのだけど、これ 2,680 円もするのね! びっくり。家用に置いておこ。家ではコーヒーは飲まないけれど、サイダーを飲みながら、音楽を聴きつつ、本を読むのがぼくの至福の時の一つなので、そんな時に活躍してもらう!

素敵なマグカップをありがとう!!