#WWDC22 Meet Apple Maps Server APIs メモ
所感
- ジオコーディングは何年も前から使えたんだけど、これをServer APIで開放したイメージかな
- 1日に25,000回まで利用可能。アップルさんがんばった(昔は1時間に2回しか使えなかった)
- 25,000 は少ない!という声もあるけど、「超える場合は連絡してね」とのことなので、連絡してみたら良いのでは
ツイートまとめ
続いて Meet Apple Maps Server APIs のセッションもみていきますよ #WWDC22 https://t.co/7bw9vI0GE5
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
#WWDC22 Server aggregation pattern により、クライアントは1回のリクエストで必要な情報を得ることができ、ネットワーク負荷を削減できる pic.twitter.com/SwaBFUPMVw
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
#WWDC22 geocoding の例:
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
123 Comic Books, Comic City, New York 12345
↓
37.333, -122.0100
のように住所から緯度経度に変換 pic.twitter.com/HBAsBAqV4G
#WWDC22 ETA(Estimated Time of Arrival) API:
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
37.333, -122.029
↓
目的地までの距離、予想到着時間などを取得できる pic.twitter.com/OFg20vHaMa
#WWDC22 Apple Maps Server APIの認証フロー
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
ユーザーはprivate keyを元にJWTトークンを発行。Apple Maps serverからMaps access tokenが発行される(30分毎にリフレッシュが必要) pic.twitter.com/0j5FzspA48
#WWDC22 Apple Maps Server API、なんと1日に25,000回まで利用可能!1時間に2回しか使えなかった頃と比較するとだいぶ太っ腹では。
— Kosuke Ogawa🌥️エンジニア🏝宮崎 (@koogawa) 2022年6月7日
現在の使用回数はダッシュボードから確認できる。この回数を超えるとHTTP status 429を返す pic.twitter.com/JAFu9eaezL
#WWDC22 Get to know Developer Mode メモ
所感
- なぜDeveloper Modeが必要?というところをもうちょっと詳しく調べてみたい
- とはいえ、不要な機能を開放しておく必要はないのは確かだよね
- Distributionされたビルドでは不要とのことだけど、Adhocビルドはどうなんだろ?
ツイートまとめ
Developer Mode のセッションが公開されているのでみていくよ / Get to know Developer Mode https://t.co/rCOZ9MPO51 #WWDC22
— Kosuke Ogawa⛅エンジニア🏝宮崎 (@koogawa) 2022年6月7日
なぜDeveloper Modeが必要?
— Kosuke Ogawa⛅エンジニア🏝宮崎 (@koogawa) 2022年6月7日
・開発者用の機能が標的型攻撃などで悪用されている
・ほとんどの人にとってデフォルトで開発者用の機能を使う必要はない#WWDC22 pic.twitter.com/HuNutlsESE
Developer ModeはTestFlightやEnterprise distribution、App Store配布では不要。ローカル環境での開発のみ必要になる#WWDC22 pic.twitter.com/ZdgeTTEd2M
— Kosuke Ogawa⛅エンジニア🏝宮崎 (@koogawa) 2022年6月7日
まだDeveloper Modeをオンにしていないデバイスを接続すると、Xcodeがダイアログを表示する。
— Kosuke Ogawa⛅エンジニア🏝宮崎 (@koogawa) 2022年6月7日
iPhoneの設定>プライバシーからDeveloper Modeをオンにして再起動。もう一度ダイアログが出るので、そこでオンをタップ#WWDC22 pic.twitter.com/8tk9UgJ4Gn
Automation flows
— Kosuke Ogawa⛅エンジニア🏝宮崎 (@koogawa) 2022年6月7日
macOS Ventura では `devmodectl` が利用可能。複数のデバイスを繋いでパスコードを入力することなくDeveloper Modeに設定できるっぽい?#WWDC22 pic.twitter.com/bRexL0A6TT
2021年を振り返る
今年も無事に仕事を納められそうです。
- 2020年の振り返りはこちら
仕事
SwiftUI/Combine
昨年まではフロントエンド/バックエンドが中心でしたが、今年はまたiOSアプリエンジニアに戻り、SwiftUI + Combine をメインでやってました。フルSwiftUIで開発し、3月にリリースした作業配信アプリがこちらになります。
フル SwiftUI で開発しました💪使ってみてね
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年3月30日
創作活動の作業ライブ配信サービス『00:00 Studio(フォーゼロスタジオ)』、iPadで画面共有配信ができるアプリを正式リリース https://t.co/xIYQrcVyVC @PRTIMES_JPより
今回は Storyboard を一箇所も使わなかったわけですが、SwiftUI は iOS標準に従ったデザインであればとにかく高速に開発できてしまう印象でした。特に設定画面のようなリスト構造の画面では、従来のUITableViewを意識しなくて良いので非常に楽です。さらにコンフリクトも起こりにくいです。
良い椅子を買った
昨年までは高校生のときにかった3,980円のOAチェアで頑張っていましたが、思い切ってエルゴヒューマン椅子を購入しました。
エルゴヒューマン ベーシック届いたわよ!26kgあるらしい💺 pic.twitter.com/hipOGv7Nsc
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年1月4日
頭を支えてくれるのが最高で、疲れてきたらあぐらをかいて座れるのもポイントです。ただ、とにかく重いので、引っ越しの際は大変です。
賞を頂いた
昨年に引き続き、会社で賞を頂きました🎉
会社で賞を頂いたのでこれからもやっていきます💪 pic.twitter.com/0C62bqnxmD
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年7月8日
評価してもらえるのは本当にありがたいです。これからもやっていきます💪
プライベート
技術相談
今年は主に技術相談という形で副業をやっていました。最近は CodeBoy というサイトでお仕事の依頼を募集しておりますので、興味があればそちらからご連絡ください。
AtCoder
ついに茶コーダーになることができました🎉
ついに入茶しました!!🎉1年かかった😂
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年12月25日
最高のクリスマスプレゼントになりました🎅
koogawaさんのAtCoder Beginner Contest 233での成績:3706位
パフォーマンス:557相当
レーティング:387→405 (+18) :)
Highestを更新し、8 級になりました!#AtCoder #ABC233 https://t.co/HG9J2xa4HF
茶色がどれくらいのレベルかというと…
茶色になる条件は、Ratingが400以上になることです。茶色で保証できる実力ですが、正直、AtCoder内ではあまり高いレベルではありません。ただ、ここにたどり着く前に辞めてしまう人が多いので、十分にやる気がある人であるとは言えるでしょう。
なお、他社転職サイトと比較すると、このレーティングでも上位1~2%の最高ランクに到達出来る人が数割いるため、一般的には十分高いレベルであると言えます。 AtCoder社長chokudaiさんの記事より引用 https://chokudai.hatenablog.com/entry/2019/02/11/155904
というわけで、あまり高いレベルではないけど上位50%には入るぐらい、とのことです。しかし、高校時代から数学が苦手だった自分にとっては十分な結果であります。
今後ですが、「AtCoderで茶色になる」というのが当初の目標だったので、競技プログラミングの優先度はちょっと下げていきたいと思っています。例えば、F1開催と重なった日も今まではAtCoderを優先していましたが、今後は普通にF1を観ると思います。(競プロをやめるわけじゃないよ!)
ミニ四駆
夏ぐらいから突然ミニ四駆にハマり、親子で参加した秋の大会では表彰台に上がることができました🎉
息子のマグナムセイバーが3位で表彰台でした🥉めちゃくちゃ楽しかった! #ミニ四駆 pic.twitter.com/gqXpZYHaDt
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年11月7日
私はハマったらとことんのめりこむタイプなので、来年もいろんな大会に参加したいと思います。
来年
リモートワークでも外に出るようにしている
今さら感の強い内容だが、たまにはリモートワークネタでも。
私はリモートワークを始めた当初から、週の半分以上は自宅以外の業務スペースで作業をしている。思考の整理も兼ねて、その理由をまとめてみたいと思う。
光を浴びたい
私は昔から冬があまり好きではないのだが、その理由が少し分かった気がする。
国立精神・神経医療研究センター(東京)睡眠・覚醒障害研究部の栗山健一部長は「日光を浴びないとセロトニンの分泌が減り、気分や意欲が落ち込んでしまう」と指摘する。
セロトニンは脳の神経伝達物質で、心の安定や頭の働きを促す。部屋にこもったり、日照時間が短かったりすると分泌が進まず、眠気も強まる。不足を補うため炭水化物を欲し、食生活も乱れる。もともと抱えるストレスと重なると、仕事や家庭生活などに与えるダメージは大きくなる。
冬はなぜか気持ちが落ち込む…という感覚はあったが、実際、光を浴びないとセロトニンの分泌が減り、意欲の低下につながることがわかった。たしかに朝、日光を浴びながら自転車でコワーキングスペースに向かうだけで気分の上がり方がぜんぜん違う。
ちなみに、冬だと退勤する頃にはすでに暗くなっているので、ランチを食べたあといったん帰宅して続きをやる、みたいなことも時々やっている。
良い天気っすねー🌞 pic.twitter.com/5zZdAa97UY
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年11月9日
緊張感のある環境に身を置きたい
自宅は落ち着くが、自由すぎて気付いたら動画をみちゃってたりする。コワーキングスペースだと他の利用者がいるので適度な緊張感を保てる。あと、人から見られてる感があるので、姿勢とか表情も自然とシュッとする気がする。
話のネタになる
我が家では夕食時に今日あったことをあれこれ喋るのが習慣となっているが、一日中自宅で作業した日は驚くほど話題がない😅 逆に、外で作業した日は「あそこに新しい店がオープンしていた」「さっき虹が出ていた」みたいな話題が自然と生まれるのである。
帰ろうとしたら土砂降り☔️雨宿りしてたら綺麗な虹が #宮崎 #虹 #どようだよギャラリー pic.twitter.com/kEDjXq9BOP
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年7月9日
コワーキングスペースのほうが作業環境が良い
これは外に出るモチベーションを上げるためのコツでもあるのだが、コワーキングスペースで使うモニターやキーボード、椅子などを自宅より良いものにすることで、「外で作業したほうが効率が良いし、出かけるかー」といったきっかけになったりする。
実際、いま自宅で使っている Apple Thunderbolt Display よりコワーキングスペースに置かせていただいているLGの4Kモニターのほうが大きかったりする。
エルゴヒューマン ベーシック届いたわよ!26kgあるらしい💺 pic.twitter.com/hipOGv7Nsc
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年1月4日
運動のため
3kmほど離れたコワーキングスペースに自転車で通うだけで割と良い運動になる他、その間にアイデアが閃く・思考が整理されるといった副次的な効果もある。実際、家に着くまでに課題やバグが頭の中で解決したこともあった。
体型維持のため
大げさかもしれないが、ずっと自宅にいて、一週間ぶりにジーンズを履こうとしたら体が太くなっていて、腹を引っ込めないと入らない!ということも実際にあった。定期的にいつもの服を着て外に出る、ということは割と大事なのである。
美味いものを食べたい
コロナの状況にもよるが、コワーキング周辺のお店でぼっちランチを決めるのが小さな楽しみだったりする。そして、帰りにいつもの模型屋さんにフラっと寄ってミニ四駆のパーツを買ったりする。
こういった「楽しみ」をつくることは意外と大事だったりする。
#ミニ四駆 パーツが増えてきたのでケースを購入 (@ 模型の国トヤマ in 宮崎市, 宮崎県) https://t.co/w5lvfkFSfX pic.twitter.com/zZLecrAnRs
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年8月2日
はてなブログ10周年特別お題「はてなブロガーに10の質問」
はてなブログ10周年特別お題「はてなブロガーに10の質問」に答えてみるよ!
ブログ名もしくはハンドルネームの由来は?
koogawa は新卒で入社した会社で割り当てられたアカウント名です。すっかり気に入ってしまい、10年以上使い続けています。
はてなブログを始めたきっかけは?
はてなダイアリーからの移行組です。はてなのサービスはエンジニアが多く使っているイメージがあり、自分も使い始めた記憶があります。
自分で書いたお気に入りの1記事はある?あるならどんな記事?
人生初の転職エントリ。
1ヶ月ぐらいかけて書いた記憶があります。たくさんの人に読んでいただきました。
ブログを書きたくなるのはどんなとき?
- 140文字に収まらない技術メモを残したいとき
- イベント等に参加したとき
- ポエムを書きたいとき
下書きに保存された記事は何記事? あるならどんなテーマの記事?
下書きのまま公開しない、ということは基本的にしません。すべて公開するか、全て削除します。
自分の記事を読み返すことはある?
あまり読み返さないかも!
調べ物をしているときに自分の記事がヒットすることはあります。
好きなはてなブロガーは?
id:konifar さんの記事は必ず拝読しています。
はてなブログに一言メッセージを伝えるなら?
10年間ありがとう。
人生の4分の1をはてなブログと過ごしていることになります。
これからもお世話になります。
この10年を一言でまとめると?
やがてワシも父になりました。
はてなブログとは、まさに人生。
この10年を10文字でまとめると?
人生はアドベンチャー
iOSDC Japan 2021 前夜祭に参加した #iosdc
今年も iOSDC が始まりましたね!
ここ数年はオンライン開催ということもあり、子供の世話をしながらリアルタイムで参加するのはなかなか厳しいものがあります。しかし、せっかくの大イベントですので、タイムシフト視聴機能を駆使しつつ、なるべくキャッチアップしていきたいと思います💪
聴いたトーク
今日は2つのトークを後追いで聴いたので、内容をメモしておきます。
agoraを使ってライブ配信機能を1ヶ月半でリリースした話 by @asa08
- Agora
- Design
- コメントを送る仕組み
- Real-Time message 機能を使う(先述の9つのひとつ)
- Block機能
- 配信者が不適切なユーザーを排除できる
- PeerToPeer Message を利用して実装する
- ギフト機能
- Agora RTM を利用して実装できる
- ただ、実際はフローを少し変えて実装した(自社サーバとAgoraのやりとりをなるべくなくしたかった+すでにギフトという概念がサービスにあり、そちらと合わせたかった)
- コメントを送る仕組み
- 課題や問題
- 画面のレイアウトが複雑になりすぎ
- リアルタイムで配信一覧を更新したい(最新の状態にするためにリロードする必要がある)
- クライアントでポーリングする
- Push通知を利用して一覧を更新
- Pusher (WebSocketを介したリアルタイム双方向通信を実現)を使うことにした
- おまけ
- 美顔フィルタの評判が良かった
- Agoraにも簡易的な美顔フィルタが用意されている
感想:これだけの内容を1ヶ月半で把握してリリースまで持っていったのはすごい!説明が丁寧でわかりやすいトークでした👏
iOSアプリ開発者がテスラを買って色々調べたりアプリを作ったりしつつまだ見ぬApple Carを想像する by @kenmaz
- テスラの概要
- 電気自動車。現在は4車種ある。
- 補助金を入れれば300万円〜購入可能
- 気に入っている点
- テスラを構成する技術
- Tesla API
- サードパーティ製アプリの開発事例
- S3XY KEY fob :kenmaz さん作のApple Watchアプリ。テスラのドアを開けたりホーンを鳴らしたりできる。SwiftUI製
- TeslaFi : テスラ用のデータロガー Webアプリ。位置情報や充電情報などの履歴を見たり
- Apple Car について想像してみる
- 謎が多い
- iPhone/ Apple Watch/ siri との高度な連携
- CarPlay の拡張
- 車両情報へのアクセす・遠隔操作
感想:非常に夢のあるトークでした。私も普段からクルマを運転するのでテスラ欲しくなりました。Apple Car も気になります
個人アプリ開発日誌:AppTrackingTransparency対応した
重い腰を上げて AppTrackingTransparency 対応しました。
私のアプリは未だにフル Objective-C で書かれています。あんまりいないと思いますが、ATT対応を Objective-C でやる場合のメモを残しておきます。
まず、
- AdSupport.framework
- AppTrackingTransparency.framework
を追加して、ソースコードに
#import <AppTrackingTransparency/AppTrackingTransparency.h> #import <AdSupport/AdSupport.h>
を追記します。
次に、IDFA許可ダイアログを表示したいタイミングで次のコードを実行します。
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 許可してくれたかどうかが返ってくる;
}];
ダイアログに表示したい文言は Info.plist の NSUserTrackingUsageDescription
に記載します。AppTracking はユーザー側にあまりメリットはないですし、IDFA の許可リクエストもほとんど許可してくれないと思うので、「よくわからない場合は許可しなくて大丈夫です」の文言を追加しておきました。
これで完了です。
Swift と違って、行末に ;
が必要なのでご注意ください。
計測について
仕事としてアプリ開発する場合は、IDFAの許諾率等を計測するべきだと思いますが、個人開発のアプリぐらいはあまり数値を気にせずやりたいので、今回の許諾率も計測してません。
ちなみに、普段見ているのはダウンロード数ぐらいで、アクティブユーザ数も把握していません。使いたいときに使って頂いて、不要なときまで無理して使ってほしくない、ぐらいのポリシーでやってます。
申請結果
日曜日の昼に申請して、日付が変わる頃に審査が通りました。最近だと土日も普通にレビューやってるみたいですね。