tomoima525's blog

Androidとか技術とかその他気になったことを書いているブログ。世界の秘密はカレーの中にある!サンフランシスコから発信中。

「なんとなく元気がない」状態には名前があり対応が必要だと全マネジャーは知っていたほうが良い

ポッドキャスト Today I Learned FMの28 回目はメンタルヘルスの話題について話しました。この記事はその収録に関する追記です。

続きを読む

初回の AppStore レビューで7回リジェクトされたので項目と対応をまとめとく

f:id:tomoima525:20210516160924p:plain:w400

最近パイロットアプリを AppStore にリリースしました。最初の審査は通常よりもきびしいという噂の通り、いや、噂を通り越して審査を通るまでに 7 回リジェクト(メタリジェクト含む)され、休日も挟んで 12 日ほどかかりました。しんどかった気持ちを供養するためにリジェクトされた内容とその対応をまとめておきます。

  • 前提条件
  • リジェクトその 1. パーミッション関連の文言
    • 対応
  • リジェクトその 2. 利用規約に反するコンテンツの扱い
    • 対応
  • リジェクトその 3. アプリの利用方法
    • 対応
  • リジェクトその 4. アイコンのデザイン
    • 対応
  • リジェクトその 5. バグの指摘
    • 対応
  • リジェクトその 6. レビューワー変更に伴う説明の繰り返し
    • 対応
  • まとめ
続きを読む

AmplifyでひとつのResource内に複数のLambda functionを作る

背景

Amplify で新しい Function を追加すると、CloudFormation 上に新しいスタックが作成されます。プロジェクトの立ち上げ期はどんどん機能追加していくものですが、プロジェクトやチームの規模が大きくなると問題になる可能性があります。CloudFormation では 1 つの AWS アカウントにつき最大 200 のスタックしか作成できないためです。

続きを読む

公園で出会った4ヶ国語話すベビーシッターが教えてくれた子供の多言語習得の秘訣

f:id:tomoima525:20210228143557j:plain 先日公園の砂場で娘と遊んでいたところ、向こうから2歳くらいの男の子とはつらつとした年配の女性がやってきた。ほどなくして娘が男の子と一緒に遊び始めたので、なんとはなしにその女性(Tさん)と立ち話を始めた。

続きを読む

Serverless Framework で作る mono repo AWS プロジェクト構成

サーバーレスなアーキテクチャを実現するサービスは世の中いくつか存在します。その中でも Serverless Framework(serverless.com) はベンダーに依存せずサーバーレス構築を提供するユニークなサービスです。サポートするベンダーも AWS, Google, Azure といった代表的なものから kubeless や openwhisk など比較的若いサービスまで多岐に渡っています。

つい最近 Serverless Framework を使って AWS のサーバーレス環境(TypeScript)を構築したのですが、 mono repo にするにあたってレイヤの切り分けや、サービスをまたいで利用される共通機能や変数の扱い方について学びがあったので、ブログに残すことにしました。Serveless Framework に興味がある方、どういう構成でサーバレスなプロジェクトが作れるのか気になる方にとって参考になるかと思います!

  • プロジェクト概要
  • プロジェクトルート
  • バックエンド
    • インフラレイヤ
    • アプリレイヤ
  • フロントエンド
    • private API へのアクセス(IAM Permissions)
  • まとめ: Serverless Framework に対する所感
続きを読む

React Apollo MockProvider の知見をまとめた

MockProviderはReact Apolloクライアントのリクエストや結果をモックするのに推奨されている方法です。サンプルコードを見る限りではいい感じに動くように見えますが、実際に使うとなると、結構ハマりどころがあります。MockProviderの使い方のヒントについてはすでにmediumなどに素晴らしい記事がありますが、それでもMockProvierの予期せぬ動作に数時間を溶かしてしまいました。
そんなわけでこの記事では、レスポンスを適切にモックするまでに得られた知見をシェアします。

なおテスト環境は以下です:

@apollo/client: 3.2.0
react-native:0.62.2
jest: 24.9.0
react-native-testing-library: 2.1.1

それでは行ってみましょう!

  • 1. useQueryはhooks packageから直接インポートする
  • 2. Fragmentを使っているときは__typenameも定義する
  • 3. コンポーネントの描画を必ず走らせる
  • 4. InMemoryCacheを挿入してエラーメッセージをわかりやすくする
  • 5. "No more mocked responses" error => 引数をチェックする
  • 6. Mutationや複数のQueryをテストする場合はキャッシュを無効化する
  • まとめ
続きを読む

React Nativeの次世代アーキテクチャTurboModuleとJSIの話

stand.fm 社が主催する React Native 勉強会にて Catching up with TurboModules という題名で未だ全容がはっきりしない TurboModules について発表しました。

speakerdeck.com

この記事は発表では伝えきれない部分を補うものとなっています。

  • 現状の Native - React Native のブリッジ実装と課題
  • JSI(JavaScript Interface)
  • TurboModule
    • 1. global.__turboModuleProxy の定義
    • 2.Native Module(Java/objC)と JSI をバインド
    • 3. Native のモジュールを呼び出す
  • TurboModule は現状使えるのか
  • TurboModule 対応は必要か
    • アプリケーション開発者
    • ライブラリ開発者
  • (おまけ) TurboReactPackage を使って Android アプリの起動の高速化を試みる
    • 検証
    • 結果
  • まとめ
続きを読む