---
# System prepended metadata

title: OhM チェックリスト
tags: [プロコン]

---

わかった気になっていてもとりあえずチェックをつけるようにしてください。

## バックエンド

優先度：**TypeScriptの基礎** > **NestJS** > **gRPC / Protocol Buffers** > **Zod** = **DB** = **ORM** > **Vitest** (Optional)

### Hertz Giga

- [x] TypeScriptの一般的な書き方について理解している。
- [ ] async/awaitやPromise, Promise.allなどの非同期処理を理解している。
- [ ] TypeScriptの一般的な型の書き方（ジェネリック、インターフェースなど）を理解している。
- [x] RDBについて、データの保存方式を理解している。
- [ ] Postgresについて、DBの型の種類およびそれがふさわしい場面を理解している。
- [ ] Drizzle ORMの使用法や表面的なロジックを理解している。
- [ ] モジュールシステムについて理解している。
- [ ] Provider、およびそのDIについて表面的なロジックを理解している。
- [ ] ControllerとService間のコードの棲み分けについて理解している。
- [ ] Moduleの定義で使用される`imports`, `providers`, `exports`について、それらの違いを理解している。
- [ ] Interceptor, Pipe, Guardがそれぞれどのような順番で実行されるか理解している。
- [ ] Interceptor, Pipe, Guardが担うべきそれぞれの役割を理解している。
- [x] NestJS CLIを使用したコード生成の方法を理解している。
- [ ] `@nestjs/bull`（もしくは解説記事が少ないが`@nestjs/bullmq`）での、Bull / BullMQなどといったジョブキューの使用方法を理解している。
- [ ] RxJSでのObservable, Subjectの一般的な使用法を理解している（NestJSで使用します）。
- [ ] ConfigModuleやCacheModuleなど、一部のNestJS公式モジュールの使用法を理解している。
- [ ] Zodが担うべき役割を理解している。
- [ ] Zodの使用法を理解している。
- [ ] Protocol Buffersの書き方を理解している。
- [ ] gRPCの一般的な通信方法（Unary / Streamingなど）、およびそれぞれの方法に適合する場面を理解している。
- [ ] VitestでのNestJSに特化した単体テストの書き方を理解している。
- [ ] VitestでのgRPCに特化したエンドツーエンドテストの書き方を理解している。

### pら

- [ ] TypeScriptの一般的な書き方について理解している。
- [ ] async/awaitやPromise, Promise.allなどの非同期処理を理解している。
- [ ] TypeScriptの一般的な型の書き方（ジェネリック、インターフェースなど）を理解している。
- [ ] RDBについて、データの保存方式を理解している。
- [ ] Postgresについて、DBの型の種類およびそれがふさわしい場面を理解している。
- [ ] Drizzle ORMの使用法や表面的なロジックを理解している。
- [ ] モジュールシステムについて理解している。
- [ ] Provider、およびそのDIについて表面的なロジックを理解している。
- [ ] ControllerとService間のコードの棲み分けについて理解している。
- [ ] Moduleの定義で使用される`imports`, `providers`, `exports`について、それらの違いを理解している。
- [ ] Interceptor, Pipe, Guardがそれぞれどのような順番で実行されるか理解している。
- [ ] Interceptor, Pipe, Guardが担うべきそれぞれの役割を理解している。
- [ ] NestJS CLIを使用したコード生成の方法を理解している。
- [ ] `@nestjs/bull`（もしくは解説記事が少ないが`@nestjs/bullmq`）での、Bull / BullMQなどといったジョブキューの使用方法を理解している。
- [ ] RxJSでのObservable, Subjectの一般的な使用法を理解している（NestJSで使用します）。
- [ ] ConfigModuleやCacheModuleなど、一部のNestJS公式モジュールの使用法を理解している。
- [ ] Zodが担うべき役割を理解している。
- [ ] Zodの使用法を理解している。
- [ ] Protocol Buffersの書き方を理解している。
- [ ] gRPCの一般的な通信方法（Unary / Streamingなど）、およびそれぞれの方法に適合する場面を理解している。
- [ ] VitestでのNestJSに特化した単体テストの書き方を理解している。
- [ ] VitestでのgRPCに特化したエンドツーエンドテストの書き方を理解している。

<details>
    <summary>テンプレ</summary>
    
    - [ ] TypeScriptの一般的な書き方について理解している。
    - [ ] async/awaitやPromise, Promise.allなどの非同期処理を理解している。
    - [ ] TypeScriptの一般的な型の書き方（ジェネリック、インターフェースなど）を理解している。
    - [ ] RDBについて、データの保存方式を理解している。
    - [ ] Postgresについて、DBの型の種類およびそれがふさわしい場面を理解している。
    - [ ] Drizzle ORMの使用法や表面的なロジックを理解している。
    - [ ] モジュールシステムについて理解している。
    - [ ] Provider、およびそのDIについて表面的なロジックを理解している。
    - [ ] ControllerとService間のコードの棲み分けについて理解している。
    - [ ] Moduleの定義で使用される`imports`, `providers`, `exports`について、それらの違いを理解している。
    - [ ] Interceptor, Pipe, Guardがそれぞれどのような順番で実行されるか理解している。
    - [ ] Interceptor, Pipe, Guardが担うべきそれぞれの役割を理解している。
    - [ ] NestJS CLIを使用したコード生成の方法を理解している。
    - [ ] `@nestjs/bull`（もしくは解説記事が少ないが`@nestjs/bullmq`）での、Bull / BullMQなどといったジョブキューの使用方法を理解している。
    - [ ] RxJSでのObservable, Subjectの一般的な使用法を理解している（NestJSで使用します）。
    - [ ] ConfigModuleやCacheModuleなど、一部のNestJS公式モジュールの使用法を理解している。
    - [ ] Zodが担うべき役割を理解している。
    - [ ] Zodの使用法を理解している。
    - [ ] Protocol Buffersの書き方を理解している。
    - [ ] gRPCの一般的な通信方法（Unary / Streamingなど）、およびそれぞれの方法に適合する場面を理解している。
    - [ ] VitestでのNestJSに特化した単体テストの書き方を理解している。
    - [ ] VitestでのgRPCに特化したエンドツーエンドテストの書き方を理解している。
</details>

## フロントエンド

### Spam缶

- [x] Android エミュレータを利用した開発環境を整備した。
- [ ] Dartの一般的な書き方について理解している。
- [ ] null安全性、Future、StreamといったDartの特別な機能について理解している。
- [ ] `riverpod_annotations`を使用したRiverpodのProviderの書き方を理解している。
- [ ] `flutter_hooks`を使用した（`StatefulWidget`とかいう奴よりもずっと）簡潔な状態管理の仕方を理解している。
- [ ] `go_router`、および最近実装された`TypedGoRoute`について、ルーティングの定義方法やジャンプ方法を理解している。
- [ ] Flutterでのウィジェットの雛形の書き方を理解している（間違っても`StatefulWidget`に足を踏み入れてはいけない。もし悩んだら`StatelessWidget`と`HookConsumerWidget`だけ触れるようにしておくこと）。
- [ ] Flutterでビルトインである基本的なウィジェットの使用法を理解している（レイアウト系、テキスト、ボタン、入力フィールドなど）。
- [ ] `FocusNode`や`TextInputController`などを使用した、ウィジェットそのものから離れた位置でのウィジェット内部の状態制御を理解している。
- [ ] gRPCの一般的な通信方法（Unary / Streamingなど）、およびそれぞれの方法に適合する場面を理解している。
- [ ] RiverpodのProviderを使用したgRPCのデータフェッチの方法を理解している。

<details>
    <summary>テンプレ</summary>

    - [ ] Android エミュレータを利用した開発環境を整備した。
    - [ ] Dartの一般的な書き方について理解している。
    - [ ] null安全性、Future、StreamといったDartの特別な機能について理解している。
    - [ ] `riverpod_annotations`を使用したRiverpodのProviderの書き方を理解している。
    - [ ] `flutter_hooks`を使用した（`StatefulWidget`とかいう奴よりもずっと）簡潔な状態管理の仕方を理解している。
    - [ ] `go_router`、および最近実装された`TypedGoRoute`について、ルーティングの定義方法やジャンプ方法を理解している。
    - [ ] Flutterでのウィジェットの雛形の書き方を理解している（間違っても`StatefulWidget`に足を踏み入れてはいけない。もし悩んだら`StatelessWidget`と`HookConsumerWidget`だけ触れるようにしておくこと）。
    - [ ] Flutterでビルトインである基本的なウィジェットの使用法を理解している（レイアウト系、テキスト、ボタン、入力フィールドなど）。
    - [ ] `FocusNode`や`TextInputController`などを使用した、ウィジェットそのものから離れた位置でのウィジェット内部の状態制御を理解している。
    - [ ] gRPCの一般的な通信方法（Unary / Streamingなど）、およびそれぞれの方法に適合する場面を理解している。
    - [ ] RiverpodのProviderを使用したgRPCのデータフェッチの方法を理解している。
</details>
