kumamotone’s blog

iOS/Android アプリエンジニアです https://twitter.com/kumamo_tone

iOSDC2017 前夜祭に参加しました

f:id:kumamotone:20170915231255j:plain

iOSDC2017 前夜祭に行ってきました。

f:id:kumamotone:20170915231453j:plain

早稲田大学西早稲田キャンパス。駅と直結なんてすごすぎる。建物も無骨ながらおしゃれ。カルチャーショック。

「フリードリンク」という書き方がわざとらしいし先に気づいている人100万人ぐらいいそうだなと思ったらy.imajoさんがすでにつぶやいていらっしゃった。

以下発表です。内容メモは本当にメモという感じなので間違い等ありましたらすみません。

niwatako.hatenablog.jp

にわタコさんは本当に凄い

SiriKit and Me -TachibanaKaoru (@TachibanaKaoru) さん

CfP

去年発表されたSiriKit。Siriにしゃべるだけでアプリが動かせる?と話題になりましたが、実際には使える機能が限定されているので、なかなか使う機会が多くないと思います。
その上、実際にプロダクトにいれようとすると、SiriKitは通常のアプリ開発ではあまり出会わないような困難がいろいろと待ち受けています。
ここでは、実際のプロダクト開発の経験とをもとに、それをうまくのりこえる方法をお教えします。
WWDCでAppleのエンジニアに聞いてきた裏技もお伝えします。

リンク

togetter.com

内容メモ

  • 「SiriKit使ってる人?」→この広い会場に3名w

使用例

  • Siriからタクシーを呼ぶ
  • LINEでメッセージを送る

SiriKitおすすめの理由:

  • システム・アプリケーションから自分のアプリへの導線を確保することができる!
  • アクセシビリティ的にも良い(目が見えなくても使える)
  • アプリが日本語のみの対応の場合でも、他の言語から呼び出せる(たぶん)
  • HomePod

SiriKitの使いかた:

  • SiriKitはフレームワークの名前ではない。SiriKitはAppExtension23種のうちのひとつ
  • Intents, Intents UIの2つのフレームワークがある Intentsフレームワークを追加すると、追加されたファイルの中にMessage Intentsに対応するためのコードがついてくる

ハマりポイントが多い:

  • メモリ上の情報を共有できないという問題がある。
  • タイムアウトエラーがあるので時間の掛かる処理は
  • バージョンアップで動かなくなる

まとめ

ハマりポイントも多いけど頑張っていきましょう!

感想

LINE使えるの知らなかった。Siriのジョークが

ツイートピックアップ

つらそう

Objective-C++を使ってMRCで快適に開発する - 八十嶋祐樹 (@yaso_san) さん

CfP

iOSやMacの開発において現在ではARC(Automatic Reference Counting)が前提となっており、MRCの時代と比べて飛躍的に簡単になりました。しかし、開発するアプリによってはMRCでメモリ管理をしたい場面が少なからずあるはずです。そんな時はObjective-C++の力を使って、ARCのように快適な開発をしましょう。

リンク

togetter.com

内容メモ

サンプルコード

github.com

ARCとMRC

  • MRCは参照カウンタ方式のメモリ管理を手動で行うやつで、ARC以前はこれでがんばっていた
  • release すると参照カウントが減る。@autoreleasepool を使うこともできる。
  • Objective-Cを使うには拡張子を.mmにする
  • Objective-C++ではObj-CとC++が混在できる

似た機能の呼び方の違い

ObjC/Swift C++
インスタンス変数・メソッド  メンバ変数・関数
イニシャライザ コンストラクタ
ジェネリクス テンプレート
ブロック・クロージャ ラムダ式

開放されるタイミング:

  • C++ スコープを抜けた後(関数)、デストラクタが呼ばれるタイミング(クラス)
  • Obj-C [super dealloc]; が呼ばれた時

Objective-Cのオブジェクトを保持するC++のクラスをつくりました

objc_ptrというやつ

  • テンプレートにObjC型のインスタンス retainして保持
  • 参照カウントをそのまま保持する
  • autoreleaseを外して保持する
  • 弱参照で保持(weak_objc_ptr

これにより、ARCを使っているときと同じぐらいシンプルに書けるようになった :+1:

Q&A

  • どういうときに使う?→オーディオ。ARCだと音に影響が出る(音が飛ぶ)気がした
  • C++11は使えるとして、14は?→選べる。Xcodeのデフォルトは11だが、14や17も選べる

感想

Obj-C/SwiftとARCだとできないところを、人とは違う道を地力で切り開こうとしているところがエンジニアとして素晴らしいなと感じました。

ツイートピックアップ

この前置きから始まったので本当に道楽みたいな話なのかなと思いましたが普通に納得感ありました

本当にそれという気持ち

Swift世代なのでそうなんだ〜という気持ちでTLを眺める

書き手の良心が試されそう

これもヤバそう。

Swaggerで始めるAPI定義管理とコードジェネレート - 杉上 洋平 (@susieyy) さん

CfP

REST APIのインターフェイス仕様をSwaggerのAPIドキュメントで一元的に定義・管理することで、モバイルとサーバエンジニア間のコミュニケーションを齟齬なく円滑に進めることができます。
さらに、SwaggerのSwiftコードのジェネレート機能を活用することで、工数の削減と品質の向上を図り生産性を高める方法をご紹介します。

リンク

togetter.com

内容メモ

なぜ管理したいのか?

  • サーバーとの認識の齟齬を減らす。値の型や、本番ではnullで返ってくることがあった!とか‥
  • →Swaggerを使う(世界一使われている)

Swaggerについて:

  • Swagger、色々ある 専用エディタが提供されていてブラウザで動いたり。
  • リアルタイムで指摘してくれて良い
  • エンドポイントのパス、QUERYパラメーター定義、レスポンスのモデル定義への参照

Swagger CodeGen

  • 色んな言語に積極的に対応(Swift4,Kotlin‥)
  • JSONのパースはCodableで実装、Optionalの定義にも対応、API Client部分はAlamofireがベース、RxSwiftとも連携可能(レスポンスがObservableになる)

まとめ

  • これからは品質に観点がフォーカスされていくのでは? SwaggerでのAPI定義およびコードジェネレートがその一助になると良いですね

感想

CodeGen便利そう!使ってみたい 雰囲気しか追えてないところもあるので後々資料よく眺めたいです。

ツイートピックアップ

個人的にもこれがひとつ学びでした。

意外と良さげでそそる。

節子、それViewControllerやない…、FatViewControllerや…。 - 田中賢治 (@ktanaka117) さん

UIViewController(以下UIVC, VC)クラスにおいてよく起こりがちな問題があります。iOS開発者であれば一度は耳にしたことがあるでしょう、「VCの肥大化問題」です。VCの肥大化の原因は、UIVCクラスの責務過多にあります。
このトークでは、UIVCクラスの責務を見つめ直し、「VCの肥大化問題」に対して、設計の観点からどのように解消できるかを紹介します。
扱う内容(仮)
・UIVCの責務を振り返る
・よくある解決策: MVP
・責務分けにチャレンジ!

リンク

togetter.com

内容

なぜViewControllerの責務分けが重要なのか?:

  • →VCがアプリにとって重要なため、実装をVCに寄せがちだから
  • 通信処理がVCにある複雑なビジネスロジックがVCにある…テストどう書く?

FatVCとは

  • ☓コード量が多い
  • ○抱える責務が多くなっている

FatVCの欠点は?

  • 読みにくいしバグが入り込む、テストしにくい

MVP:

  • ビジネスロジックと描画処理を疎結合にする
  • Pが入ることに寄って、ビジネスロジックへの繋ぎ込みが切り出せる
  • 責務を切り分けるのが正義なのか?:
  • 必ずしもそうではない。やりすぎると開発コストが高くなってしまうデメリットもあるので、その場その場で設計は使い分けよう
  • →テストしやすさ、メンテナンスしやすさのために、適切に責務を切り分けましょう!

感想

話が面白すぎる。MVA大事。

リアルタイムでブログ投稿する田中さん。

dev.classmethod.jp

記事がとても親切。

ツイートピックアップ

何があったんだ

なるほどビルド時間にも影響が出るんですね。

終わった後

ここからは日記です。

tabelog.com

西早稲田キャンパスからはちょっと遠かったですが武闘家という家系ラーメン屋に行きました。

家系、チェーンとかまともなの食べたことなくて、一回ちゃんとしたやつ食べてみたかったのだが、大変おいしくて満足。

帰ろうと思ったら祭りやってた。

完全に夏。

あとの2日も学び深い・楽しい日になりますように!