第一線の開発者陣による「iOS 11 Programming」執筆プロジェクト!

UIKit + 機械学習はコンピューターの未来? 加藤 尋樹さん

  • このエントリーをはてなブックマークに追加

cockscomb加藤 尋樹 Twitter GitHub

株式会社はてな、アプリケーションエンジニア。学生の頃に始めたmacOSやiOSのアプリを作る趣味が高じて、それが仕事になった。UIKitについて理解を深めることでAppleの精神を学ぼうとしている。

iOS 11は、Drag and Dropによるデータの受け渡しや、file-centricなアプリ間の連携が強化されるなど、非常におもしろいアップデートになりそうです。iPhoneやiPadが今までになく「パーソナルコンピュータ」に近づく瞬間となるでしょう。自分自身を含め、なるべく多くの開発者がこの新しいAPIを活かせるとよいと思っています。精一杯がんばって書きます。どうかよろしくお願いします。

今回は「iOS 11 Programming」著者インタビュー1人目ということで、「第3部 UIKitの新機能とアップデート」の第6章、7章 担当の加藤 尋樹さん(@cockscomb)にお話を伺いました。話は“UIKitと機械学習“というテーマに発展するという意外な方向へ...。

UIKitの難しさ

加藤さん、こんにちは!今回はご参加ありがとうございます。はてなでは今なにをやってらっしゃるんですか?

モバイルのアプリを作ったり色々やってて。

はてなブログのアプリとかやってるんですよね。

はてなブックマークもやってます。

いつも濃いUIKitのBlogを書いてらっしゃいますけど

凝ったUIを作ろうとするとUIKitを詳しく調べないといけなくて。

あのUITextView(あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい)の記事面白かったです。結構UIScrollViewだけでも100ページぐらい本書けちゃいそうですもんね。

UIScrollViewは大変ですよね。

UIScrollViewは全部の基盤だし(UITableView, UICollectionView, UITextViewなどが関連します)

ちょうどiOS 11でUIScrollViewちょっとよくなりますね。

え、そうなんですか?どの辺が変わるんですか?

あのInset周りがよくなりますね。

あー、あれずっと問題ですもんね。

そうなんですよね。iOS 7からNavigationBarとの関係とかがややこしくなって

20pxスペースができちゃったり、44pxスペースができちゃったり(笑)

UIViewControllerが自動調整する設定があって、中でUIScrollViewのInsetを勝手にいじるので、自分で何かやると衝突してめちゃくちゃになるときがあって。それがiOS 11からよい感じに設定できるようになります。

WWDC 2017 について

今回のWWDC 2017って、結構よかったという感想の人が多かったんですけど

iPhone OS 3とかiOS 4の頃に比べると地味ですけど、一つ一つの改善はいいですね。基盤っぽいところにちゃんと手が入っていて。

とはいえ、iPadはすごく変わりますよね。

はい。iPadはようやくって感じですね。

iOS on iPadのNew macOS化というか、その辺どう思いますか。

そうあってほしいと思っていますね。

ご担当の章ではまさにそういうことを書いていただけるのかなと思っていまして(Drag & Drop, Document Based Application)。 いただいた担当章の説明
iOS 11で大きく強化されることになったファイルやドキュメントに関わる数々のAPIは、これまでのアプリ中心なiOSの世界に、ファイルを中心とした新しい軸をもたらします。ファイルを介したアプリ間の連携は、これまでにない相乗効果を生み出すでしょう。
はドキっとしました。さすがだなと思って。

本を書くので調べていたらそういう感じがしたので、機会をもらえてよかったです!

機械学習とユーザーインターフェイス

WWDCで他に気になったことありますか。

Core MLがすごく興味深いと思いました。

今後の最初の一歩って感じがしましたね。

そうですね、Googleがすごく先行しているところだし。Appleも放っておけなくてなんかやってるって感じがいいですね。

@sonsonさん(第3章 Core ML担当)が「GoogleがTensorFlow Liteを出したから、なんか出しておかないとまずいから出してきたんじゃない?」みたいなことを言っていました。

コンピュータを僕たちがどうやって操るか、という歴史があると思っていて、最初はマシン語を書くしかなかったんだけど、C言語で書けるようになって、Swiftみたいにもっと簡単に書けるものが出てきたみたいな感じですけど、 機械学習はその先だと思っていて、人間が素朴に書いたプログラムを超えて勝手に機械が動くみたいな未来の感じがします。

機械学習の影響がUIKitに出てくるという点でいうと、写真.appの中の分類、音声認識、自然言語処理がいくつか、という感じだと思うんですけど、機械学習がUIKitに影響を与える、みたいなことがあると思いますか?

難しいですよね、機械学習の適用範囲として、ユーザーインターフェイスを見ると、ユーザーの何か操作したい期待があって、これをこうやったらこうなるだろう、みたいなことに応えるのが正しいUIだと思うんですけど、 ユーザーの期待は学習結果としてこうだろうというところまで機械学習が到達するのは難しい感じがするので。

音声認識インターフェイスは機械学習じゃないとできない、人間が頑張ってもできない領域だと思うんですけど、(グラフィック)ユーザーインターフェイスはもっと素朴なので機械学習より人間がやったほうがまだ精度が高いものができるかなと。

以前から、ユーザーインターフェイスって使う人に合わせて少しづつ変化すればいいんじゃないかと考えていて、 今はまだ前使った項目が一番上に来るみたいなレベルですけど、よく押されるボタンは押される位置によってミスタップしづらい位置に少しづつ調整されていくとか、 こういうパターンで使う人は、こういう操作をするはずだからUIが先によい感じのレイアウトになっているとか。そういうところで機械学習が使えないかなと思うことがあります。

MicrosoftのOfficeでそういうことを考えているのかな?という時があって、ツールバーにすごくたくさんのボタンが置かれていたんですけど、タブにまとめられた時にそういうことを考えたっぽいです。

それは予測でこの項目を一番上に出そうとかやって、いい感じにできるかもしれないですね。

Appleがやりそうなのは、普通に翻訳とかじゃないかなぁと思っていて。ローカライズ対応したがっているんじゃないかなーと。

Appleの強みとして、ユーザーのコンテキストを一番知っているデバイスをハードもソフトも作っているということだと思うんですけど。Googleに対する優位性としてはその辺にヒントがあるかなと。

Androidに、ユーザーの状態を取れるAPIがあるんですよ。今移動してるとか、その人の周りの天気が変わったとか、その時にコールバックを呼んでくれるAPIがあって。iOSのジオフェンスの高機能版みたいな感じです。

えー、そんなのあったんですか。

安静にしている時も分かるんです。

なんと!その時にPush通知送るとかできますね。

そうなんです。iOSデバイス、Apple Watchなんかを駆使すればAppleもそういうことがより高い精度で綺麗にできると思います。

担当章ではどんなことを書いてもらえそうですか?

未来のコンピューターみたいな感じにしたいと思っていて、僕たちそんなに今のコンピューターが気にいってないんじゃないかなと思っていて。 僕のMacがカーネルパニックになったり、Dockerのバージョンをいちいちアップデートしないといけなかったり、妻がCDをiTunesに取り込むのに、古いCDドライブ付きのMacを引っ張り出してきてすごく時間がかかったり。

まず、電池が切れている。笑

そうそう。それもあるんですけど、Macをアップデートしないといけなかったり。誰もそんなことしたくない。 そのためには、みんながいいアプリを作らないといけないと思っていて、それに繋がる本ができるといいなと思っています。

堤 修一 吉田 悠一 池田 翔 坂田 晃一 加藤 尋樹 所 友太 永野 哲久 岸川 克己 川邉 雄介 - iOS 11 Programming

第一線の開発者陣による「iOS 11 Programming」執筆プロジェクト!

iOS 11 Programming

堤 修一吉田 悠一池田 翔坂田 晃一加藤 尋樹所 友太永野 哲久岸川 克己川邉 雄介

プロジェクト成立!執筆が決定しました!