[レポート] potatotips #42にiOSブログまとめ枠として参加しました! #potatotips

potatotips

こんにちは!
モバイルアプリサービス部の田中孝明です。

7月25日火曜日にクックパッド様でpotatotips #42 (iOS/Android開発Tips共有会)が開催されました。
iOS ブログまとめ枠として参加しましたので、そちらのレポートになります。

potatotips

通算42回目にして、初めて参加できました。
オーディエンス枠は当然ながら、発表枠、ブログまとめ枠も、告知された瞬間に埋まってしまうため、なかなか参加できずにいました。

potatotipsは毎回開催場所が違うのも特徴で、今回はクックパッド様で開催されました。

会場ではクックパッド様のご好意で軽食・飲料が振舞われました。 Twitterで皆様が「美味しい」と拡散されたおにぎりはもちろん、揚げたてのポテトチップスや、豪華な料理がテーブルに並んでいました!

IMG_4968
IMG_4972
IMG_4967

当日の様子はtogetterにもまとめられていますので、併せてお読み頂ければ、会場の様子が伝わってくると思います。

2017/7/25 #potatotips (iOS/Android開発Tips共有会) 第42回

OS11でのHEVC動画のHLS配信: YuyaHorita さん

スライドは公開され次第、貼り付けます。

iOSの動画の生放送サービスに関わった知見を発表していただきました。
iOS 11から対応される、H.265 HEVC形式が、現在よく利用されているH.264形式に比べ、圧縮率が2倍にもかかわらず、画質の劣化がほとんど見られない様子を話していただきました。
hvc1とhev1というコーデックの形式があるのですが、iOS/macOSで配信出来るのはhvc1で、ffmpegを使って変換されるのは、hev1なので注意してくださいとのことでした。

CoreMotionを使って気づいたこととiOS11での新機能: tattn さん


Core Motionを使って気づいたことや、iOS11での新機能について発表していただきました。 Core Motion自体はiOS 4から提供されているframeworkで、デバイスの向きや動きを加速度やGyroを利用して取得できます。

古くからあるframeworkですが、プロパティ名で検索しても、あまり情報が出てこないなどの難点があるため、実際に動かして見るのが良さそうです。
全機能を使ったサンプルアプリを公開されていますので、こちらを実行していただければ、動作を追うことができそうです。

新機能としては、Core Motionの許可状態を事前に取得できるようになったこと、コンパスの値が北に対して、何度回転して居るのかを取得可能になったこと、加速度の記録が可能になったことなどが挙げられました。

簡単に激安感を表現するライブラリを作りました: hirose_yudai さん


お店のPOPなどで用いられるような値段表記をできるように、NSAttributeStringを使いやすくwrapしたライブラリを作成された発表をしていただきました。

値付きEnumを渡すように改善し、各項目をメソッドチェインで渡せるように、NSAttributeStringを使う際のKey/Valueの辛さをwrapされていました。

PRやISSUEもお願いしますとのことでしたが、是非スターをくださいとのことでしたので、作者のモチベーションアップのためにも是非応援してください。
StringAttribute

海外カンファレンスに招待された事情: pancake さん


海外カンファレンスに招待された経緯や事情、参加するにあたっての心構えを発表していただきました。

英語でアウトプットしていたされていたことや、AppleのSwift Package Managerなどオープンソースにちょっとだけコントリビュートされていたことで、ニューヨークのミートアップに呼ばれて英語で登壇された経緯を話していただきました。

この活動がきっかけで、海外カンファレンスの参加へ声がかかったとのことでした。
参加・登壇にあたって、質問されそうなことは回答を考えておく、聞き取れなかった時には返す英語を考える、あとでDMでカバーするなどのフォローをされたとのことです。

それよりも個性を伸ばして行動したほうが良いとのことでした。

AutoLayoutのデバッグを少しだけ楽にやる: hiragram さん

スライドは公開され次第、貼り付けます。

AutoLayoutの制約違反の時の出るコンソールログを追いやすくするためのTIPSを発表していただきました。

各ViewにAccessibility Identifierを設定すると、エラーメッセージがどのViewに対して発生して居るのか、値から追うことができるとのこと。
各ConstraintにIdentifierを設定することで、どの制約についてエラーが起きて居るのかわかりやすくなる。

また、デバッグ時にunsafeBitCastを使うと任意の型のインスタンスを得られることを利用して、LLDBプラグインを作られたとのことです。
これによって、各Viewの制約違反を可視化されていました。

詳しくはブログにまとめられています。
AutoLayoutのエラーを紐解くときにやっていること

Swift4 で進化した Range: ezura さん

スライドはこちらで公開されています。

Swift4で新たに追加されたRangeについて、コードを交えて発表していただきました。

Swift4以前はRange、ClosedRange、CountableRange、CountableClosedRangeの四種類でしたが、今回One-sided Rangesとして、PartialRangeFrom、PartialRangeUpTo、PartialRangeThrough、CountablePartialRangeFromが追加されました。

これによって、既存のRangeは (0..<5.0) と言うように、両方に値を指定していたものが、片方だけの指定で良くなりました。

具体的には以下のように指定できるようになってます。

(0..<5.0) ... PartialRangeFrom
(..<5.0) ... PartialRangeUpTo
(...5.0) ... PartialRangeThrough
(5...) ... CountablePartialRangeFrom

またこれらは、One-sided Ranges (+ protocol) の純粋な追加のため、既存のコードにそのまま追加できる利点があります。
これによって書きやすく、可読性が向上しました。

Introducing Feedback Tool - Ajimi: nakajijapan さん


不具合報告時の煩雑さを軽減するために調査したことや、作成したライブラリについて発表していただきました。

Instabugなどの良い点・悪い点を参考にし、Githubで完結するようにライブラリを考案されていました。
コードはAjimiとして公開されています。

レポートのフォーマットは当然ながら、スクリーンショットを撮って、気になった箇所にマークをつけてGithubに送る仕組みや、画面操作の動画を保存し、GIFに変換してGithubに送る仕組みなど、5分に収まらないほどの知見が含まれて居るため、スライドを見直して復習したいと思います。

Vision Framework: Motoki Narita さん

スライドは公開され次第、貼り付けます。

関われているプロダクトでVision Frameworkを利用したバーコードリーダーを作成された際の知見を発表していただきました。

Vision FrameworkはCore MLでも使われる画像解析Frameworkで、こちらのBarcode Detectionを利用してバーコードの読み取りを行った際、バーコード自体の検出はできても、ISBNが取得されないとのことでした。

iOS 11のリリースまでにはそのうち対応されるかも、とのことでした。

最後に

懇親会では登壇者・参加者の皆様が関わられているプロダクトについての知見を、おいしい料理をいただきながら終始和やかに談笑できました。
会場や料理を提供していただきましたクックパッド様、TIPSの共有をいただきました発表者の皆様、ありがとうございました!