ヴォルフロッシュ

Blog

Published on

RSS

native macOS application, またはAppKitの世界

Ricoケーキ

今年3月21–22日に東京で行われた“try! Swift”というSwiftのカンファレンスでスピーカーをやりました。という報告です。

これを話しました。当日の登壇スライドです。


try! Swiftとは

SwiftはAppleが推してるプログラミング言語でiOS/macOSなどで使われています。try! SwiftはこのSwift言語に関する国際カンファレンスで、2016年の第1回目から毎年東京で行われていますが、海外からのスピーカー/聴講者も多く国際カンファレンスと銘打つのに十分な規模を誇っています。今年2019年で4回目にとなり、今回は32カ国から900人の人が来たようです。特徴としては、すべての発表がシングルトラック(1部屋)で行われ、和英の同時通訳付き、かつ20分の時間がもらえるレギュラースピーカーは招待制、というあたりでしょうか。これに加えて応募制で1人5分のLT (Lightning Talk) 枠があります。

国内で行われるもう1個の大型カンファレンスiOSDCがiOSを名乗ってるに対して、try! SwiftはあくまでSwiftカンファレンスなのでmacOS開発者にも参加しやすく(or しやすいように感じられ)、なんとなく第1回目から聞きに行っていました。毎年行っているとだんだん顔見知りも増えてきて、さらに昨年はtry! macOS meet-upなんていうスピンオフ企画を勝手にやったり、年に1度の好きなイベントとして私の中でも定着してきました。

登壇者になる

去年のtry! Swiftのオフィシャルパーティーかなんかの時にTim氏に「登壇しないの?」と訊かれたりしつつも「いや、自分Swift言語で話すことないっすよー」と返していたのだが、今年はネタが思いついたらLTは応募してみようかなと密かに思っている最中、主催者のひとりである@d_dateさんにレギュラー枠の方のスピーカーやりませんか?とTwitter経由で声をかけられる。それが1月10日。「私話すことあんのか?」と思いつつもmacOSの話で是非とのことだったので、声をかけていただくこと自体は光栄だしせっかくなので引き受けた。

さて、引き受けたはいいが何を話そうと思案したが、まずトークのトピック案を3つ提出するとコミッティ側がその中から選ぶ、とのことだったので、適当に話題を散らした以下の3つを提出した1

  1. Swift.String ⇆ NSString
  2. native macOS application、またはAppKitの世界
  3. Cocoa Bindings

上から順に自信があると伝え、2つ目の「native macOS application、またはAppKitの世界」に関しては「Swiftの話は一切出てこない可能性が高いです」という注をつけたのだが、採択されたのは2つ目の「native macOS application、またはAppKitの世界」でした。「え、ほんとにSwiftの話しないよ。いいの?」と困惑しつつもそれでもokという返答を得たので、であればとゴリゴリのmacOSの話を組み立てました。

自信があると言った「Swift.String ⇆ NSString」では、テキストエディタ開発者らしくTextKitとかNSRangeとSwiftのStringの行き来の話をしようと思ってたのですが(これならモロSwiftカンファレンスっぽい話題だし)、蓋を開けたらAppleの方がStringのお話をなさったので、被らなくてよかったというかそういうことならしょうがないな、と。かつ、3日のWorkshopではCocoa Bindingに関するワークショップもあったので、こっちも避けて良かったですね。

このテーマが採択されるとあまり思ってなかったので、タイトルと能書きこそ書いたものの中身をどうするか全然決めてなくて、具体的な内容は採択されてから考え始めた。「SwiftのカンファレンスでネイティブmacOS appかー、こういう周辺トピックも賑やかしよねー」と思いつつ、勝手に「発表の順番は2日の午後一あたりかなー、初日の午後が2日目気楽でいいなー」などと呑気に構えていたのに、公開されたタイムテーブル見たらなぜか初日のトップバッター😇。どうなのよ。try! Swift、一番最初のスピーカーに「Swiftの話、しません」宣言をしている人間を、しかもマジョリティーのiOSじゃなくてmacOSの話を持ってきていいのかいと、さすがこれは焦りました。しかも去年はezuraさんのSecret Swift tourというSwiftのカンファレンスの一発目としてこの上ない素晴らしいトークだったので、あのポジションやるのは恐れ多すぎる。

登壇準備

ということでこのタイムテーブルを見て話の方向性を当初からちょっと変えました。本当はもっと具体的なAppKitの機能(レスポンダーチェーンとかAppleScriptとか)について時間を割くつもりだったのですが、カンファレンスしょっぱなからあまりなじみのない技術の説明聞いてもしょうがないだろうから、iOS開発者も煽れるようなより概念的でエモいデザイン論としました。まぁ実際このテーマで話させたら国内なら私2が適任なのには間違い無いので、どうせやるなら全力で自分の能力がぶっ込める方向に話を組み立て、下手にSwiftに話を絡めずにUIを中心としたアプリケーションの設計思想の話を中心に組み立てることに。例示も私の好きなタイトルバー。

スライドは私がKeynote芸が好きなのもあり結構遊びました。いや、遊びというか、概念的な話が多かったから真面目に絵とモーションで理解を助けたかったのですが。野良デザイナの本気を見せてやるぜ。Twitterでハッシュタグ追っかけてる限り、好評だったので良かったです。あのマジパン、というかプラリネチョコの絵とかもわざわざIllustratorで描いたのよー。Keynote芸については後日YouTubeで確認してね。いや、恥ずかしいからあんま見られたくない気もするが。

usagimaru氏のあのセリフは、確か元々macOS nativeコアメンバー界隈で飲んでてるときにでた発言で、その後ツイートでも同様の表現をしてたので引用しました。あれだけ切り取るとただのMarzipan disにも見え若干治安が悪い感じですが、ちゃんと文脈があります。けど「キレイなElectron」は言えて妙すぎるし、実際ウケてたので入れて正解だな。ちゃんと事前に🐰さんには許可とったよ。

なんだかよりによってtry! Swiftの前に本業・私用の予定や締め切りが重なってしまい、なかなか資料作りに時間が割けなくて腐心しました。当初の締め切りも大幅に超過し、結局自分の登壇前日までスライドと原稿いじってました。スタッフの皆様にはご迷惑おかけしました。

とはいえ、当日は言いたかったことをちゃんと組み立ててパッケージとしてまとめて話せたかと思います。もっと推敲しろと言われたらもっと推敲できたと思うけどそんなのキリがないもんね。話を組み立ててるときはもっといろんなトピックがあったのですが、筋道をシンプルにするために最終的にはかなり刈り込みました。

このように自分の頭の中を絞り出して組み立てた話というのは、当たり前だが自分にとっては既知の話しかないので、前日には

という気持ちになっていたのだが、実際に話すとポジティブなリアクションがたくさんもらえたので良かったし、無に思えても話す価値はある。

登壇

登壇当日はとくにトラブルもなく終わって良かったです。朝もちゃんと起きられたし。見てくださったとおりです。時間も余裕を持って収まったし。こういうのは意識しちゃうと緊張してしまうので登壇前は深く考えないように。今回は会場が横に広いから圧が少なくて良かったですね。

結構司会の方が登壇者の説明を予想以上に丁寧にやってくださったので、私の自己紹介が重複しててうざかったかな。でも後ろの話にも繋がってたので切るのもね。

登壇者はスタッフ用のサコッシュがもらえてHappy。

最初の方で手を挙げてもらうアンケートやったんだけど(純粋に私が知りたかった)、THETAとかで写真とか撮れば良かったなぁ。いやTHETA持ってないけど。だいたい目測で10%とか5%とか言ってみたけども少し少なかったかも。3つ目の質問の「普段Mac使ってる人」で思ったより手が上がらなくて内心焦った。これいじると時間溶かすと思って流してしまったが。

英語で話した

try! Swiftは非日本語話者の聴講者も多いとはいえ英⇆日同時通訳が付くのでどっちで話しても多分良かったのですが、英語で話してみました。私がいかに普段英語と英語学習を呪ってるかはTwitter見るとそこはかとなく感じられるでしょうし実際に英語は下手なことこの上ないのですが、それでも今回はいくつかの理由で英語に。

  • 後日アップロードされるYouTubeの動画には英語字幕が付かない
  • 話の中で非ネイティブ話者のアナロジーを入れたかったので、あえて下手な英語で話した方が刺さるだろう
  • 英語がわかる日本語話者と日本語がわからない非日本語話者の比率を考えると、英語わかる人の方が多いだろう
  • try! Swiftの同時通訳は優秀だが、それでもやはり英語の方が伝わりやすい(という過去に聞いたtry! Swiftコミッティ側の話)
  • 国際カンファレンスなtry! Swiftの最初のスピーカーなら英語の方がサマになるかな

英語で20分くらい登壇するというのは、正直ここ何年も年に1,2回本業の方でやってるのでそこまで初めてではなかったのですが、普段は事前に原稿なんか作らない(try! Swiftは事前に原稿を提出する)で雰囲気で喋ってたというのと、話に出てくる語彙や表現も普段の登壇と全然違うので結構難儀しました。

ということで発表スライドと並行して当日の原稿も作ってました。そもそも私は日本語でも書いてあることを読み上げるというのが苦手で、気を許すとどこ読んでるのかわからなくなるし、読み上げから自分の言葉につなげたり、逆にその場で言葉挟んでから原稿に戻ったりができなく。少しくらい提出原稿から外れた話しても大丈夫だよとは前日に言ってもらったのだが、当日は下手にアドリブ入れて話の流れが淀んだらやだなと原稿読み上げマシーンに徹しました。言いたいことがどれだけ伝わるかが命ですから。発表の型が決まってて図表が多い学術発表と違うし。

あと上で書いたとおり登壇内容そのものの完成が前日だったくらいで練習もできなかった。さすがに通しで数回読んで時間が収まるかとかは検討しましたが。原稿あるならあるでちゃんと練習して覚えられてたらかっこよかったんだけど...3

Ask the Speaker

try! SwiftはAsk the Speakerという仕組みがあり、登壇後にフロアでQ&Aセッションをやらずに別室に登壇者に質問できるコーナーが設けられる。これはメインのプログラムと並行で行われるので、Ask the Speakerに行きたい人はトーク聴講を離脱する必要がある。登壇者はもちろんそのスペースに行くんだけど、try! Swiftのスタッフからも、「初日の最初の登壇だと多分Ask the Speaker誰も来ないけど、これはプログラム上の現象だから気落ちせずにいてね(大約)」、と言われてて「たしかになー」と誰も来ないつもりで通訳さんと雑談してまったりと。そしたら最初@mzp氏と@banjun氏がスペースに遊びに来てくれて「サクラだ!やさしい!」と喜んでいたのですが、その後海外の方とか結構来てくれて、最終的にはモブコーディングも発生してAsk the Speakerもわいわい盛り上がりました。よかった! 「質問じゃないけど発表良かったからそれだけ伝えたくて」という人も何人か声かけてくれて、わざわざそういうの伝えてくれるのは純粋にうれしかったですねー。

取りこぼし

登壇で話をシンプルにするために最終的に切ったところをその後けっこう訊かれたので、「やっぱそこ気になるかー」と思いつつでもこういうの全部付け足してくと話があっちこっち行っちゃうから本編はこれでしょうがないかな。FAQ:

iPadのSplit Viewとかは1アプリケーションがデバイス独占する状況から一歩出てるのでは
それはある。が、Split Viewに限って言えばスクリーンを2つに切っただけなのでmacOSのあのウインドウが重なり合う世界とはまだ大きく違いがあると思う。
Marzipanは正式な呼び名じゃないよ
知ってた。そのexcuse入れると冗長なので飛ばした。
現在Appleが使ってるMarzipanと今年リリースされるそれは進化があるのでは
それは十分ありうるしAppleが今後さらに進化させてインテグレートを進めると思うから現時点であんまり悲観的なことを言うのは躊躇われる部分はある。でも、MarzipanがUIKitな限りmacOSの機能を100%活かせないのは確実なのでそこは1本線が引けると思う。どちらかと言うともっと将来Appleが出してくるであろうiOS/macOS/watchOS/tvOSをまたぐ新フレームワークに期待したい。それは未来の話だね。
『融けるデザイン』
絶対私の思想と親和性あるし読んだ方がいいと思いつつ勉強不足で読んでないのです。すみません、読みます。

リアクション

try! Swiftは行くといろんな人に会えてわいわいできて、その空気も好きなのですが、スピーカー側に回ると話したあとも初めましての人にたくさん声をかけてもらったりで良かった。承認欲求が満たされていくー、は冗談としてもいろんな話が聞けました。言いたかったことを意図通り理解してもらえてたり興味持ってもらえてたり楽しんでもらえたりが確認できて良かったです。あとはTwitterのハッシュタグ追っかけたり、人のブログ読んだり、teck confはこういう人の発表にもわいわい可視的にコメントする文化が好きです。見習えよ学術学会。

登壇直後にSpeaker Deckでスライドを公開したのですが、最終的にこのtry! Swiftに来てないであろうAppKitの中の人に、私のスライドについて共感をいただいたので、やって良かったなとホントに思いましたね。というか私の考えてることがAppKitの思想と一致してて良かったです。

ということで、try! Swiftでお話をしたというお話でした。

try! Swift会期中に(初の!)WWDCに行けることも決まったし、「お前はどこに向かってるんだ」の強い昨今ですが、より多くの高品質なネイティブmacOSアプリケーションがこの世にはびこる世界を目指してがんばるぞい。

来年もtry! Swiftは(聞きに)行くよー。

  1. あとでほかの登壇者に聞いたら「みんな1つか2つで律儀に3つも出してない」と言っててなんだそりゃー。
  2. もしくはusagimaruさん。
  3. そして原稿のネイティブチェックも受けられたら良かったんだけど...。

Comment

leave your comment