CRUD つまり?
「掲示板」や「ブログ」などのシステムです。
禁則事項
Railsを使う場合
scaffold
と resource
の使用は禁止です。
これから、CRUDシステムをわざわざ作る意義がなくなってしまうため。
Rails初心者はscaffoldとresourcesを使うな
Rails以外を使う場合
Railsのscaffold
などに代表されるようにCRUDやRESTFulの雛形自動的に作ってしまうような機能を使ってしまえば同様に、これから、CRUDシステムをわざわざ作る意義がなくなってしまうため、使用しない方が望ましいです。
そもそもCRUDとは?
CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性[1]の4つの基本機能のイニシャルを並べた用語。その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である。ユーザインタフェースが備えるべき機能(情報の参照/検索/更新)を指す用語としても使われる。
Wikipediaより。
詳しくはこちら CRUD
開発時間
目安は大体、1〜2週間ぐらいかなと思います。
人によって、物量によって、導入するツールによって変わってくると思います。
なぜCRUDシステムを作るのか?
Webシステムにおいて、どのシステムを開発する場合においても基本となる機能を有したものがCRUDです。
ほとんどの場合、CRUDができればあとはそれらの組み合わせや応用をしていってシステムを作り上げていくことがほとんどになります。そのため、まずはCRUDを使ったサービスの開発を目指していけば、自然と新しく使うプログラミング言語やフレームワークを素早く習得するには非常に効果的です。
応用形
例えば、以下のような制約を加えていくことで様々な形で応用させることができます。
応用例
TypeScript + Node.js + Angular + NestJS + TypeORM + MySQLを使い、CRUDシステムを作成し、Dockerを使いサーバーを立ち上げる。また、Swaggerを使い作成したAPIドキュメントを作成し、PlantUMLで構造を図示する。
(↑は実際に私が最初のトレーニングを行うために立てた短期的な目標です)
補足
上記の内容にRedisを追加したり、Nginxを利用してリバースプロキシを実装したり、webpackも使ってフロントエンドをコンパイルしてみたり、Jestをいれてテストを追加したり、などただのCRUDシステムを作るだけですが、要件を追加していき、発展させることはできます。
また、簡単そうに見えますが、いざ実際にやってみるといろいろなことが実際に見えてこなかったものが見えてきます。。
背景
個人的なこと
最近、転職しました。転職先では上記の技術を中心に使うことになりました。
TypeScript
Angular
NestJS
などを使った開発はこれまで行ってきたことがなかったので、今回、これらを使用しての開発は初めてとなります。
いくら経験値を積んで、エンジニアとして熟練者となったとしても、新しい言語、フレームワークを利用して開発する場合はいつも初心者です。
そして、新しい言語、フレームワーク、技術を使って開発することは、エンジニアをやっていれば、常に遭遇するため常に学び続けなければなりません。
その中で自身がいち早く新しいものを習得し、開発できるようになるために心がけていること、実践したことを紹介しようと思い、今回の記事を書きました。
本記事の目的
非エンジニア、あるいは新人エンジニアの方とよくお話しする中で、「プログラミングを勉強するためにはまず、どんなことをしたらいいか?」であったり、「Hello Worldはなんかできたけど次に何をやればいいんでしょうか?」みたいなことを質問されます。そのような方々へ新たな目標を設定する上での道しるべとなることが本記事の目的になります。
いかに早く成長するために
私自身が早く成長するために心がけていることを2点を挙げてみます。
自分(チーム)に足りないもの(課題)を自分で見つけて、その解決策を自分で考える
どのような場合においても、常に自発的に考え、行動することは早く、成長するためには必要不可欠なことであると思います。私自身、早く成長することを目的としたため、このようなことを実践しました。
百聞は一見にしかず
いくら記事を読もうが、勉強会に参加して、セッションを聞こうが、技術書を読もうが、自ら手を動かして、苦悩しながら一つのものを作り上げていく方が圧倒的に理解が早いです。適度に文章を読み終わったらそのあとは自分で実際に使ってみて何か作っていくことをおすすめします。
最後に
以上、やったことできたことをGithubなどに公開し、人に見せて様々な意見をもらったり、記事にまとめてみたりすると、新たな発見があるので、ぜひやってみてください。