Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

try! Swift TOKYO 2019行ってきました

初めまして、iOSチームに昨年10月から入社しております明渡(ID: m_yamada1992)と申します。

入社してからといいますか、社会人8年目にして初めて平日に丸1日単位で開催される技術カンファレンスへ大手を振って参加してきました!

開催が3月21日から23日でしたので少し日数が経ってしまいましたが、私が参加した1日目と2日目にて見聞きしたセッションの感想を中心にレポートを書かせていただきます。

try! Swift TOKYO 2019 にスポンサード

www.tryswift.co

スタディプラスはシルバースポンサーとして、参加受付した際に配布してたトートバッグ内のノベルティ提供などもしておりました。

2日目になってからスポンサー一覧の看板に参加してる人のメンションがマジックペンで書き込まれていたので、僭越ながら書き込んで参りました。

今回他のiOSチームメンバーは新規事業の業務都合なり私用なりが重なって 弊社からは私一人で参加だったのですが、頻繁に写真撮影が行われる合間を縫って急いで書いてパシャって退散してみると賑やかさが恋しくなり・・・ 来年はもう少しメンバー増えてわいわいしながら参加できると良いなと思いますね。

印象に残ったセッション

native macOS application、またはAppKitの世界

1024jpさんの発表。

Macアプリは特に開発する機会ないからなぁと、正直なところ流し聞きするつもりだったセッション。

speakerdeck.com

Macアプリを例として上げているだけで、本題はユーザーが快適にアプリケーションを利用するために必要なものについて。 プラットフォームが提供している標準の仕様に則ることの大切さと、則るために必要なことを分かりやすく言語化した内容でした。

Macのアプリケーションを開発してそれをユーザーが使う際、ユーザーにとってはあくまでMacを操作している。 決してアプリケーションを使うためにMacを操作しているわけではないことをわきまえなさい。 アプリケーションは、ユーザーの目的を達成するために用いられるものである。 目的を達成する以外に気が散る要素を入れぬよう、開発者のエゴは殺し、オレオレ実装に走らずMacの仕様を尊重することを大前提とすべき。 そのためには、Macの場合だとAppKitを深く理解して有効活用しようねというお話。

スマートフォンアプリの開発に関わっているとわりとよく聞く「AndroidはiOSと同じデザインで!」ってぶん投げられる系の案件に対して素晴らしい説得材料の手札になりそうだなと思ってました。 弊社のディレクターチームやデザインチームにこの辺り理解のある方々ばかりなので、その手の不毛な説得コストは発生したことないですが。 普段関わっているStudyplusのアプリでも、できるだけ普段使っているユーザーに違和感なく使ってもらえるように検討を重ねたうえで開発を進めておりますし、今後もこういう姿勢で開発し続けたいです。

アクセシビリティのためのカラーコントラスト

Liz Marleyさんの発表。

以下は「照明の関係で見え方が違っていて分かりづらいから」と事前に手元へダウンロードすることを勧めていらっしゃったスライドのPDFです。

https://raw.githubusercontent.com/emarley/ColorContrast/master/ColorContrast.pdf

アプリケーションで使う色を選ぶ際に、適切とみなす基準は具体的にどういったものか、何故その基準を満たすべきなのか。

人間の見え方を考慮した公式を用いてコントラスト比率を計算した結果、4.5:1 〜 7:1を守りさえすれば自分の好きな色を組み合わせてOK。 コントラストチェッカーはWebサイトなどにすでに存在しているので、開発する際はそういったツールを活用するとよいだろう。 基準を問い合わせた先がヒューマンインタフェースガイドラインの専門家とのことだが、 回答をもらった基準というのがWeb Content Accessibility Guidelinesと一致していたので、 こちらを参考にしているだろうとのこと。

コントラストを重視すると、視覚になにかかしらの障害を持っていない人だったとしても恩恵がある。 太陽の下で画面が見づらい状態で操作したり、前の夜に寝不足をして体調が悪い人にも見やすくなり、あらゆるユーザーにとって易しいデザインにできる。 近いうちiOSでもダークモード対応が必要になるでしょうから、その際に是非意識してね、というお話。

弊社にも緑が見にくいという方が数名いたり、旦那が最近目の疾患で急激に視力が落ちて「白の背景にこのグレーだと眩しすぎて文字が読み取れない」等ぼやいていたり。 身近で自分が日常的に見ている景色と異なる視界で認識している人間がいることを意識する機会が多かったにも関わらず、こういった視点で主体的に調べようともしたのを個人的に反省しました。 また、来るダークモード対応時に意識すべき明確な基準としてとてもありがたい内容でした。

Introducing SourceKit-LSP

Ryo Izumiさんの発表。

speakerdeck.com

LSP(Language Server Protocol)でSwiftが使えるようになって、好きなエディタでSwiftを書けるようになったよ!というお話。

私自身が普段Swift言語ではiOSアプリの開発しかやっていなかったり、サーバーサイドSwiftの存在は知っていても触ったことはない状態。 過去に経験した開発案件もIDEごと乗り換える(AndroidStudioやPyCharm、Eclipceなど)のが普通の感覚でいました。 故に、LSPサポートによりどのような恩恵があるのかという話はとても新鮮でした。

魔法の法則

Dave DeLongさんの発表。

スライドは共有されていなくはないのですが、try! Swift参加者用のSlackへ直接PDFファイルをアップロードなさっていたのでこちらに貼るのは断念しました。

エンジニアチームだけじゃなくて他部署のいろんな人に共有したい!って感じた内容でした。 あとからスライドのPDFだけ眺めても、自分がセッションを聴いたときに伝わってほしいなと思った内容が伝わるか微妙な気がして諦めて放置しちゃってますね・・・

AppleでUIKitを開発しているかたのお話なのですが、概要は以下のような感じです。

高度な技術はある意味魔法と区別がつかないもので、iPhoneという端末そのものも、私たちのような開発者がソースコードを書くことにより実現する挙動ですらユーザーにとっては魔法である。 魔法を実現するため役立つ3つの法則がある。

1つ目に、造り手が魔法を深く理解していること。 UIKitでは、深く理解していない開発者から意図しない使われ方をされないようにSwiftの型システムを利用している。 コンパイル時にエラーを投げたり、代わりのメソッドについてのドキュメントの記載も欠かさない。

2つ目に、なんでもできてしまうことよりも制約を重視すること。 できないことは、できることより面白い。制約があるからこそ創造的になる。 ゲームなどが例に上げられていて、できないことだらけの中からできることを見つけるほうが楽しいですよね、と。

3つ目に、新しい要素の追加よりもすでに追加済みの要素を拡張しよう。単純に見えるものが、奥深いことを発見するととても嬉しい。

これらを意識して、すでに作り上げたものもより素晴らしいものにしてゆきましょう!というお話でした。

3つ目の、新しい要素の追加より追加済み要素の拡張をしていこうという話にいろいろ思うところがございました。 Studyplusへ昨年暮れ頃、追加したボタンのタップまたは画面のスワイプで開閉可能なメニュー画面が実装されました。でも、スワイプで開閉してるユーザーが1%に満たない現実を目の当たりにして、「スワイプ操作の開閉実装、あんなに苦労していたのに・・・」とショックを受けまして。 少なくとも、国内のスマートフォンユーザーは画面上にある要素へタップ以外の動作をあまりしないんだな、という印象があります。

正解はないのでしょうが、めったに使われないと予測できる要素を、それを見つけたときに感動してもらうためにどこまで対応するのが良いのかなと考えさせられました。

例えば、iOSでいうところのUITableViewRowActionをサポートしていない箇所を適宜対応したりする、っていうのはいろいろなコスト面でも手軽にできそうだなと。 「この画面だったらこの導線もサポートしてよいのでは」ってタイミングがあれば提案していければ良いなと思います。

次へつなごう— Extending a hand to the next generation of Apple developers @hellomayuko

Mayuko Inoueさんの発表。

資料は展開されていませんが、口頭で話されていた内容のほうが本質な気がするので当然なのかも・・・?

iOSに限らず、Tech業界の将来性や展望のお話です。

この業界のダイバーシティ性に課題がある。 iOSデベロッパーの採用のプロセスに参加してみたところ、マイノリティな人が少なかった。 周りの人達に尋ねてみたところ、Macを買うための費用が確保できず諦めていたり、かかる費用の具体的なイメージも特にない様子だった。 視点の多様な人達が協力することでよりよい開発が可能となるので、Tech業界の外の人に見えるように自分のことをどんどん発信していきましょう。 巡り巡ってTech業界に興味を持っている人に届いて良い刺激になるかもしれないから、というお話。

こちらの発表者のまゆこさんはもちろん、普段からTwitterやブログを駆使して自分のことを発信している人たちを尊敬しております。 私は、自分の何かを積極的に発信するってそこはかとなく怖い気持ちが拭えずにおりますゆえ。 「この業界でどんな人がどんなふうに働いているか見えないのも良くないんだ!もっと自分を発信しよう!」って思い立って行動してそれを続けているのを目の当たりにして、畏敬の念すら覚えました。 完璧に真似できそうにないですが、精神が削られない程度に何かかしら発信する心がけをしてみようとは思います。 iOSデベロッパー業界の費用面の話は、先述したLSPサポートによりMacじゃなくても開発できる方法が普及して事情が変わってくると良いといいですね。

1日目・2日目を通しての感想

私は英語全然駄目な人間なのですが、セッション自体は同時通訳のおかげで「何を話しているか全くわからん!」ということは起こらずに快適に参加できました。

休憩時間、セッション会場やブースのある会場やコーヒー待ちの列に至るまであちこちで英語によりわいわい会話がなされていて、英語使いこなせるようになるとより楽しいのだろうなと思いながら眺めておりましたが。銘打たれていた通り、すごく国際的なカンファレンスでした。

そして、セッションの内容がSwift言語自体に関するテーマだけでなく、アプリケーションのユーザビリティやアクセシビリティ、エンジニアとしての働き方に関するお話などもあって思っていたより幅広かったです。もっとSwift初心者の頃に参加しても楽しめただろうなとも・・・ 様々な人達の努力が実った結果なのも認識しておりますが、こういった催しが積極的になされるって良い世の中になったなぁとしみじみ思います。

さいごに

参加中に眺めていたTwitterで「暑い」「寒い」「Wi−Fiが〜」などなど思い思いな発言が流れてきてて、そりゃ900人入る大きな会場だといろんな人もトラブルもあるよなぁと・・・

そんな中でも運営の皆様がさまざまな心配りをしてくださっていたおかげで、セッションに集中したりふらっと会場を歩き回ったりとマイペースに楽しめたんだと思っております。ご尽力いただき、ありがとうございました。