「勉強会に行ってみた!」 第40回  「iOSDC Japan 2016」
event

「勉強会に行ってみた!」
第40回 「iOSDC Japan 2016」

2016.10.14

iOSDC (iOS Developers Conference Japan) は、iOSとその周辺技術に関するエンジニアのためのカンファレンスです。スピーカーは日本だけではなく、世界中から公募されました。
当初は8月20日のみ開催予定でしたが、前日夜に前夜祭が行われ、さらにこちらで発表できなかったトークを発表する勉強会が、後日2日間にわたり行われるなどカンファレンスに対する期待や人気が伝わってくる勉強会でした。

井上純

長谷川智希さん

「iOSを題材としたカンファレンスが欲しかった」に尽きます。

長谷川は、カンファレンスがとても好きなのですが、言語系では大抵の言語でカンファレンスがあるし、AndroidにもDroidKaigiがある。それなのに何でiOSにはそれが無いんだ!と、ずっと思っていました。

「iOSDCJapan2016を主催した」長谷川智希さんブログより抜粋

主催者の長谷川さんもブログで開催の動機についてこのように語っているように、意外にもiOSにはこのようなカンファレンスが存在していなかったようです。実際、多くのiOSエンジニアが待ち望んでいたカンファレンスなのだと会場の雰囲気からも強く感じました。

会場は練馬区立区民・産業プラザ内にあるCoconeriホール。

さて、iOSDCは2つの会場に分かれて多くのトークが発表されました。今回は筆者が聞いたトークから、2人の方の発表を簡単にですが紹介していこうと思います。

■タイポグラフィの基礎知識を身につける

岸川克己さん

最初のトークは、iOSのテキスト表示に関するお話でした。iOSのテキストには高品質なテキストのレンダリングの書式設定があるのですが、何も考えずにテキストを表示すると色々問題が出てしまうことがあるようです。例えば、フォントにヒラギノを指定してアルファベットを含む文章をUILabelに表示すると、大文字についたアクセント記号や「y」や「p」と言った上下に飛び出した部分が切れてしまったり、複数行での表示では行間が詰まってしまうといったことが起こります。

■Font metrics

画像はスライドで使用されていたアップルのドキュメントの画像です。このような情報(Metrics)をフォントはそれぞれ持っています。中でも「Line height」「Ascent」「Descent」が重要でこれらによって文字の高さが決まります。
そして、iOSが持つヒラギノは特殊なメトリクスを持っており、上下(図のCap heightより外側)が詰まっているためUILabelではアルファベットを含む文章でアルファベットが切れてしまいます。これを解決する方法としてテキストの上下をプログラム上で補うという方法がありますが、これはバッドノウハウの領域なので推奨はできません。

プログラマーとしては、基本的にヒラギノは明示的に指定せず、日本語フォントとしてヒラギノが指定されているシステムフォントを使うのが望ましいのですが、デザイナーからヒラギノを指定されていることもあります。その場合は、アルファベットも含めてヒラギノを指定しているのかをプログラマーが確認をすることで、明示的に指定することを避けることができるかもしれません。また、中国語用フォントにフォールバックさせたくないために指定している可能性もありますが、こちらは別の方法で対応することが可能なので、やはり基本的にはシステムフォントを指定した上でフォールバック対策を提示するのが望ましいです。
このようなタイポグラフィの基礎知識を身につけておくことで、デザイナーとのやりとりがお互いにスムーズになり、UIはより洗練させることができるようになります。

■iOSエンジニアにとってXcodeは武士にとっての刀

森本利博さん

今回聞いたトークの中で、筆者が最も興味深く聞いたのが森本さんのデバッグ環境に関するお話でした。
「クラッシュしたらAppDelegate、もしくはアセンブラだった」という経験は筆者にもあります。筆者の場合はXcode上で原因を特定できずにインターネット上の情報から原因を特定していましたが、Exception Breakpointを追加することで例外が発生した箇所で実行を止めることができます。
ただし、Exception前提のコードが書かれていると意図とは違うタイミングでBreakしてしまうので、プロジェクトによっては注意が必要かもしれません。
また、Diagonosticsを設定することで、不正なメモリ操作を検知したりdynamic library関連のロギングができます。Enable Address Sanitizerはパフォーマンスが気になる場合にはオフにして良いのですが、アセンブラレベルでクラッシュしていた場合にはオンにすることで原因を追うことができます。

他にも、Symbolic Breakpoint with actionを使ってviewWillAppear/viewDidLoadが実行されたタイミングでログに表示させることで、途中から参加したプロジェクトで機能追加をすることになった場合に、自力で実装するViewControllerを探すことができたり、Environment Variablesを使えば起動時に特定のViewControllerを表示することができるなど、今まで筆者がiOSのアプリ開発で地道に行っていた作業に関するtipsを聞かせていただきました。
開発を始めるにあたって、使用する言語については当然調べるのですが、開発環境そのものを勉強することで開発スピードは劇的に変わります。Xcodeを含め使用しているIDEに対する理解を深めようと思う良いきっかけとなるトークでした。

■まとめ

今回紹介したトーク以外にも、面白い発表が多くありました。メインセッション後のLTや懇親会中のLTも、発表の時間に関係なく高い熱量を感じました。iOSシェア率の高い日本だからこそ、Swiftに限らずiOSに特化したカンファレンスが今後も開催されていくと良いですね。
また、各スピーカーさんがスライドをシェアしてくださっていますが、YouTubeで全トークを動画で見ることができるので、気になる方はチェックしてみてはいかがでしょうか?

※写真協力 iOS Developers Conference Japan 2016実行委員会

原稿:井上純
qnoteシステム開発事業部所属。気分で色が変わる毛髪を有し、秋になるとススキに擬態する。なお、オフィスには7匹の猫がいる

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW