Tamablog

たまに更新するiOS/Mac系技術ブログ。

iOSDC 2018参加レポート

iOS開発者のお祭り的イベントであるiOSDC Japan 2018に行ってきました。前年より1日増えて計4日間のイベントで、場所は早稲田大学です。3日間参加してきました。

f:id:tamadeveloper:20180903115702j:plain

iOSDCはミニWWDCのようでした。発表内容は勉強になることが多く、またAsk The Speakerはラボみたいな感覚で気になることを質問できるので参考になることが多いです。try! Swiftの時も思ったのですがAsk The Speakerに行く人はあまり多くない印象なので、何か質問を考えて行ってみるとより多くを学べるのではと思います。

個人的に勉強になったセッションをピックアップしてみました。

iOSと(深層)強化学習

機械学習はコンピューターでやるもの、またニューロネットワークはブラックボックスみたいなもの、という自分の先入観を覆してくれたセッションです。TensorFlow LiteもCoreMLも推論しかできないので、端末側で学習できるというのは非常に新鮮に感じました。デモビデオではロボットが学習する過程を見れるようになっており、学習がどのようにロボットの行動に影響を与えるのかを視覚的に見ることができて、初めて機械学習の仕組みを理解できたような気がします。ニューロネットワークを自作してみたくなった、というツイートをいくつも見かけました。

Depth in Depth

ベストトーク賞3位に選ばれた@shu223さんの深度に関する発表です。写真の背景を飛ばして人をくり抜いたりするのに使える深度データですが、取得方法は複数あり、それぞれの使い方を解説していました。利用シーンに応じて取得方法を変える必要があるとの事です。また「具体的な事例」では、深度データで何ができて何ができないのかを分かりやすく説明してくれました。

SwiftからPythonのライブラリを使って機械学習する方法

本題に入るまでが長かったですが、個人的にはその内容がとても示唆に富んでいて面白かったです。まとめると機械学習は闇雲にデータを集めて学習させても駄目ですよ、というお話で大変参考になりました。本題のPythonをSwiftから呼び出すには、プレビュー版であるSwift 4.2の@dynamicMemberLookupと@dynamicCallableという新機能を使うとの事でした。このセッションで紹介されていたSwift for TensorFlowも面白そうです。

おまけ1

食事はこんな感じで美味しかったです。try! Swiftでは食事スペースがなくて床で食べる人も多かったのですが、iOSDCでは食堂があるので落ち着いて食べられます。

f:id:tamadeveloper:20180903115717j:plain

おまけ2

去年は台風が来ていたのでそれに比べればだいぶマシですが、今年も最終日に雨が降りました。

macOS native symposiumに行ってきた

iOSDC前日にmacOS native symposiumというイベントが開催されたので行ってきました。ちなみに2月のtry! Swiftの時も、前日にtry! macOS meet-upというイベントがありました。

主催者はCotEditorの作者の@1024jpさんで、コアメンバーが3人。どの方もすごい拘りを持つ人たちでした。ツールバーの話ではNeXTSTEPまで遡るほどです。

思わず唸ってしまうような話もたくさんありました。

  • Sketchのスクロールを爆速にするためにNSResponderのメソッドをSwizzlingするプラグインを開発。
  • Happy MacはMacOS X Jaguarから出なくなった。
  • マウスカーソルのクリック検知点は黒矢印の先である。
  • HIGではツールバーの機能はメニューでも提供すべき、とあるのに検索バーはツールバーからしかアクセスできない場合が多い。
  • Macにおけるクローズボタンは左にあるべきなのに、Chromeのタブは右で閉じる。
  • カラーボタンのアイコンのお手本はPages, Keynote, Numbersくらいしかない。

他にもツールバーのボタンを断面で見てみたり、

f:id:tamadeveloper:20180831210525j:plain

環境設定画面の「一般」用のアイコンが独自に作られすぎていることを指摘したり、

f:id:tamadeveloper:20180831210505j:plain

といったマニアックな話ばかりでした。ちなみにMacではWindowを「ウインドウ」(イは小さくしない)と書きますが、これは「基本」だそうです、、

そんな感じでまさに狂気の勉強会でした。第2回目もあるようなのでまた行きたいと思います!

(9.3更新)後日、このすごい方たちに拙作カレンダーアプリを見てもらう機会がありました。タイトルバーなどかなりカスタマイズしているMacアプリなのですが、概ね好意的な反応を頂けて安心しました。ただHIGに沿っていない細かい箇所もたくさん指摘してもらえたので(ボタンの影がない、環境設定画面で8ピクセル離れていない、etc.)頑張って修正します!

MRJミュージアムに行ってきた

三菱重工が開発する50年ぶりの国産旅客機、MRJ。そのミュージアムが昨年11月にオープンしたので夏休みに行ってきました。iOS/Macとはあまり関係ありませんが*1、とても面白かったので書いてます。子供の自由研究とかにもオススメです。

f:id:tamadeveloper:20180823171013j:plain

MRJミュージアムとは、三菱重工MRJ最終組立工場内にあるミュージアムです。完全予約制で料金は大人1,000円、高校生800円、小・中学生は500円。2ヶ月先まで予約できますが、すぐに埋まってしまうので早めに予約するのが良いです。ただキャンセルもたまに出るようです。自分の場合もある日チェックしてみたら2日後に空きができていたので、すぐに予約して行くことができました。子供でも身分証明書が必要になるのでお忘れなく。

f:id:tamadeveloper:20180823171031j:plain

当日はあいち航空ミュージアムからバスで出発となります。予約の際にあいち航空ミュージアムのセット販売券が購入できるので、こちらをオススメします。あいち航空ミュージアムも昨年の11月にオープンしており、50年前の国産機YS-11の実物が見れます。YS-11はプロペラ機ということで小型機を想像していたのですが、予想以上に立派な旅客機でびっくりしました。また今後はMRJの実機も展示される予定があるとのことで、こちらも楽しみです!

f:id:tamadeveloper:20180823171047j:plain

MRJミュージアムに話を戻すと、約1時間半のツアーで実にさまざまなことを知ることができます。滑走路に書いてある数字の意味や、MRJのデザインや色の由来、また歌舞伎の一面が取り入れられていることも学べます。また機内に施された照明やシート、荷物入れにまつわる数多くの工夫を知ると、ぜひ本物に乗ってみたくなります!飛行機の先端には多くのセンサーが備え付けられていることもまったく知りませんでした。

またツアーではエンジンのメーカーのことや炭素繊維についても紹介してくれます。自分はその後エンジンメーカーを詳しく調べて、世界には航空機向けのエンジンを作っているメーカーが3つあることを知りました。そのうちのひとつは超高級車でも有名なロールスロイス!

こんな感じで航空機やMRJに関するさまざまな知識を得ることができます。まだクリアしなくてはならない課題が多く残っていますが、MRJが世界中の大空で飛べる日が来るように応援し続けたいと思います。

*1:ちなみにアップルもMRJという製品を出していたことがあります、、

iOS 12 Programming

技術書クラウドファンディングPEAKSで「iOS 12 Programming」執筆プロジェクトがスタートしました。内容はiOS 12だけでなく、最新のmacOSやtvOSまで網羅しています。

peaks.cc

今回、macOS Mojaveの章を担当することになりました。今年は初めてWWDCに参加したのですが、ダークモードやUIKit for Macの発表はキーノートで一番盛り上がりましたので、それらを中心に実装方法などを解説します。本書を購入してくださる方はほとんどがiOS開発者だと思うので、iOS開発者にも役立つような内容にしたいと考えています。

例えばMojaveに搭載されているStockやボイスメモなどのアプリはダークモードに対応しています。つまり内部的にUIKitはダークモードに対応しており、来年にも開発者にAPIが開放される可能性がありますので、Macアプリのダークモード実装はiOSアプリにも参考になると思います。自社製品のMacアプリでもダークモード対応作業を進めていますので、その知見も共有します。

またUIKit for Macは開発者が本格的に使えるようになるのは来年になりますが、今から準備できることがいくつもあります。例えばiPhoneアプリをiPadやUIKeyCommandに対応させておくとMacへの移植が楽になりますし、またFirstResponderをコントロールすることで、上下キーやTabキーなどの操作を正しく処理できるようになります。このように今からできることについて詳しく書きたいと思います。

本書はクラウドファンディングなので多くの方からのご支援が必要となります。期限まであと一週間ほどになりましたので、ぜひ応援宜しくお願いします!

7月5日追記:無事達成しました!たくさんのご支援ありがとうございました!

WWDC2018現地レポート:総括編

WWDCも無事終了し、日本に戻って来ました。今年のWWDCを簡単にまとめてみます。

f:id:tamadeveloper:20180611085910j:plain

新機能

iOS 12は特に大きな目玉機能が追加されたわけではありませんが、iOS 12は順当なアップデートであると思います。特にARの分野では「USDZ」ファイル、サイズを測定できる「メジャー」アプリ、マルチプレイ対応の「ARKit 2」などが登場しました。またSiriのショートカット機能も便利そうです。また個人的にはアプリの利用時間が分かる「Screen Time」機能が嬉しいところです。

Macではダークモードが導入されました。セッションを聞いた限りでは対応は大変そうですが、Mojaveのリリースまでには間に合わせたいと思います。またDesktopやFinderに追加されたスタック機能やプレビュー編集機能などはなかなか使えそうです。

またMarzipanでUIKitアプリをMacに移植できるようになりました。MacとiPadは画面サイズが似ているため、結果的にiPadにも対応するアプリが増えるのではと思います。

ラボ

今回何度もラボに通って分かったことですが、一番詳しく知っている人と話すことがとても大事だと思いました。例えばUITextViewとNSTextViewに関して聞きたい事があったのですが、UIKitとCocoaのラボに行っても解決しませんでした。そこでText and Fontsラボに行ってみると、とても詳しい方があっという間に質問に答えてくれました。また別のラボでもサンプルコードを書いた本人とお話できて、詳しく見てもらうことができました。同じラボは週2~3回くらいあって違う人が来る可能性もあるので、何度も足を運ぶのは大事だと思いました。

Odwalla

WWDCといえばOdwalla(通称:小田原)ですが、今回は朝食とおやつの時間に会場入り口付近で主に配布されており、オレンジ以外にもチョコレートやフルーツミックスなどの味がありました。一応「No Added Sugar」と書かれていますが、それでもオレンジやフルーツミックスはかなり甘かったです。

f:id:tamadeveloper:20180611090504j:plain

おまけ:Lime

サンノゼの街にはいたるところにシェア電動スクーターが置いてあり、LimeとBirdという会社が提供しています。Limeを使ってみたのですが、アプリをダウンロードして電話番号(日本の番号でも大丈夫でした)を登録し、その後はApple Payで支払いができます。使用料は$1、その後1分ごとに15セントという値段です。スクーターに付いているQRコードをアプリで読み込むと使えるようになります。

使い方は簡単で、右手でボタンを押すと加速し、左手のブレーキで止まります。加速は緩やかなのでバランスを取りやすく、すぐに慣れることができました。驚いたのは最高速度が時速25キロほど出ることです。あまりスピードを出しすぎると危険かもしれませんが、基本的にはとても楽しく乗れる乗り物です。

またアプリを起動すると周辺にあるスクーターの場所を知ることができます。使い終わったらどこに置いても良いようですが、アプリで使い終わったことを知らせるボタンをタップする必要があります。

気になるバッテリーですが、調べてみるとスクーターは家庭でも充電することができ、その分お金がもらえる仕組みになっているようです。

f:id:tamadeveloper:20180609113538j:plain

WWDC2018現地レポート:ランチセッション編

水曜日からランチの時間帯にゲストによるセッションが3日連続で開催されました。ITとは違う分野の人たちの話は面白そうだったので行ってきました。ランチセッションでの撮影は禁止されていたので、今回は写真なしでお送りします。

宇宙からの考古学

「Mapping Archaeology from Space」というタイトルで考古学者のSarah Parcakさんがお話されていました。エジプトではピラミッドをはじめとする数多くの墓地遺跡がありますが、金品などを盗掘する墓荒らしが横行しているそうです。そこでNASAの衛星画像を解析することにより、まだ発見されていない墓地をいち早く見つける事に取り組んでいるとの事です。

またGlobalXplorerというサイトを立ち上げ、画像解析をクラウドソーシングできるようにした結果、ペルーで新しく遺跡を発見したり、ナスカの地上絵で新しい線を50本以上見つけたりすることに成功したとの事です。現在では機械学習を導入し、より効率的に画像解析を行っているようです。

Kid Power

ユニセフのRajesh AnandanさんがKid Powerの取り組みについて紹介していました。子供にFitbitのようなウェアラブル装置をつけてもらい、歩数によってポイントを稼ぎ、そのポイントがたまると途上国の貧しい子供たちに栄養補助食品を送るユニセフの支援プログラムに参加できます。

アメリカでは4人に1人の子供が運動不足ですが、世界では4人に1人の子供が栄養不良に苦しんでいるそうです。両方の問題を一度に解決できるこの取り組みは、2016年にTIME誌のBest Invention of the Yearを受賞しました。

Pixar: The Art of Science

PixarのDanielle Feinbergさんは子供のころから数学やコンピューターが好きで、ハーバード大学を卒業した後ピクサーで働き始めました。現在はライティングを担当していて、映画の中でライティングの持つ表現力についてお話していました。またピクサー映画を作る上でのさまざまな技術的課題を取り上げ、それをどのように解決したのかを詳しく紹介してくれました。また女性でありながらIT分野で働くことの難しさにも言及されていました。

またメキシコが舞台の映画「Coco」(邦題:リメンバー・ミー)の上映後、当時地震や政権の混乱などに直面していたメキシコの人からもらった手紙を読み上げてくれました。映画のおかげでメキシコの人たちが自分たちの過去を誇りに思い、より良い未来を作るために今を精一杯生きる希望を与えてくれた、という内容でした。セッション終了後は満場のスタンディングオベーションで、しばらく拍手が鳴り止みませんでした。

最近のWWDCではランチセッションに必ずピクサーが登場していますが、毎回本当に面白いのでオススメです。Q&Aでは「今週で一番面白いキーノートでした」と感想を言った人がいましたが、それくらいマストウォッチのセッションです。

7/21追記:DanielleさんのTEDスピーチがとても面白いのでオススメです!

WWDC2018現地レポート:ラボ編

WWDCの大きな特典のひとつが、アップルのエンジニアと直接話せるラボです。今回はラボの様子をレポートします。

f:id:tamadeveloper:20180608031340j:plain

技術ラボ

朝の時間はラボが空いています。もし行きたいラボが午前中にあれば、なるべく早い時間に行くとよいです。また担当者によっては質問がうまく伝わらなかったり、あまりコードを見てくれなかったり、期待する対応をしてくれなかったりもするので、そういう時は別の時間帯や別の日に行って何度も聞くといいかも知れません。自分の場合はTextViewの質問でUIKit、Cocoa、Text and Fontsの3つのラボに通って、ようやく答えがもらえました。

また人気のラボには30~40人くらいの列ができていて、UIKit、AR、MLなどで特に列が長かったと思います。逆にEvents and Contactsのようなマイナーなラボは自分一人に対して4人のエンジニアが対応してくれました。

User Interface Design

非常に人気のラボで今年からは抽選となりました。アップルのデザイナーがアプリのUIを見てくれて、改善点などを提案してくれます。

朝7:00~7:30の間にWWDCアプリからラボのページに行って「Request Appointment」ボタンをタップして予約すると、7:30を過ぎた頃に抽選結果のメールが届きます。 そこそこ倍率は高いと思いますが毎日早起きして予約してみる価値があるラボです。

自分は3日目にようやく抽選に当たってアプリをじっくり見てもらいました。ただ予約がなくてもラボに行けば5-10分くらいデザインを見てくれるとの事でした。

Business and Marketing

このラボではアプリのビジネスモデルや宣伝方法、価格設定などについて相談できます。朝7:00からWWDCアプリで予約することができます(抽選ではありません)。15分というやや短い時間ですが、アップルのマーケティング担当の人とお話することができます。

ちなみに自分の会社のホームページを見せたら「Appleのサイトみたいだね」というご指摘を頂きました、、😅

おまけ:Company Store

火曜日から会場の一角にCompany Storeがオープンしました。午前8時から午後5時まで(最終日は午後1時半まで)オープンしていますが、基本的にはいつも長蛇の列で、並んでから買い物して出られるまでに1時間はかかります。またグッズもシャツ、パーカー、帽子、ノート、ペン、などがありますが、水曜日の朝の時点でシャツはサイズがなくなっているものがありました。その後補充されたかも知れませんが、基本的には早めに行くのが良さそうです。なお、ベビー服や子供サイズもシャツもありました。

(6/9更新:グッズが売り切れたため、金曜日はオープンされませんでした。)

f:id:tamadeveloper:20180609110828j:plain