1. TimeTreeラヂオ
  2. iOS歴代新機能開発ヒストリー..
Steve
Steve
Co-host

「TimeTreeラヂオ」はカレンダーシェアアプリTimeTreeを運営する私たちメンバーが、ふだんの仕事に関係することもそうでないことも、だいたい15分でひとつのテーマを話しきるインターネットラジオ番組です。

この放送はTimeTreeエンジニアによるテックなお話をお届けする #TimeTree Tech Talk です。

今回はiOSエンジニアのTrevorと一緒に、iOSの歴代新機能開発ヒストリーとPush Notifications Consoleについて話しました!

◎TimeTree Company Deck(会社案内資料)

⁠⁠⁠https://bit.ly/timetree_company_deck⁠⁠⁠

◎一緒に働く仲間を募集しています!(採用応募ページ)

⁠⁠⁠https://bit.ly/3MyqZjE⁠⁠⁠

番組の感想・コメント・ご要望はハッシュタグ ⁠⁠⁠#TimeTreeラヂオ⁠⁠⁠ でつぶやいてください!

サマリー

iOSエンジニアのトレバーが、iOS17の新機能やタイムツリーの歴史についてお話ししています。また、プッシュ通知に関する新機能の開発や実装についても話し合われました。具体的には、iOS歴代新機能開発ヒストリーとPush Notifications Consoleのエピソードで取り上げられています。

00:00
ちなみに、なんかスコットちょっと声が小さい。
それ、私も思った。
すみません、マイクの感度があれなのかな。
チルい感じでやってるのかなって思っちゃいました。この低めのトーンで。
そうですね、チルい感じでやってます。
これ、声大きいか。
インプットボリュームちょっと上げました。
良さそう。
声聞こえてるかな、大丈夫?
大丈夫です。
なんか、すごいインプットボリュームすごい低かったんですね。
ガツッと上げてもらってた、なんか大丈夫です。
ガツッと上げました。
お子さん近くで寝てんのかなって思いました。
子供は寝てます。寝てますっていうか、寝てるのか寝てはないけど、お昼ご飯買いに行きたいって言って、さっき泣き疲れました。
では、TimeTreeTechTalk、さっき数えたんですけど、第17回ですね。TechTalkは17回目です。始めていきたいと思います。
お願いします。
はい、今回は。
こんなぬるっと始まる。
こんなぬるっと始まるんだ。
こんなぬるっと始まるんですけど、こんな感じですよ、毎回の収録。
今回ですね、iOSエンジニアのですね、トレバーをゲストにお迎えして、iOSのですね、大体トレンドっていうんですかね、WWDCとかで発表されるような新しい機能っていうのをいち早く取り入れてるっていう、どうやってやってるのかみたいなことだったり、最近ハマったことだったりを聞いていければなと思っております。
はい。でですね、僕は、もともとっていうか、ずっとバックエンドエンジニアでiOSのこと何もわからないし、最新のトレンドも何もわからないみたいな状態なんですけれども、そうですね、ちょっと最近、最近どういうことがあったのかなみたいな聞こえるんですけど、先日あれですね、公開ジュビフラーっていうのを見て、こういうことやってますみたいなことをトレバーが紹介してくれてたのをちょっと発見してですね、それについてねほりはほり聞いていこうかなと思っている感じでございます。
うん。
はい。
ちなみにジュビフラーっていうのは、社内、社内用語ですね。
あ、そうです。
社内のイベントですね。
うんうん。
以前まで。
うん。わかりやすい文脈で言うと、OKRのWinセッションですね、をジュビフラーと呼んでいる。ジュビリーフライデーかと呼んでいるというふうにですね。
最近の仕事を手がけた開発について、なんか共有、発表する会。
そうですね。
そうですね。
昔は開発のこととか多かったですけど、最近はなんだろう、広告の話とか、あとはなんだっけ、ユーザーリレーションチームの話とか、なんか開発だけに限った話じゃなくて、こんなことやりましたみたいなことをいろんな人が発表しているというイメージですね。
うん。
あとは、最近だとなんだっけ、新メンバーにタイムツリーの会社の印象を聞くみたいなことをやってたりとか。
はい。
してましたね。
はい。
はいはいはい。
これは社内のやつですけど。
社内ですね。
はいはい。
それの社外公開版をやったので、その話題についてトレバーに聞いていくと。
うん。
OK。
ありがとうございます。
じゃあちょっと本題、本題に入りましょうかね。
はい。
すいませんね。
本題に入りましょう。
iOSのバージョンアップデートの歴史
最近、一番最新のOSで言うとiOS17?
そうですね。
ですかね。
17って何があったんですか?
はい。
はい。
はい。
はい。
はい。
はい。
iOS17、iOS17の話をされちゃうと、ちょっとね、実はあんまり目立った機能っていうのは実装してないんですよ、タイムツリー。
そっか、まだなのかな。じゃあちょっと歴史を追ってたほうがいい。どういうことやってきたかみたいな。
そう。というのも、今までは結構いろいろメジャーバージョンアップデートされたときには、いろいろ多様性があったりとか。
いろいろ対応してきたんですけど、iOS17で発表された新機能のやつは、タイムツリーとの相性が、相性がもよさそうな機能というか、なんというか。
使えそうのやつ
使えそうのやつ。
タイムツリーに取り入れるとユーザーに喜ばれそうだよねとか
この機能は相性良さそうだよねっていう話をみんなでして
その中からピックアップをして実装していくっていうことを
毎年やってるんですけれど
その話し合いの結果
キンキンでなんかこれやったらいいよねっていうのが
ユーザーさんに伝わりにくい部分なんですけれど
広告のプライバシー関連でアップデートがあって
その辺の調査と実装を最初に取り組んだ方がいいよねということで
それを今やってますね
なので目立つというよりか
ユーザーさんの目に見える形で提供するものっていうのは
まだ取り組めてないというか
なるほど
今サポートしてるのってiOS10いくつなんでしたっけ
サポートバージョンはiOS151個
15からか
うんうん
でもその前から結構そのいろいろ
13とか12とかいろいろあったと思うんですけど
なんかこうトピックみたいなことってありますかね
とりあえずそれより前のところから
こういうこと出てきたからこれ取り組んできましたよっていうのを
ちょっと教えてもらってもいいですか
iOS13からiOS15までの新機能
自分が入社したのが2018年の11月だったので
自分が最初に体験したのは
2019年に発表されたiOS13
だったんですね
13って何だったんだ
そう僕もすごい今思い出しながら話してるんですけど
13の時の目玉機能がダークモードだったんですよね
ありましたねダークモード
めちゃめちゃ大変でしたこれは
iOSチームだけじゃなくて
デザイナーのエマとかとも相談して
全画面のライトモードダークモードを実装していかなきゃいけないんで
かつ一つ一つ対応していくとすごい時間がかかるので
法則というか
このパターンはこの色に変化させようっていうのを
一つ一つ話していって対応した
全画面対応したという記憶があります
なんか割と途方もない最後の感じがしますね
すごい大変でしたねiOS13の時はね
本当に人海戦術が
そうですねiOSエンジニア総出で画面のチェックをしてた記憶があります
うんうんうん
ただ結構これもね前から
確かDay1からしたと思うんですけどiOS13のリリースで
結構ユーザーさんから喜ばれてた記憶がありますね
で14はウィジェット対応しましたね
ホーム画面におけるウィジェットっていうのが出てきて
カレンダーと相性が良さそうだよねっていうので実装しました
それもDay1から対応してたと思います
これもそうです
でiOS15は通知が結構変わりまして
フォーカスモードとか集中モードみたいのが出てきて
ユーザーが設定しているとアプリの通知が届かなかったりとか
届かないっていう表現おかしいな
ユーザーが通知をよりコントロールできるような設定ができるようになった
この時間帯はこのアプリは通知して欲しくないとか
逆にこのアプリだけ通知して欲しいみたいな
そういうのをコントロールできるようになったんですけど
まあそれに合わせてタイムツイルが変わってきて
タイムツリーも通知の中で重要度を持たせて
この通知はユーザーに早く伝えた方がいいよねとか
この通知はそんなキンキンで伝える必要はないよねっていうのをちゃんと仕分けして
カスタマイズに対応できるようにしました
タイムツリーだとそうですよね
予定の時間通知っていうのはね
やっとかないとすぐやらないととかそういうことですかね
そうなんですよその通りで
タイムセンシティブノーティフィケーションっていうのが出てきて
日本語だと即時通知って言ってるんですけれども
大事な通知は集中モードを通り抜けられたりするんですよね
設定によって
なので予定のリマインドとかは
タイムセンシティブノーティフィケーションを使って
通知したりとかっていうのを対応しました
続いて1個前の
そう16
これはロック画面にウィジェットが出てきて
スマホのロックを解除しなくても
次の予定が見えたりとかっていう
ウィジェットを実装しました
これは今は兼務してくれているスタッド
ウェブ開発とも兼務してくれるスタッドが
いやちょっと最近ウェブばっかなんで
iOS触りたいみたいな感じで
さらっと実装してくれました
そのノリなんだ
さらっと実装してくれてありがとうございますって感じ
そのノリですよねうちはね
うちは大体そのノリで実装がされていく
でiOS17に至るっていう
WWDCとプッシュ通知の開発者用機能
iOS17になったってことですね
結構
この間その
ジュビフラで話したのは
なんかちょっと違うやつですか
そうですね
ジュビフラで話したのは
iOSのアップデートというよりかは
そのiOSの発表が行われる
WWDCで発表された
開発者用機能の話で
開発者用機能
これもプッシュ通知に関することなんですけれど
今までプッシュ通知って
ターミナル使って
いろいろコマンドというか
カールを叩いて
Appleのサービスにリクエストを送って
自分の開発しているアプリの通知のテストを飛ばす
っていうことをやってて
結構これが面倒くさかったんですよね
結果の履歴とかも
プッシュ通知の開発と実装
なんか自分で管理しないといけないし
あとはそのデータとかも
毎回そのJSONファイル
いろいろちょこちょこいじって
やんなきゃいけないしっていうので
面倒くさかったりとか
あとはそのプッシュ通知用のあれです
証明書
証明書を手元に落としてきて
その辺も使ってやらなきゃいけなかったんで
セキュリティ的にも微妙だったんですよね
ローカルに落とさないといけないんですね
そうなんですよ
そのカールで叩かないといけないんで
そのオプションで指定して
なので結構面倒くさかったり
セキュリティ的に微妙だったりしたんですけど
会社で管理している
開発者用アカウントがあれば
Web上でログインして
そのWebコンソール上でポチポチすれば
通知のテストができるっていうツールが
なるほど
それはだいぶ楽になるんですね
そうなんですよ
Push Notifications Consoleの機能
それがプッシュノーティフィケーションコンソール
だったかなっていう名前で提供されてて
お問い合わせ
結構タイムツリーって
通知を気にされてる方が多くて
お問い合わせで通知が届かないとかであったりとか
その通知の様子がおかしいみたいな
お問い合わせが届いた時に
カスタマーサポートのメンバーから
エスカレーションされてきてその問題が
それのテストすることが多かったので
今はそれを主に使ってます
テストしやすくなるとね
やっぱりその
問題解決も早くなるんですね
そうですね
今まではカールで叩くのが
すごいめんどくさかったんで
実際に2つタイムツリーのアカウントを用意して
ポチポチやってっていうのを
やったりしてたんですけど
そういうことはしなくてよくなりましたね
なりました
あと引き継ぎじゃないですけど
新しいメンバーが入ってきた時のね
オンボーディングもだいぶ楽ですよね
そうですね
この証明書をダウンロードしてきてみたいな
このコマンドでみたいな感じのことを書かなくて
よくなりましたね
履歴が見れるんですよね
この通知
このペイロードっていうの
このデータをこの宛先に送ってた時に
どういう結果が返ってきたのかっていうのが
30日間分保存されてて
しかもその履歴から履歴をコピーして
またその通知を送れるんですよね
なんでとてもその辺も楽になりましたね
問題の切り分けとかが
履歴を見ながらできるようになったっていうのが
逆にこれでなんかハマったみたいなこととか
めっちゃいいというか
もうこの後の展開をそうしてたかのような質問みたいなんですけど
ありました
結構言葉だけで説明するのが難しいんですけれど
通知に載せるペイロードJSONのデータを
GUIでポチポチ選んでいけるんですよ
キーをプルダウンのUIから選択して
じゃあこのキーにはこの値を入れるっていうのを
値を入れるっていうのが難しいんですけど
自由入力で入れるみたいな感じなんですけれど
それがですね
その画面を使って入力すると
送るときに正しい値とかキーが入ってるかっていうのを
バリデーションしてくれるんですけどコンソールが
そのGUIを使ってるとそのバリデーションが効かないっていう問題がありまして
JSONをそのGUIをJSONに直したときに
どういう形になるのかっていうのを
ワンボタンで変換できるんですけど
そういう形でクリックするとコンソール上で
そのJSON表示モードにするとバリデーションが効くんですけど
プルダウンの入力画面では出てこない
そう出てこないんですよ
しかもバリデーションが効かないだけなら
バリデーションエラーが出てこないだけならいいんですけれど
遅れちゃうんですよね通知がそのまんま
そのまんま実行できちゃうんですよね
でコンソール上では送信に成功したってなってるんですけど
OSの通知が出てこないんですけど
というか端末までには
バリデーションに失敗した通知が届くんですね
ただ値が正しくないから
OS側からアプリにその通知が届かないんですよ
OSからアプリに
アプリの中の処理で通知を受け取った時に
こういうハンドリングをするっていうコードを書くんですけど
そこがトリガーされないんですよね
なんでコンソール上では遅れたってなってるのに
アプリ側でその挙動が確認できないっていうことがあって
アプリからは見えない
なんでみたいなのしないってことをバリデーションエラー
バリデーションエラーになるのこれってなって
よくよく端末のログもコンソールアップっていう
Macのアプリで
MacにつないだiPhoneのログを見れるんですよね
その中のタイムツリーが関連しているログを眺めてたら
通知を受け取るログのところでエラーが出てて
それで気づいたっていう感じでした
なるほど
それはちょっとUI側でエラーが出てほしいよねっていうところだけど
JSONビューにしないとダメだと
そうなんですよ
いうのがハマりそう
騙されそう
もしお試す方がいらっしゃったら
送る前に一度JSONのビューの方に切り替えていただいて
送ってもらえるとバリデーションエラーに気づきやすいかな
これなんか普通に数日ぐらいハマりそうです
結構時間かかりました
なんでなんでとか
そうですね
開発してるとこういうことはありますよね
常に
取り組みっていうんですか
どうやってそういうのをみんなで共有してたりするんですか
新しいニュースみたいな
タイムツリーではスラックをコミュニケーションツールとして使ってますよね
誰でもチャンネルが作れる状態じゃないですか
なのでWWDCがあるたんびに
WWDCチャンネルっていうやつに
みんなで集まって
リアルタイムで公演を見てワイワイ言うっていうのを
毎年やってますね
見てるのは
WWDCって数日間を通して
めちゃくちゃビデオがアップロードされるんですけれど
一応みんなで見るのは基調公演っていう
キーノートっていうやつがあるんですけど
全体的に今年のWWDCはこういう話を
トピックをやるよっていうのを最初に
発表してくれる公演があるんですけど
それを見るっていうのが
っていう感じですね
その後はさっきのダークモード対応してくれた
シオンとかがよくやってるんですけど
数あるビデオの中から
気になったトピックのものを
ノーション上でピックアップして
私も気になったやつとかは
ノーションで記事にしてるんですけれど
そこで個人的に見て気になった知見を
毎週のiOS雑談
毎週そのiOSチームでやってる定例
毎週のiOS雑談
があるんですけど
その定例で実はこういうビデオがあって
みたいな話をやったりしてます
そうですね時間的にもこんなところかな
今日は撮ればありがとうございました
好きかって喋ってすいません
カットするところは
このところもちょっとありましたけれども
ということで
タイムツリーテックトーク第17回です
17回もやってるんですね
数えたらびっくりしました
これで終わりたいと思います
タイムツリーでは一緒に働くなんかも
募集しておりますので
CMっぽいやつ入れる
ありがとうございます
17:56

コメント

スクロール