potatotips

毎回人気で発表枠でもなかなか参加できない勉強会potatotipsにいってきました。
(発表者枠で申し込んでたけど、抽選に外れて参加できそうになかったのでブログまとめ枠で滑り込みました)

詳細はこちら
【第20回】potatotips(iOS/Android開発Tips共有会) – connpass

会場はVOYAGE GROUPさん。
会場には、ポテトチップス、ピザ、ビールだけでなく寿司まで用意されていて豪勢でした。

発表の数が多くて、タイピングが追いつかなかったのでiOSの発表だけまとめてます。


CoreSpotlight Optimization

@sakmtechさん
VOYAGE GROUPの人

CoreSpotlightとは

  • iOS9新機能の1つ
  • アプリ内の検索結果をSpotlightで表示することができる
  • タイトル、説明、キーワードを設定できる(キーワードは非表示)

どうやったら上に表示されるか

  • タイトル、説明文、キーワードの順で優先してマッチしたものが上に表示される
  • ひらがなで検索した時もカタカナや漢字も検索でマッチする
    (例)なつ->夏,懐 etc..
  • トップヒットに乗るのは1アプリ3つまで
  • 先にインストールしたアプリが上に表示される
  • まだまだbetaなので結果は変わる可能性あり…

watchOS1のアプリをwatchOS2移行する

@mo_to_44さん
ネクストの人

  • watchOS 2 Transition Guideが提供されている(ここに重要な事がさらっと書かれているらしい)
  • watchOS1から2への最大の変更点はWatchのExtensionが動作する場所ががiPhoneからWatchに変更になっていること
  • データストアはiPhoneとwatchの両方にあるようになった
  • iPhoneとwatchのデータを同期するWatch Connectivityを使用する

とにかく明るいCore Spotlight

@yimajoさん
エンジニアアウトプットランキング – Stargazerの人

TweetRainというアプリでニコニコ動画みたいに#potatotipsハッシュタグが付いているTweetがスライドにオーバーレイ表示されていました。

ユーザ目線での使いどころ

  • 電子書籍リーダのタイトル
    • KindleとかiBooks両方に書籍を入れているので、CoreSpotlightで両方を検索できればうれしい
  • サンプル(iOSDayByDayというものがある)
  • キーワードだけじゃなくてEメールなど検索できるものが160個ぐらいある

参考資料(見たほうが良い資料)


英語版リリース前に知っておきたいこと

@horimislimeさん
トレタの人

NSLocalizableString

  • Localizableの使い方をミスると大変
  • こんな風にすると姓名が逆になっちゃうことがある
[NSString stringWithFormat: @"%@ %@", NSLocalizedString(@"lastName", @""),  NSLocalizedString(@"firstName", @"")]

NSPersonNameComponents&Formatter

  • アプリを実行しているロケールに応じて、いい感じに姓名の順番を整えてくれる
  • suffixで”Mr”,”Mrs”や”様”などをいい感じにつけられる
  • iOS9からしか使えない

stringsdict

  • 複数の時に〜sをつけたりしないといけない
  • stringsdictを使えばXMLを書いておくだけで、〜sを付けられる

NSDataIntervalFormatter

  • 時刻の区間をいい感じのフォーマットの文字列にできる

画像リソース

  • ButtonにBackground Imageを使っているとボタンのサイズが変わった時に大変
  • 使わない方がいい(文字のタイトルはLabelで!)

Crowdin

  • 翻訳支援サービスCrowdinが便利
  • XLIFFを書き出してアップロードするのみ
  • 外部翻訳者とのコミュニケーションとか進捗管理が楽
  • APIもあるのでCIと連携することもできる

PUSH通知証明書作成ツールを作った

@tomzohさん
デジタルサーカスの人

iOSのPUSH通知のための証明書作成

  • 3ヶ月に1回更新しないといけない
  • Macじゃないとだめ
  • 黒い画面での操作

ツールを作った

  • WebからPush通知の証明書をDLできる
  • Dev/Prod対応
  • テスト送信もできる
  • p12ファイル対応
  • CakePHP製

今日から使える!

monotty


CommandLineTool

@kitasukeさん
メルカリの人

SwiftでCommand Line Tool

  • Xcodeで作ることができる
  • Cathegeのコードを見ると作れる(最初の方のコミットがかなり細かいので、それを追えばわかりやすい)

  • プロジェクト設定のコマンドラインツールのテンプレからは作れない
  • Embedded Content Contains Swift Code for framework targetがデフォルトでNOになっているけどYESにしないとSwiftコードが実行できない

2時間の暗号化済み動画データはどうやって再生するのか

@satoshi_0212さん

問題

  • 2時間の番組はメモリ上に乗るのか
  • 暗号化&復号化が必要
  • オフライン再生

方針

  • 標準のAVPlayerのクラス+HLSを使用する方法
  • ffmpegのコードを使用する方法
  • 納期が短かったため前者を採用

実装

  • 動画ファイルを暗号化キーで暗号化して分割してtsファイルを複数作成
  • tsファイルの再生はAVPlayerで再生できないのでcocoaHttpServerでiPhone内にHTTPサーバを立ててストリーミング再生
  • 再生はAVPlayerにHLSの再生リストを渡すだけでOK
  • 無事にAppStoreに公開できた

SFSafariViewControllerとOAuth

https://speakerdeck.com/kshuin/oauth-with-sfsafariviewcontroller

@huinさん
フリルの人

SFSafariViewController

  • Safariと同じだから、使い慣れたインタフェース
  • SafariのCookies情報を利用可能
  • PW/クレジットカードのオートフィル
  • ATSに引っかからない

OAuth認証

  • アプリ内のWebView認証はユーザからみて安全でない
    • JSつかってid/pwを抜いたりできてしまう
  • SafariViewControllerをつかってOAuthしましょう(Appleもこれを推奨しているらしい)

感想

WWDCからしばらくたって、みなさんが収集したiOS9の知見が聞けて非常にためになりました。
ブログまとめ枠で参加すると、枠が空いているし、強制的に集中して聞くようになるので、結構良かったかなと思いました。