Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード

2016-08-16

イスラエルとパレスチナでiOSとBLEについて講演してきた話

7月24日〜30日、「中東のシリコンバレー」と呼ばれスタートアップがめちゃめちゃ盛り上がっているイスラエルのテルアビブ、IT産業が伸びているというパレスチナのラマッラ、そしてあの聖地エルサレムにて、iOS×BLEについて話してきました。


f:id:shu223:20160816085014j:image:w300

(在イスラエル日本大使館作成のチラシ)


なにそれどういうこと?と思われた方もいらっしゃるかもしれませんが、これ、外務省の「日本ブランド発信事業」という事業の一環なのです。


こういうこともなかなかないだろうという貴重な経験をさせていただいたので、ブログに書いておこうと思います。


経緯

正式に決まったのは出発のちょうど1ヶ月前ですが、きっかけは半年以上前、昨年12月に開催された DemoDay.Tokyo #0 にまでさかのぼります。そこで「勉強しつつソースコードをオープンにしてたら海外からも仕事が来るようになった」という話をしたのですが、そこに外務省の方が来られていて、「こういうのあるんだけど興味ある?」「あります!」的なやり取りをさせていただいたのでした。


「iOSという米国産プラットフォーム上で活動してるだけの自分が日本ブランド発信なんて場違いだろう」という気持ちもありつつダメ元で応募書類を提出したところ、WHILLとかMoffとかBONXとか、日本発の魅力的なプロダクトに横断的に関わっているというところを評価されて見事採択されたのでした。


スケジュール

こんな感じのスケジュールでした。

  • 7/24 東京発
  • 7/25 テルアビブ着、エルサレムへ移動しアズリエリ工科大学にて講演
  • 7/26 テルアビブのGoogle Campusにて講演
  • 7/27 テルアビブのSigma Labsにて講演
  • 7/28 パレスチナのビルゼイト大学にて講演
  • 7/29 テルアビブ発
  • 7/30 東京着

毎日講演が入っていて、移動もあり、会食もあり、それ以外の時間は現地のスタートアップと会ったり資料の手直しをしたりしてたので、自分でどこかに観光に行くような余裕はありませんでした(後述しますが道中で名所に寄ってくれたりはしました)


位置関係

テルアビブとかエルサレムとか言っても多くの日本人にとってはなかなか位置関係をイメージしづらいんじゃないかと思うので、地図を載せておきます。


f:id:shu223:20160816084908p:image:w280


テルアビブ〜エルサレムまで車で片道1時間〜1時間半(渋滞状況による)ぐらいです。


歴史的背景とかは素人が下手に説明できない複雑さがあるのでぜひググッてみてください。。


各講演の様子

それぞれの規模はそんなに大きくはなくて、20〜40名ぐらい。しっかり細かい質問や意見を拾うことができてちょうど良い人数だったと思います。4講演とも基本的には同じテーマで話をした *1 のですが、それなりに場所も離れているので、参加者のかぶりはなかったようです。


初日:アズリエリ工科大学 / エルサレム

f:id:shu223:20160816085715j:image:w600


f:id:shu223:20160816085714j:image:w600


2日目: Google Campus / テルアビブ

f:id:shu223:20160816085753j:image:w600


f:id:shu223:20160816085750j:image:w600


3日目: Sigma Labs / テルアビブ

f:id:shu223:20160816085826j:image:w600


4日目: ビルゼイト大学 / パレスチナ

f:id:shu223:20160816090120j:image:w600


f:id:shu223:20160816090218j:image:w600



各講演やその他の活動についての報告はレポートに書いて既に外務省に提出したので、いずれサイトにて公開されるかと思います。


道中の観光

初日のエルサレムの会場への移動中に、大使館の方のはからいで旧市街に寄っていただきました。

旧市街はユダヤ教・イスラム教・キリスト教の聖地であり、嘆きの壁や聖墳墓教会、岩のドームといった各宗教縁の施設を訪れる人々が絶えない。旧市街は城壁に囲まれ、東西南北に宗派ごとで四分割されている。北東はムスリム地区、北西はキリスト教徒地区、南西はアルメニア正教徒地区、南東はユダヤ人地区となっている。現在の城壁はオスマン・トルコのスレイマン1世によって建設されたものである。城壁には北側中央にあるダマスクス門から時計回りに、ヘロデ門、獅子門、黄金門、糞門、シオン門、ヤッフォ門、新門の八つの門があり、ここからしか出入りができない。19世紀に作られた新門以外はスレイマン時代より存在する門である。(エルサレム - Wikipedia

こういうすごいところなのです。


f:id:shu223:20160725162845j:image:w600


f:id:shu223:20160725163126j:image:w600

(石造りの街並)


f:id:shu223:20160725162641j:image:w400

(嘆きの壁で講演の成功を祈る。かぶっている帽子はキッパというそうです)


観光ではありませんが、パレスチナはこういう機会でもないとなかなか入っていけない(個人の旅行でも入れるみたいですが)ので、すべてが新鮮でした。


f:id:shu223:20160728143114j:image:w600

(パレスチナのとあるレストランから見た風景)


あと、パレスチナからの帰り、かの有名な死海にも寄っていただいたのですが、ビーチに出られるゲートが既に閉まっていて、遠くの方から眺めることしかできませんでした。


大使との会食

なんと、イスラエル大使公邸にてイスラエル大使とお食事をご一緒させていただく機会にも恵まれました。


f:id:shu223:20160726210756j:image:w500


安倍総理やオバマ大統領との写真が飾られている中、恐縮しすぎてちゃんと話せるのかと心配もありましたが、非常に気さくに話していただき、ご飯も和洋イスラエル料理の折衷で非常に美味しく、至福の時間を過ごさせていただきました。


f:id:shu223:20160816093042j:image:w600


途中ポケモンGOの話題になり、帰り際にズバット(コウモリみたいなやつ)を見つけて大使とのツーショットを撮影したところ非常に喜んでいただけました。(写真は 在イスラエル日本大使館のページに掲載されています。)


治安

よく聞かれるのですが、今回の滞在中、治安について不安に感じることは一切ありませんでした。そもそも「海外危険情報」を出しているのが外務省であり、移動も行き先もその外務省や現地大使館の方々が全面的にアレンジしてくださったので、大船に乗った気持ちだったというのもあります。


が、最近ではテルアビブの平均年収が東京のそれを超えたという話もあり、普通に生活水準も高く、警備もしっかりしていることもあって、基本的にかなり平和なようです。


f:id:shu223:20160727122358j:image:w600

(とあるオフィスから見たテルアビブ市街)


旅行なり仕事なりで、またぜひ行きたいと思っています。


おわりに

行く前はワクワク感よりも「自分でいいのだろうか」という不安の方が大きかったのですが、それなりに事業の趣旨に沿った貢献もできたと思うし、僕としては大変貴重な経験を多くさせていただけたので、とにかく行ってよかったです。


本事業の実現にご尽力いただいた外務省の皆様、各講演のアレンジから滞在中の移動や食事等全てにおいてお世話になった在イスラエル日本国大使館の皆様、パレスチナ講演にご協力いただいた対パレスチナ暫定自治政府日本国政府代表事務所の皆様、どうもありがとうございました!


お知らせ

iOSDC

いよいよ今週末に差し迫った iOSDC 2016 にて、『海外のiOSカンファレンスに登壇する - 完全版』というタイトルで発表させていただきます。


ベルリンの「UIKonf」、ロンドンの「iOSCon」、サンフランシスコの「AltConf」と、今年は3つの海外のiOSカンファレンスに登壇する機会に恵まれました。


とはいえ招待されたわけではなく、CFPに自ら応募して投票・審査の上で採択された結果です。


本発表では、海外カンファレンスに参加するメリット、CFPの探し方、発表の準備、実際の登壇でうまくいったことや失敗したこと等について話します。


出番は朝イチの10:20、しかもゲストスピーカーである岸川さんの裏ということで誰も来てくれないんじゃ・・・と恐々としております。来ていただけると嬉しいです。


iOSDC Reject Conference

iOSDC Reject Conferenceにもday1、day2両方とも出させていただきます。


day1はこちらのテーマ。


day2の方は5分のLT枠で応募していて、落ちたのですが、15分枠が定員割れで空いていたので、そちらで出させていただくことになりました。


どちらもまだまだ勉強が必要な分野ですががんばって準備します。よろしくお願いします。


*1:イベントの告知内容や現地主催者の要望に応じてソースコードレベルの話までするかどうかというようなちょっとした調整はした

2016-06-01

BLEを利用した汎用ロボットコアユニット「bCore」を触ってみる

バガボンド・ワークスさんが制作・販売されている「bCore」というハックしがいのある楽しいデバイスを紹介させていただきます。


f:id:shu223:20160601000549j:image:w600


サイトには「汎用多目的超小型リモコンロボットコアユニット」とあります。少し噛み砕くと、スマホからBLEでモーターとサーボをリモコン操作するユニットです。好きなプラモデルやおもちゃがスマホから操作できるようになります。


たとえばミニ四駆1分でラジコンに改造したり、



もうちょっとメカに凝るとこんなロボットもつくれたりするようです。



現在スイッチサイエンスにて購入可能です。


以下は公式サイトの解説です。

技適対応のBLEモジュール(BLE113 )と周辺回路を組み込んだ超小型基板にファームウェアを焼きこんだ bCore と、iOS上で動くアプリケーションソフト bDriver を用いることで、誰もが簡単にiPhoneなどからコントロールできる超小型ロボットを製作できることを目的としています。


ファームは既に焼かれているので、ユーザーはラジコンサーボとモーターと電池をbCoreに繋ぎ、スチロール素材や木材、3Dプリンタなど、好みの方法でロボットのガワを制作するだけで自由に自分のロボットを開発できます。

技適、FCC、CE対応のBLEモジュールをしようしているため、日本、アメリカ、EU各国での使用が可能です。


キットの構成

某青い本を書いた縁で、バガボンドワークスさんよりbCore と、サーボやモーター等の互換パーツ一式をいただきました。


f:id:shu223:20160531153403j:image:w600


上記の各パーツもbCore同様に販売ページにて購入できます。キットとしての販売も予定されているそうです。


bCore をとりあえず試してみる

以下、まずはミニ四駆等の外部パーツを必要としない最小構成でbCoreを体験する手順を紹介します。すべてハンダ付け不要です。


ステップ1: iOSアプリからbCoreに接続してみる

まずは最初の一歩として、「bCoreにバッテリーボックスを繋げてアプリと接続する」ところまでをやってみます。


電源を繋げる

bCore の裏面を見ると、"Bat" と書いてあるところがあります。



該当するコネクタにバッテリーボックスを繋げます。一方向でしか挿せないので、極性を間違える心配もありません*1


f:id:shu223:20160531162621j:image:w500


これだけでもうBLEのペリフェラルデバイスとしての動作は開始しています。


(電源についての詳細 from 公式ページ)

bCoreの電源接続コネクタは、1.25mmピッチの2ピンコネクタ(Molex Pico Blade)で、入力可能な最大電圧は5.5Vとなっています。

アルカリ乾電池3本直列(4.5V)、LiPo電池1セル直列(3.6V)、LiFe電池1セル直列(3.3V)、カメラ用リチウム電池1本直列(3.0V)などが利用できます。ラジコンサーボやモーター駆動をするため、ある程度電流放出能力のある電池が必要になります。そのためボタン電池は使うことはできません。

なお、ラジコンサーボやモーターを繋がない場合は2.3V程度の電源での使用が可能です。


bDriver からスキャン・接続

bDriver というiOSアプリが公開されているので、ダウンロードします。


起動するとこんな感じの画面なので、


f:id:shu223:20160601114625j:image


"Start Scan" ボタンをタップしてスキャン開始します。


上述した通り bCore は電源が供給された時点でアドバタイズを開始するので、すぐに発見されリストに表示されます。


f:id:shu223:20160601114712j:image:w426


発見した bCore を選択すると接続が確立され、次のようなコントロール画面に遷移します。


f:id:shu223:20160601114741j:image:w426


たったこれだけです。要は、バッテリーボックスをコネクタに挿し、アプリをダウンロードして繋げるだけです。


ステップ2: サーボを動かしてみる

とりあえず動かしてみることに成功したところで、「ロボットコアユニット」らしく、キットに同梱されていたサーボをアプリから動かしてみます。


bCore にサーボを接続する

bCore 裏面に Srv1〜4 と書いてあるので、


f:id:shu223:20160531162222j:image:w400


該当するコネクタにサーボを接続します。


f:id:shu223:20160531171742j:image:w500


で、再び bDriver で接続して Srv1〜4 とあるスライダーを操作すると・・・


f:id:shu223:20160601115117g:image


サーボをスマホからリモコン操作できました!


ステップ3: モーターを動かす&LEDを光らせる

サーボと同じ(裏面で確認して該当するコネクタに挿すだけ)なので、全部繋げた写真だけ載せときます!


f:id:shu223:20160601000549j:image:w600


ミニ四駆をbCoreでラジコン化する

ここからが bCore の楽しいところです。サーボやモーターを動力として、色んなおもちゃやプラモデルをスマホから操作するように改造できるわけです。


バガボンドワークスさんのサイトにはいろんな作例が掲載されてまして、たとえばこのミニ四駆をラジコン化するレシピを見ると、

改造するのにプログラミンや電子回路の知識は不要です。

本当に1分でできます。

とあります。


必要なもののリストも「ハンダゴテ」「テープ」といったレベルで載っていて、手順も写真付きで非常に丁寧に書かれていて、本当に電気回路や電子工作の知識がなくてもこの手順通りにやればできそうです。


僕はいま諸事情で出先(海外)でこの記事を書いているのですぐに試せないのですが、ミニ四駆・ハンダゴテ・半田を既にAmazonで注文して家の方に送ってあるので、帰宅次第試してみたい所存です。


自作アプリに組み込む

GATTが公開されているので、Core Bluetooth を利用してアプリを自由に作成することも可能です。


このあたり、ソフトウェアエンジニアにとってはIRKitと同様のロマンがありますね。


下記ページからiOS向けのサンプルコードがダウンロードできます。


また同ページでは参考書籍として下記がオススメされています。


iOS×BLE Core Bluetoothプログラミング
堤 修一 松村 礼央
ソシム
売り上げランキング: 21,212


なお、iOSのBLEアプリ開発を真面目に学びたい人は、

iOS×BLE Core Bluetoothプログラミング 堤 修一 (著), 松村 礼央 (著)

断然おすすめです。bCoreの開発にもこの本を利用させていただきました。


・・・いや、結果的にステマっぽいですが、僕がバガボンドワークスさんと連絡を取り合い始めるずっと前にこれは書かれてたんですよ。。ほんとに。。

(エゴサーチしててたまたま発見しました)


ファームウェアを書き換える

ファームウェア書き込み用の端子も用意されているので、GATTを自分流に変えたいとか、何かしら特殊な処理をbCore側でしたい場合に、自分で書き換えることもできます。


BLE113なのでBGScriptやファーム書き込み等の開発環境をMacに構築したい場合には下記記事も参考になるかもしれません。


おわりに

大変ワクワクする、大人も子供も楽しめそうなプロダクトではないでしょうか。早く家に帰って僕のアバンテJr.をラジコン化したいです。


*1:間違えられませんが、仮に間違えても保護回路が入っているので壊れないそうです

2016-05-30

ベルリンとロンドンのiOSカンファレンスで登壇した話 #UIKonf #iOSCon

先週、ベルリンで開催された UIKonf と、ロンドンで開催された iOSCon の両カンファレンスにスピーカーとして参加してきました。


f:id:shu223:20160529205622j:image:w600

UIKonfの会場(登壇してるのはDaniel氏)


まだロンドンにいまして、興奮冷めやらぬうちに記事に書いておきたいと思います。


UIKonf、iOSCon とは?

どちらもiOSの開発者向けカンファレンスです。


同時期の開催で、同じEU内でのカンファレンスではありますが、それぞれ全く関連のない母体によって運営されています。*1


f:id:shu223:20160530065207j:image:w600


チケット代はそれぞれ、

  • UIKonf:€450+VAT19%(約66,000円
  • iOSCon:£650(約101,500円)+VAT(いくらか忘れた)

と、日本の感覚からいくとかなり高額です。


UIKonfの方は著名ブログ "RAYWENDERLICH" の "Top 10 iOS Conferences" でも紹介されていて、チケットも早々にソールドアウトとなった人気カンファレンスです。


登壇の経緯

UIKonfは登壇者は計18人、iOSConは計20人です。それぞれカンファレンス側から招待された著名スピーカー陣が何人かいますが、僕は招待されたわけではなく、自分で応募して、投票・審査の上で採択されたCFP枠です。


なお、CFP応募・採択までの経緯の詳細は、下記記事にまとめてあります。


準備

僕はそもそも英語にずっと苦手意識があり、WWDCでSFに行ってもセッションを聞きに行かずにネットで(日本にいても見れる)PDFを見てたり、スカイプ面接はトラウマになってたりするほどでした。


ただ今回はどちらのカンファレンスもお客さんは高額のチケット代を払って話を聞きにくるわけで、英語はしっかりやろう、ということで英語の短期指導やってるところをググって探したりしていました。


そんな中で知り合いの方から紹介していただいたのが、ジョセフ・テイム先生。TEDxTokyoとかのコーチもされている方で、技術もわかる、そして信頼している人からの推薦、ということでパーソナルコーチをお願いしました。 *2


f:id:shu223:20160530040355j:image:w540

(レッスン中の様子@先生の自宅)


もともとは僕の方でスライドとTranscript(話す内容の原稿)をつくりあげて、先生の前で練習して変なところを修正してもらう、というつもりだったのですが、実際にはなかなかスライドもTranscriptも完成しなくて、下記のサイクルをぐるぐる回しながらで進んで行った感じです。

  1. スライドの改善作業
  2. 先生のレッスンで新しいスライドにTranscriptをつけていく
  3. 別の誰かに聞いてもらう(改善点が浮き彫りになる)→ 1に戻る


「誰かに聞いてもらう」という話でいうと、知り合いのiOSエンジニアが集まるもくもく会がちょうど出発前日に渋谷dots.さんであり、そこで突発的に発表練習をさせていただく機会もありました。


f:id:shu223:20160530075209j:image:w600

(Photo by Himiさん)


try! Swiftを主催されたRealmの岸川さんにはそもそも一度フィードバックをもらいたいと思っていたし、僕より英語が堪能な方々ばかりだったり、dots.さんは講演の場として臨場感ありまくりだったりで、大変ありがたかったです。


登壇@UIKonf

5/23、いよいよ初の登壇。冒頭の写真の通り、UIKonfは体育館みたいな吹き抜けのでかい会場で、ドイツっぽい古い感じの造りでものすごく素敵な場所でした。


ライブストリーミングがあり、恥を晒すことになるかもしれないのでシェアするか迷いましたが、こんな機会も二度とないかもしれない、と思い発表直前にTwitterでシェア。

おかげで日本からも結構多くの方が観ていてくれたみたいです。


緊張は意外とそんなにしませんでした。Maxの緊張を100とすると10か20ぐらい。


f:id:shu223:20160530040218j:image:w600

(UIKonfのステージより。Photo by 他の登壇者の方)


f:id:shu223:20160530040652j:image:w500

(舞台袖からスタッフが撮ってくれた貴重な一枚)


結果的には大成功で、途中で笑いも起きたし、終わった後いろんな人から「まじで良かったよ!」と声をかけてもらいました。他の登壇者の方々からもお褒めの言葉をたくさんいただきました。*3


下記に動画が公開されています。



とはいえ実は質疑応答は大失敗で、最初の質問への回答はイケてなかったし、2つ目の質問はまったく聞き取れず、テンパってしまいました。終了直後はそれで凹んでたりもしてたのですが、今思えば謝りつつももっと堂々としてればよかったなと。そういうことも経験したからこそ学べたことなので、とにかく良かったです。


f:id:shu223:20160530055219j:image:w540

(スピーカーへのプレゼントで「アーキテクチャ」のレゴ(ベルリン仕様)をいただきました)


登壇@iOSCon

出番は5/26、UIKonfの最終日には出ずにロンドンに移動して、その翌日にはもう発表でした。


基本的には同じ内容なのですが、UIKonfは持ち時間30分、こちらは45分なので、少々スライドを付け足し、デモも用意して臨みました。


(こちらの会場は打って変わってオフィス的な雰囲気)


こちらは・・・質疑応答こそUIKonfのときよりまともにできたものの、講演全体としてはUIKonfの方が出来が良かったかもしれない、と思っています。


話し方、内容、いろいろ具体的な反省点はあるのですが、どうダメだったかを一言でいうと、オーディエンスとの一体感を醸成できなかったという点につきます。


質問はそこそこあったので伝わっていたとは思いますが、UIKonfのときのような、「めっちゃよかったよー」みたいな興奮を伴う反応がなかった。発表中も終始淡々としたムードだったので、冒頭からずっとお客さんの関心というかテンションを掴み損なっていた気がします。


良かった点と、反省点

良かった点

今回の発表内容を構築するにあたって一番悩ましかったのは、とっつきやすさと深さのバランスです。


Core Bluetooth を使ったことがあるiOSエンジニアは世界にいくらでもいると思いますが、「ちゃんとエンドユーザーの手に渡った」ハードウェアプロダクトに「がっつり手を動かす立場で」「複数案件」関わったことがあるiOSエンジニアとなると世界でもまだそれほど多くはないと思っていて、そここそが僕のプロポーザルが採用されたポイントなわけで、そういう「僕ならではのバックグラウンド」を活かした話をしないと、わざわざ海外から呼んでくれた意味がありません。


とはいえBLE/Core BluetoothなんてiOSエンジニア全体から取ってみればやはりニッチな話。いきなり「BLEの経験がある人だけがわかるディープな話」をしてしまうと多くの人の脳内で「この話は自分には関係ないな」枠に分類されてしまいます。


というわけでこだわったポイントは、

  • BLEがわからない、Core Bluetooth に興味がなくても楽しめる
  • たくさんの実案件を経験してきたからこそ話せる

という(一見)相反する2つの要件を満たすこと。


そのために構成やら図解やらデモ動画やら何度も何度も改善を繰り返して今の形になりました。それなりのアプリを1つ作れるぐらいにはスライド作成に時間をかけたと思います。



で、このこだわりポイントはUIKonf(@ベルリン)ではめちゃくちゃ狙い通りにヒットしました。講演がシングルトラック(同時に複数の講演が行われることがない)なので、もともとBLE/Core Bluetoothに興味がなかった人も巻き込んで、多くの人に "really great" と言ってもらえました。


反省点

一方iOSCon(ロンドン)では講演がマルチトラックで、しかもサブ会場なので、そもそも興味のない人は来なかったんじゃないかと思います。


f:id:shu223:20160530041220j:image:w300

(iOSConスケジュールより抜粋)


で、お客さんは多くはなかったし、そんな中で僕は柔軟にアドリブでお客さんの気持ちを掴んだりすることもできず、前述の通り淡々とした雰囲気のまま進めてしまいました。



ひとつやればよかったなと思うのは、もっと非経験者も興味を持てるタイトル・概要にすること。タイトルが "Practical Core Bluetooth" だと、Core Bluetoothに興味がない人がわざわざ選ぶことはあまりないんじゃないかと思います。プロポーザル提出時点ではこの辺のことがまだ見えてなかった。


あと、何度も同じ話をしてると自分自身のテンションが乗らなくなってくる、というのもあるので、そういうページはどんどん削除して、自分も話していて楽しいものに差し替えていく、とかも必要。


try! Swift では多くの登壇者がポケモンを題材にしていてその度に笑いが起きていたのは記憶に新しいところですが、今回 iOSCon でも @ayanonagon さんの "Boundaries In Practice" の話を聞く機会があり、そこにはポケモンの影はなく、掴みの話もアップデートされていました。その国の文化・カンファレンスのカラー・他の登壇者の発表といった文脈を汲んで、発表内容に少しでもアレンジを加えて最適化するのは大事だなと。


その他のアクティビティ

UIKonfはカンファレンスとして素晴らしく、参加者みんなの一体感があったのですが、その理由のひとつとして、開催日前日の「Social Event」が非常に良く機能していたと思います。


「Social Event」は、自転車ツアーやビール工房ツアー、ボートトリップツアー等から選べて、僕は(英語コミュニケーションが未だに怖いし発表の前日なのでスキップしようかと迷いながらも前々日ぐらいに)自転車ツアーに申し込みました。


f:id:shu223:20160529201310g:image


結果的にめちゃめちゃ参加して良かったです。


まず、自転車ツアーなので、そんなに周りの人とずっとしゃべってなくても良くて、たまーに横に並んだときにちょっとしゃべることがある、ぐらいの緩いコミュニケーションが僕にはちょうど良かった。


で、それぐらいでも効果は絶大で、翌日の本編では数百人の参加者が訪れるわけですが、そんな中で前日に数時間一緒にチャリこいだ人と会うと、妙な親近感がありました(しゃべったのは少しだけだとしても)。


あと、開催前夜にはキックオフパーティー、初日の夜にはスピーカーディナー、2日目の夜にはアフターパーティ*4と、毎晩何かしらの懇親会がありました。


f:id:shu223:20160529201311j:image:w600

(スピーカーディナー。ネイティブ && 超饒舌な人達に囲まれて全く話についていけず。。)


iOSConも開催前夜にスピーカーディナー*5、初日の夜にパーティがありました。


コスト

旅費・滞在費はカンファレンス側が出してくれました。なので、日本 ↔ ベルリン、ベルリン ↔ ロンドンの飛行機代、(会期中の)ベルリンとロンドンでのホテル代はかかっていません。もちろんカンファレンスのチケット代もかかっていません。


ただ、僕はフリーランスなのですが、前述の通り5月はほとんどスライド作成と練習に費やしました。結局仕事をしたのは2人日。僕は定期収入的な契約は一切してないので、5月の収入は2日分だけです。


得られたもの

そもそもカンファレンスに応募したのは、フリーランスとしての活動の場を海外に広げるための「入り口」を増やすための活動の一環でした。

ベルリンだけでなくシリコンバレー等に行っても毎回感じることですが、無力感が半端ないです。仕事をやってみたりハッカソンに出てみたりして、技術的に通用しないということはないと思ってますが、誰も僕のことを知らないし(知名度以前に知り合いがいないという意味で)、そういう僕がベルリンに行ったところで、現地の他のスタートアップの方から「会いたい」とか言われることはありません。


(中略)


僕がニュースとかで海外のそういう系の魅力的なプロダクトを見るタイミングではもう遅くて(メディアに出て話題になっているということはある程度開発が進んでいるか完了しているケースが多い)ファウンダーが資金調達して本格的に開発をしようとするタイミングであちらから見つけてもらえるようにならないといけない。


で、LinkedIn や AngelList で人を探す場合は大抵「住んでいる場所」でフィルタされてしまうので、英語ブログという「海外スタートアップに自分を見つけてもらうためのチャネル」を用意する必要があるなと。


僕のGitHubアカウントは今でも多少そういう感じの機能をしてくれてますが、(後略)

(以前書いた記事より)


で、具体的に考えていた「海外カンファレンスに登壇するメリット」は以下の通りです。

  • ログに残る
    • 英語でググッて見つかる「入り口」になる
  • 著名な常連スピーカーの方々に自分の話が届く
    • 別のカンファレンスにも呼ばれるかもしれない
  • 海外から仕事がくるきっかけになるかもしれない
  • 海外に行けるのが嬉しい/楽しい
    • 旅行もいいけど個人的には本業と絡んだほうが楽しい
    • 航空券代・ホテル代は出る(カンファレンスによるかもしれない)
  • 英語を「必死で」練習する機会になる
    • 30分ぶんの、自分の得意な分野について話す英語表現の「引き出し」 をつくる機会にもなる
  • 経歴に書ける

このうち、ログに残る、海外に行ける、英語表現の引き出し、あたりは参加した時点で自動的に達成されたわけですが、他の著名スピーカーが別のカンファレンスにも推薦してくれそうかというと、それにはまだまだかなと。


また「海外から仕事がくるきっかけになるかもしれない」という点については、今のところその気配はありませんが、仕事の話というのはいつでも忘れた頃に思わぬところから来るものなので、いつか今回の発表に起因する話が来るかもしれない、とは楽観的に思っています。ドイツから仕事が来るようになったときもそうでした)


経歴に書ける、というのは忘れてたので後でレジュメやLinkedInプロフィールに追記しておこうと思います。


あと、上記の目論見には書いてませんでしたが、何よりも良かったのは、「海外のカンファレンスに応募し、登壇する」という選択肢が自分の中で増えたことです。


未体験のものはいつでも何だって恐ろしくて、振り返ってみれば日本の勉強会に初めて参加したときは、参加すること自体が怖かったし、周りの人に話しかけることもできず逃げるように帰ったわけで、自分が発表するなんて考えられないことでした。こうやってひとつひとつ恐怖心を克服してコツコツ前進してきたので、(クオリティはまだまだですが)「できること」がまた増えて前進できたことが嬉しいなと。


評判

Twitterより


まとめ

書きたいことをずいぶん端折ったのですがそれでも長くなってしまいました。思い出に残る体験としても、キャリアの面からも、スキルアップの面からも、すごく良い経験ができたと思っています。


素晴らしいカンファレンスを主催されたオーガナイザーの方々、コーチしてくれた先生、未熟なプレゼン練習につきあってくれた方々、皆様に感謝いたします。



ちなみに来月、もうひとつ海外カンファレンスでの登壇が決まりました。

こちらもマルチトラック型、しかも(最近もらったスケジュールによると)とある百戦錬磨のスピーカーの裏・・・がんばります!


*1:僕のプロポーザルが両方で受理されたのもたまたまです。実際、両者の審査フローはまったく違っていました。

*2:ちなみに先生、東京マラソンに毎年仮装して出ていて、すごく有名な方です: http://josephta.me/

*3:気の利いた返しができなかったことが悔やまれますが。。Thank you しか言えなかった。

*4:会場が遠かったのとまだロンドン講演が控えてたので参加せず

*5:所用で参加できず

2016-04-20

海外のカンファレンスに登壇する - 応募編 #potatotips

本日、potatotips #28(iOS/Androidの開発Tips共有会)にて標題の発表をさせていただきました。



iOSのカンファレンスに自分で応募して、採択されるまでの話です。


以下、スライド内容の抜粋。


はじめに

iOSのカンファレンス、UIKonf 2016(ベルリン), iOSCon 2016(ロンドン) に登壇させていただくことになりました!

  • どちらも国内外からスピーカーが来る国際カンファレンス
  • チケット代
    • UIKonf:€450+VAT19%(約66,000円)
    • iOSCon:£650(約101,500円)
  • どちらも登壇者は計18人

f:id:shu223:20160420232101j:image:w600


・・・と言っても

  • 招待されたわけではない
  • 自分で応募して、投票・審査の上で採択された

アジェンダ

1. なぜ応募したか

2. CFPをどう見つけたか

3. Proposalをどう書いたか

4. 審査過程はどうだったか

1. なぜ応募したか?

国際カンファレンスに登壇する(僕にとっての)メリット

  • ログに残る
    • 英語でググッて見つかる「入り口」になる
  • 著名な常連スピーカーの方々に自分の話が届く
    • 海外から仕事がくるきっかけになるかもしれない
    • 別のカンファレンスにも呼ばれるかもしれない
  • 海外に行けるのが嬉しい/楽しい
    • 旅行もいいけど個人的には本業と絡んだほうが楽しい
    • 航空券代・ホテル代は出る(カンファレンスによるかもしれない)
  • 英語を「必死で」練習する機会になる
    • 30分ぶんの、自分の得意な分野について話す英語表現の「引き出し」 をつくる機会にもなる
  • 経歴に書ける

メリットだらけ


2. CFPをどう見つけたか

CFPとは
  • Call for Proposal (Papers / Participation)
  • 登壇者を募集してます、の意味
カンファレンスの探し方
CFPを見つける
  • カンファレンス開催予定はわかっても、CFPは見つけづらい
  • 招待講演だけ(CFPなし)のカンファレンスも多い

探し方

  • ググる
    • "ios conference 2016 "cfp""
    • "ios conference 2016 "call for""
  • Calls for participation | Lanyrd
  • カンファレンス常連の方々のTwitterアカウントをフォローしておく
    • 中の人とつながってたり、中の人だったりするので、たまにCFPのツイートが流れてくる


3. Proposalをどう書いたか

当初案

「いつもの勉強会」と同じように話したいネタを棚卸し

  • iOS×機械学習
  • OpenCV 3
  • iOS×BLE
過去のカンファレンスの登壇内容を見てみた
  • [altconf.com/schedule/:title=AltConf 2015 Schedule]
    • タイトルと概要が一覧で見れて参考にしやすい
  • WWDC
    • iOSエンジニアには馴染み深い
  • その他諸々
  • (※応募当時は try! Swift 開催前)
歓迎されるっぽいTALK
  • スピーカーがその分野で十分な経験がある
    • 「このライブラリをちょっと触ってみました」的な話はさすが にない(そのライブラリの作者で、設計思想等も含めて話せる場合は別)
    • 「その人ならでは」の話(バックグラウンドが活きる話)
  • 体系立てて話せる
    • ↔ 雑多な、箇条書き的な話

これと自分のネタを照らしあわせてみると・・・

  • iOS×機械学習
  • OpenCV 3

→ 専門家でもなければ、 がっつりやった経験もない。発表のプレッシャードリブンで 「これから」勉強したいだけ

  • iOS×BLE

→ (BLE自体にめちゃめちゃ詳しいわけじゃないが、)iOSエンジニアとしてハードウェアプロジェクトに関わった経験数としては多い方だと思う。書籍も書いたので多少は体系立てて話せそう。

完成品

f:id:shu223:20160420203729p:image:w500


4. 審査過程はどうだったか

UIKonf
  • 匿名フィードバックがあり、Proposalをアップデートできる
  • 匿名投票(GitHubアカウントでログイン/8つ選択)
  • 運営によってさらに絞り込まれる
  • 採択率 8 / 60ぐらい?(スピーカー全18人中8人がCFP枠?)
iOSCon
  • 運営による審査
  • 応募数不明
  • 登壇者計18人、うち招待講演は6人(スケジュールが単独で組まれている)

まとめ

  • なぜ応募したか
    • フリーランスとしての海外進出の足がかり
    • 英語の練習
    • 海外に行きたい
  • CFPをどう見つけたか
    • ググる/常連スピーカーをウォッチする
  • Proposalをどう書いたか
    • 過去のカンファレンスを参考にしつつ持ちネタを絞り込んだ
  • 審査過程はどうだったか
    • カンファレンスによって色々(投票/運営による審査)

おわりに

準備と練習をしっかりして臨みます!



以上、スライドより。


主催/会場提供のエウレカさん(広くて天井高くてものすごい良かった)、登壇者のみなさま、参加者のみなさま、ありがとうございました!


2015-12-12

Googleリポジトリのコントリビュータになりたくて19日間粘った話

「Google リポジトリのコントリビュータです」って言えたらかっこいいなぁというミーハー精神からプルリクを送り、却下されそうになりつつも粘ってマージしてもらって CONTRIBUTORS に名前も入れてもらえた(まだ世界で9人しかいない!)、という経緯について、嬉しいので書いておこうと思います。


google/eddystone リポジトリ

Google が提唱しているビーコン規格、「Eddystone」というものがありまして、これは Apple の iBeacon の対抗規格となるわけですが、その売りのひとつとして、「オープン」である、という点があります。


そんなわけで、Google社のリポジトリ google/eddystone にて、その規格やサンプルコード、関連ツール等が公開されています。


最初のプルリク

先日の海外案件にて iBeacon をいじっていたときに、とある「クローズドの壁」にぶつかり、Eddybeacon も試してみるかー、という話になったのが発端です。


で、下記記事にも書いたのですが、Google の Eddystone リポジトリに置いてある iOS 向けのサンプルが不完全で、肝心の Eddystone-URL フレームタイプがサポートされていない、という状態でした。


Eddystone の仕様について勉強しつつ Google のコードを読んでいるうちに、「自分が実装するならこのへんにこう書くな」というのが思い浮かんできて、それと冒頭に書いたようなミーハー心も手伝って、コードを修正してプルリクを送ってみました。


Travis CI のテストが通らない・・・

こんな感じで failed になってしまいました。

さっくりあきらめようかとも思いましたが、ログをよく見ると自分がやった修正と全然関係ないところで引っかかっていて、他のプルリクの自動テスト結果を見ると同じログが出ていたところもあったので、コミットログからコミッタらしき人に連絡をとってみました。

Hi, my pull request could not pass the check by Travis CI, however this error seem not to be caused by my changes. Please confirm my changes don't cause errors and merge. Thanks.

(このエラーって僕の修正のせいじゃないと思うんだけど見てもらえますか?)


で、このコミッタの mashbridge さんがいろいろな人に連絡をとってくれて、g-ortuno さんという人が Travis を直してくれたのでした。


フィードバック→修正の繰り返し

プルリクの修正の中身については、marcwan さんという人がフィードバックをくれました。


「インデントは4スペースじゃなくて2スペースを使うように」とか「1行あたり100文字を超えないように」とか以外の大きいフィードバックとしては、

This pull request basically adds support for an Eddystone beacon sending out both URL and UID frames. It would be nice if we could also support just scanning and reporting for URL frames as well, even if the underlying hardware isn't broadcasting UID frames.

For this, I had thought to add a new didFindURL:(NSUUID *) method to the delegate class. IF a beacon has URL + UID, then they'll get the didFindBeacon: as they currently do, but whenever we see a URL, we could also fire a didFindURL: delegate as well (provided people are listening to it).

Should we fold in duplicates of a given URL within a certain timeframe? Probably. Maybe don't report a URL more than once a minute?

I can do this new change, or if you're feeling super energetic, you're welcome to contribute that too ^_^

というものがあり、修正イメージがすぐに湧いたしそんなに大変じゃなさそうだったので対応してpushしました。


(Eddystoneの仕様や実装の細かい話については、下記記事もご参照ください)


CONTRIBUTORS に!

そんなこんなで

Awesome, Played around with it and it seems great, thanks so much!

とマージしてくれそうな雰囲気になり、


Do you want to add yourself to the CONTRIBUTORS file too?

と、あちらから CONTRIBUTORS ファイルへ僕の名前を追加することを申し出てくれたのでした。

中身を見るとまだ9名しかいない(2015年12月現在)のでこれはかなり嬉しかったです。



おわりに

そんなこんなで、最初のプルリクから19日後に、google/eddystone リポジトリに自分のソースコードをマージしてもらうことができました。といってもほとんどは待ち時間で、そんなにすごいやりとりがあったわけではないのですが、Travis CI のよくわからないエラーで fail になったときに面倒ながらも問い合わせコメントを書いてみたところが分岐点だったなと。確か、いったんはあきらめたのですが、思い直してダメ元でコメント書いてみてよかったです。せっかくなので LinkedIn にも書いておこうと思います!


余談:その他の著名リポジトリへのContributions

あまり書く機会もないので、過去にマージしてもらえた著名リポジトリへのプルリクもここで掘り起こしてみたいと思います。


GPUImage

iOSにおける画像処理ライブラリのデファクトスタンダード。

バイラテラルフィルタのシェーダのパラメータの修正。修正量は少ないですが、GPUImage のシェーダのソースをいろいろと読み、バイラテラルフィルタの特性をちゃんと理解しての修正なので、ある程度の貢献ではあると思います。


appledoc

Apple風ドキュメントを生成してくれるツール。

僕の環境で落ちて使えなかったので、判定を入れただけ。あまり本質的な修正でもないので、それほど誇れる話ではないです。


LGBluetooth

Core Bluetooth のラッパーライブラリ。

LGBluetooth は元のリポジトリが消えて、別のところに移されたので、残念ながらプルリクのログは残っていないようです。が、コミットログには残っています。当時は案件でも使っていたので自分の必要な機能を追加してはプルリクを送っていました。


facebook/pop

Facebook の Paper が話題になった頃に公開され、同アプリで使われているということでこちらも話題になったアニメーションエンジン。


ソースの規模が他のアニメーション系ライブラリと比べて大きく、何をやっているんだろう、とソースを読んでみようとして、

どのクラスがどういう役割なのかを把握しようと思ったところ無駄に依存し合ってる部分が多くあって設計指針が把握しづらいと感じたので、依存関係を整理してプルリクを送ったのでした。


f:id:shu223:20151212160336p:image:w500



他にも大小あります。不具合修正や、他の人も必要になるであろう機能追加であればなるべくpull requestを送るようにしています。



2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 02 |