【技術研修】React × Rails × Graphqlでタスク管理アプリを作ってみた
7月初〜8月末の約2ヶ月間で技術研修として行ったことの振り返りです。
技術研修で何を行ったか
タスク管理アプリを作りました。
※レスポンシブじゃないのでPCで見てね
使用した技術は主に下記です。
- Docker
- Ruby on Rails
- React
- Javascript
- GraphQL
- Tailwind CSS
主に下記の機能を実装しました。
- ユーザーのサインアップ/サインイン/サインアウト
- タスクの一覧表示
- タスクの追加/更新/削除
- タスクへのファイル添付
- タスクへのラベル登録
- タスクの他ユーザーへの共有
- タスクの検索
- タスクのインポート/エクスポート
- 期日間近のタスクのリマインダーメール通知
※研修で実装する機能は下記を参考にさせていただきました。
技術研修で何を学んだか
React、Rails、GraphQLなど未知の技術
今まで使用したことがなかったReact、Rails、GraphQLなどの技術を2ヶ月間触ることができ、なんとなくこんなふうに使えばいいのかといったレベルまで理解度を上げられた気がします。
よく出現するであろう機能の実装方法
ログイン機能やなにかの共有機能、ファイル処理、バックグラウンド処理などおそらくよく実装されるであろう機能をいままであまり実装したことがなかったので、実際に作ってみてとても為になりました。心理的ハードルがだいぶ下がった気がします。
Webサービス開発/運用で使うツールなど
今回の研修では下記を使用しました。
Heroku以外すべて初めましてだったのですが、そんなものがあるのかというレベルからこんな感じで使うのかくらいには理解度がアップしました。
- PaaS:Heroku
- メール配信:Mailgun
- ジョブ管理:sidekiq
- CI:GitHub Actions
- エラー監視:Sentry
- ログ管理:Papertrail
世にあるサービスを考えたり何かサービスを開発しようとするときに、上記のようなサービスがあるととても便利だなと感じたので上記以外でもいろいろ試して比較検討してみようと思いました。
Webにおけるセキュリティ
今回の研修で一番ハマったのがここでした。
そもそもこの領域についてほぼ無知(CSRFって何?JWT?)だったので、実装を通じていろいろと調査・検討しながらWebのセキュリティについて理解度を深められたと思います。
Webサービスにはどのような脆弱性が存在し、それぞれどのような攻撃が想定されるのか、それをどのような仕組みで防ぐのか、その仕組みをどう実装するのか、などいろいろ考えることができました。
技術研修がもう1ヶ月あったら何をやりたいか
各種フレームワークの使い方的なところはわかってきた(調べればわかってくる)気がしますが、どういう技術を使用するか、どういう設計にするか、こういう実装いいよね、といったより実践的?なところまで考える時間が少なかった気がするので、その辺りを考えながら何かを作ってみるのがとても楽しそうです。
最後に
2ヶ月の技術研修期間の間、研修とは別で輪読会(みんなで課題図書を読んでお話しする会)やテックトーク(ある技術テーマについてお話しする会)などにも参加しました。自分よりも格上のエンジニアの方との会話からいろいろ学ぶことができ、自分の知らないことの多さをとても実感できました。
この技術研修で使用した技術スタックで個人開発もしようと思います。
なにかしらみんなに使われるサービスを作りたい。
Discussion