【2021 年】今年、学んだ技術の振り返り| Rust と RTK
ども、Nash です。今年は留学してました。
さて、この記事では「今年学んだ技術について振り返って整理した記事」です。
では見ていきましょう。
React Native によるアプリ開発
仕事とプライベートで1つずつ、計 2 つのアプリ開発をしていました。
仕事では、不動産テック系のモバイルアプリ開発です。開発内容として、アプリケーションレイヤーとしての React・Redux 周りを触ることが多かったです。 正直、ReactNative らしいことはそこまで多くはしていないですね。後述する、RTK 周りや Hooks などの内容が
プライベートでは、こちらのアプリを1つ作ってみました。
モチベーションとして、「デプロイ周りについてもっと理解を深めたい」という思いから自分のアプリを作成しました。マネタイズとかはあまり考えてません。
Next.js + Ruby on Rails に Web サービス開発
プライベートで開発した渡航プランニングの Web サービスを開発しました。
個人開発プロジェクトがスポンサーマネタイズされて稼ぐまでの話【Plangoab】
技術スタックとして、Next.js + RTK + Ruby on Rails です。
新しく学んだ技術という色は薄く、今まで使ってきた技術スタックの色が強いですね。
GitHub - snamiki1212/plangoab: Immigration schedule planner with Next.js, Redux, and FullCalendar.js
しいていえば、RoR は仕事で使ってきましたが 0→1 で立ち上げるケースでの開発がはじめてでした。
Svelte + GlitchEffect
機会がありポートフォリオサイトを作ることになりました。 普通に作るのはあまりにつまらないので色気を出して Svelte を使ってます。
また、CSS アニメーションとして GlitchEffect も利用しています。
ようやっとカッコいいNosiyなCSSアニメーションになって満足https://t.co/EXZMxdjaAs pic.twitter.com/n5iMK4X8VS
— Nash⚡️北米でコード書いてる (@snamiki1212) February 12, 2021
ジャギーでかっこいいアニメーションですが、それなりにしんどかったので使いどころは考えものですね。
Rust のお勉強
Rust については、「1〜2ヶ月くらい学んで、またしばらく無勉強」を2〜3回くらい今年は繰り返していました。なんだか去年もそんな感じで波のある学習をしてる気がするなー。
学んだ教材はここらへんです。
https://t.co/dZetg6LWlb
— Nash⚡️北米でコード書いてる (@snamiki1212) February 27, 2021
Rustのexerciseやってみてる
ここらへんでだいたい理解したのでまずは簡単な Alfred 用のツールを作りました。
ここまでで Rust の座学的な理解は落ち着いたのでプロジェクトを作ろうかなーということでなにか作ることにして、RealWorld プロジェクトを作ることにしました。
Rust による RealWorld プロジェクト
Rust + ActixWeb にて、RealWorld のプロジェクトをスクラッチで書きました。
RealWorld プロジェクトとは
任意の技術で Medium クローンの Web サービスを開発する OSS プロジェクトです。
なにかの技術を PoC で作成するときによくあるのが HelloWorld や ToDo アプリですが、これらだとコードボリュームが少なすぎてプロダクションで起きるであろう問題が顕在化しません。
RealWorld プロジェクトでは、フロントエンドとバックエンドでそれぞれ明確に仕様が決められていてこれに従うことで Medium クローンが作成でき、実際のプロダクションレベルのコードを書いたときに起き得るであろう問題や気付きを得られるであろう、というものです。
なんで作ったの
もともと「Rust で何かを作りたい」と思って候補を考えていたところ、RealWorld プロジェクトにて ActixWeb のリポジトリが登録されていなかったため、自分が作成すれば登録してもらえそうだなーという思いからはじめました。
ただ、作り始めてから気づいたのですが、すでに ActixWeb の RealWorld プロジェクトがあるのを見つけました。とはいえ、すでにメンテされないことを明示化されているので、自分のプロジェクトを作る意義はまぁありますね。
今後どうするの
今の進捗として、80~90%まで完成しています。ですが、ここらへんで心が折れてしまって開発が止まってしまっています。
また技術スタックとして、ActixWeb + Diesel で作ったのですが正直 ORM でハマることが多すぎるので、sqlx に変えようかと考えてます。
なので、いろいろ落ち着いてからここらへんの技術スタックを変更しつつ進めようかなーと思っているところです。
RTK / RTK Query
今年は2つのプロジェクトにて RTK Query を導入しました。
RTK Query とは、Redux Toolkit のキャッシング+ステートマネジメントの機能です。
特に、「全部で 40 個近くある features をすべて RTK/Thunk 化する」というタスクがあり、かなりの数を書き直したので RTK・RTK Query を使う分にはドキュメントを見ないでもかなりサラサラ書けるくらいになりました。
Hooks でリファクタリングする心得
React の Hooks でコンポーネントをリファクタリングするタスクが今年はそれなりにありました。 というのも、FatComponent と遭遇することが多かったからですね。
ですが、そのおかげで「Hooks でどうリファクタリングしていくか」自分なりに整理できましたので記事に残してました。
Hooks でリファクタリング| FatComponent の倒し方
Redux をリファクタリングする心得
同じく Redux をリファクタリングする機会があり、どうリファクタリングをするかを自分なりにまとめられたので、記事にしてます。
Plain な Redux を段階的に RTK へリファクタリングする心得
やっぱり新規機能開発やバグ修正よりも、リファクタリングが一番楽しいですね。
データ構造とアルゴリズムを再学習
今年は時間を取って、データ構造とアルゴリズムについて学びなおしました。
データ構造とアルゴリズムを再勉強したのでおすすめの勉強法を書く
以前からずっと再学習したかったので、かなり満足です。
Swift + UIKit でモバイル開発とアルゴリズム
Swift + UIKit によるモバイル開発とアルゴリズム課題をしていました。
動機として、留学先の CICCC のモバイルクラスで出された課題を作成していたからです。 だいたいリポジトリが 30 個分くらいの書き捨てのアプリケーションとアルゴリズムを作成しました。
Swift を使った学習しての気付きなどはいろいろあったので別記事にまとめてあります。
React 好きの Fullstack エンジニアが Swift/UIKit を学んだ話
Objective-C を学んだ
留学先の学校の課題で Objective-C も出されたのでなんとなく学びました。
10 個くらい書き捨てのリポジトリを作ってますね。
やや古い言語なのでまったく期待してなかったのですが思った以上に学ぶのが面白かったのです。とはいえ、これもサンクコスト感が強いですね。
Objective-Cの基本構文を学んでるけどほぼCな言語感ながらsmalltalkの要素を含んでて特にこのsmalltalk的なシンタックスが初めてなので第一印象が意外と面白いと感じてる。やや古い言語なので絶対おもろくないと思ってた。
— Nash⚡️北米でコード書いてる (@snamiki1212) July 5, 2021
興味としては SwiftUI をやりたかったですが、「実査のプロジェクトで Objective-C で書かれてるレガシーなコードはかなり多いので」という理由で Objective-C でした。
ぐう値が出ないくらいの現実主義な方針ですね。
おわりに
今年、学んだことをいろいろ書き出してみました。
年末に一気に書くとしんどいので、それぞれ作るごとにきちんと記事にしたり整理してあげるべきですね、ほんとに。
来年もガンガン学んでいきます。