Tamablog

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

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

WWDC18現地レポート:キーノート編

今日からWWDCが始まりました!会場には7:30amに到着して席はやや端の方でしたが、朝食はまだ十分残っていたのでありつける事ができました。

f:id:tamadeveloper:20180605131318j:plain

キーノート

今回のWWDCでは個人的にMarzipanが一番気になっていたのですが、「来年」という期日つきで発表されました。まだ全貌が見えないのですが、そこそこ予想通りになったのではと思います。

「Phase 1」という言い方をしていたので、数年がかりの大きなプロジェクトになるようです。とはいえ、マウスやトラックパッド、メニューバーなどには最初から対応するので、それなりのMacアプリは作れそうです。

AppKitとUIKitのコードは共存できるのか、StoryboardにUIKitとAppKitのコンポーネントを混ぜる事はできるのか、パフォーマンスはどうなるのか、UXKitのようにUIKitをAppKitで実装しているのか、それとも別の実装になっているのか、最終的にAppKitはdeprecatedとなるのか、などまだ疑問は残るため、引き続き注目していきたいと思います。

またMac App Store(MAS)も一新されてiOSのストアの「Today」のようなコンテンツを充実させていく方針が発表されました。MASアプリもMarzipanの技術を使ってiOSから移植されたと思えるような見た目となりました。今後はiOSっぽい見た目のMacアプリが増えていくと思われます。

興味深かったのはこのMAS刷新のタイミングで、これまでMASから撤退していたアプリが戻って来ることが発表されたことです。そのひとつであるTransmitアプリの開発者がその経緯を説明しています。

これまでMASからアプリが撤退する主な理由は「Sandboxの制限が厳しいから」と「価格の柔軟性がないから」の2点でしたが、Sandboxに関しては制限が緩められると考えてよさそうです。ただ価格に関しては問題が残るため(買い切り型アプリで無料トライアルができない等)Subscriptionを利用することで対応した、という事でしょうか。

macOSに関しては他にもFinderやQuickLookなど細かい改善点が多数あり、アップルがMacに本気で取り組んでいることを確認できたと思っています。またダークモードが追加されましたが、来年iOSに採用されるのは間違いないと考えています。

iOSの変更点で興味深かったのはSiriのShortcutです。Shortcutを作成・編集するためのアプリが昨年アップルが買収したWorkflowアプリそのものでした。アップルが企業を買収するとそれが数年後に製品となって現れる場合がありますが、今回はまさにその一例となりました。

またアップルが自社製品であるiPhoneやiPadの利用時間を自ら制限できるような機能を追加したことも評価したいと思います。特に子供のアプリ利用時間を確認したり制限したりすることができる機能は、自分の家庭でも使いたいと思います。

他にもUSDZファイルで手軽にARを扱えるようになったので、今後は家具などのショッピングサイトでUSDZを配布し、部屋に置いたらどう見えるかを購入前に体験できるようになるかも知れません。ARやCoreMLに関しての発表も多く、今後もアップルが力を入れて行く分野なので注目していきたいと思います。

おまけ1

WWDCのランチはお世辞にも美味しいとは言えない、というのが定説(?)でしたが、個人的にはターキーのサンドイッチを美味しく頂きました。

f:id:tamadeveloper:20180605131555j:plain

おまけ2

WWDC会場の前の道路は封鎖されパトカーが何台も止まっており、常に複数人の警察官が警備していました。また会場に入る前に荷物検査や金属探知機による検査も行なっており、セキュリティーはかなり厳重でした。(6/15更新:このような警戒体制は次の日からは解除されており、道路も車が通れるようになっていました)

f:id:tamadeveloper:20180605131702j:plain

WWDC2018現地レポート:前日編

WWDC2018は明日から始まりますが、早めに渡米して数日間サンフランシスコに滞在しました。

サンフランシスコ

サンフランシスコは太平洋の風が直接吹きつけるため、風の強い日が多く気温もあまり上がりません。ゴールデンゲートブリッジ周辺は特に強風なので天気の良い日でも防寒対策が必須です。自分はセーターとジャケットを重ね着しました。

f:id:tamadeveloper:20180604100126j:plain

また最近話題のロボットがカフェを作ってくれる「Cafe X」にも行ってみました。コーヒー一杯は$3~$5くらいで、ロボットが素早い動きでコーヒーカップを用意したり、できたコーヒーを運んでくれたりします。コーヒーを受け取ると手を振ってバイバイしてくれました。店舗内の端末を使って注文することもできますが、アプリで注文してから受け取りに行くこともできます。サンフランシスコには2店舗あり、工事中の3店舗目も見かけました。

f:id:tamadeveloper:20180604100253j:plain

アップルパーク

またアップルパークにも足を伸ばしてみました。残念ながら一般の人が入れるのはビジターセンターに限るため、スティーブ・ジョブズ・シアターや「宇宙船」に近づくことはできません。ビジターセンターではアップルパークの様子をARで見ることができます。

f:id:tamadeveloper:20180604100340j:plain
外観だけでなく、空気の流れやソーラーパネル発電の様子も見ることもできます。また屋根を外して駐車場やオフィス内部の様子が見られるようになっており、車や人の動きまで細かく作り込まれています。オフィス内部は噂通り個室が少なくオープンスペースが多い様子を見たりする事ができます。

カンパニーストアではアップルパークロゴ入りのTシャツや、このストア専用のグッズも買うことができます。なおTシャツは子供用の「YS」「YM」「YL」と大人用の「S」「M」「L」があり、棚にはほとんど大人用しか置いてないので買うときは店員に声をかけましょう。ちなみにベビー服も種類が限られますが置いてありました。

屋上からはアップルパークを見ることができます。東京ドームなどのスタジアムに比べてもかなり大きい印象でした。(その後調べてみると東京ドームが6個入る大きさだそうで、ディズニーランドよりも広いそうです)

f:id:tamadeveloper:20180604100946j:plain

バッジ受け取り

WWDCバッジの受け取りはWalletアプリにチケットを登録しておくとスムーズです。あとはパスポートさえあればバッジをゲットできます。再発行されないのでなくさないようにしましょう。スタッフのテンションはとても高く、Apple Store新規オープンの時みたいでした。

f:id:tamadeveloper:20180604101021j:plain

WWDC前夜祭

日本からWWDCに参加する人のための前夜祭がThe Farmers Unionというレストランで開催されていたので行ってきました。いろいろな人と会うことができて楽しかったです。以前TimersさんのWWDC Pre Partyでお話できなかった人とも改めてご挨拶できました。

f:id:tamadeveloper:20180604134851j:plain

Lyft

サンフランシスコとサンノゼでLyftを利用しました。アプリの使い方も簡単で、車のフロントガラスにLyftのシールが貼ってあったので分かりやすかったです。

ドライバーの方は基本的にはあまり話しかけてくる事はないです。自分の場合も少しだけ雑談する程度でした。かなり安くなるので急ぎでなければ相乗りがオススメです。

アメリカ放題

ソフトバンク回線限定ですが、アメリカ放題はとても便利に使えています。サンフランシスコでもサンノゼでも今のところ繋がりにくかったり速度が遅かったりしたことはありません。申し込み不要、利用料無料で使えるので超オススメです。テザリングも利用できます。

ただし設定でローミングをオフにするのを忘れずに。

WWDC Pre Party 2018に行ってきた

TimersさんのオフィスでWWDC Pre Partyが開催されたのでお邪魔してきました。WWDCの注意点を忘れないうちにメモ。

  • TSAロック対応のスーツケースを使う
  • WWDCチケットはWalletアプリに入れておくと便利
  • WWDCレジストレーションではパスポートが必要
  • ESTAは早めに取る
  • アメリカのホテルにはスリッパがないので持参する
  • クレジットカードは複数持参する

尚、スーツケースはTSAロック対応でも鍵をかけない方がよい場合もあるそうですが、このあたりは自己責任で。

懇親会ではカレンダーアプリを作っている方や、Nextstepfmを聞いていただいた方とお話しすることができました。その他にもいろいろな方とお話しさせて頂いて楽しかったです。現地では宜しくお願いします。