Introspect
Introspect は SwiftUI のコンポーネントの裏に UIKit がいることを利用して SwiftUI のコードでは直接カスタマイズできないコンポーネントのかゆいところに手を届かせるためのライブラリです。
ScrollView
SwiftUI でScrollView
にはrefreshable
が効かないのですが、Introspect を使えば効くようにできます。
Introspect は SwiftUI のコンポーネントの裏に UIKit がいることを利用して SwiftUI のコードでは直接カスタマイズできないコンポーネントのかゆいところに手を届かせるためのライブラリです。
SwiftUI でScrollView
にはrefreshable
が効かないのですが、Introspect を使えば効くようにできます。
正直、アーリーアクセス版と言われても仕方のない完成度です。
そもそもアーリーアクセス版とは何なのか、何故スプラトゥーンはアーリーアクセス版と言われても仕方がないのか解説します。
アーリーアクセス版というのはゲームがある程度遊べる状態になった未完成の段階での製品のことです。
なんで未完成のものをリリースするのかと言えば、例えば何らかのレベルデザインをする際に製品版にしてからユーザーの意見をきいて変更するよりも「だいたいこんなゲームなんだけど、難易度はどうすべきだろうか」みたいな形でリリースしておいて、ユーザーの意見やフィードバックをきいてから実装するほうが二度手間にならずに楽だからです。
大前提として、秘密鍵をファイルにそのまま平文で書くことは全く推奨されません。
そのファイルが洩れれば、即座にセキュリティが崩壊することになるからです。
一般的には.env
などで対応することが多いと思うのですが、Xcode にはそんな嬉しい機能がありません。
正確には起動時に実行されるスキーマを変更すれば環境変数を設定することができるのですが、それをしても秘密鍵が書き込まれるのが*.swift
になるか*.xcodeproj
になるかの違いしかないので意味がありません。
シンタックスハイライトとは、コードブロックに書かれたコードに対していい感じに色を付けてくれる仕組みのこと。
これをやるにはコードブロック内のコードの解析が必要なので Javascript の手を借りる必要がありますが、シンタックスハイライトをするためのプラグインというものは既に開発されて普及しており、
今回の API の変更は任天堂のサーバー側の問題でした。
より具体的にいうとセッショントークンを取得する過程で必要な二つのトークンを取得する際に外部 API を使ってf
という値を生成しているのですが、そのf
が正しく任天堂の公式アプリから生成されているものかどうかを厳密にチェックするようになりました。
というのも、f
を計算するにあたってtimestamp
の値が必要なのですが、これを外部サーバーを利用して取得すると通信時の遅延の問題で、実際にf
を発行した時間と、API を叩いてf
を取得した時間に差異が発生してしまいます。