はじめに
最近ChatGPTを見ない日はないほどネットで話が上がっています。
エンジニアもそろそろChatGPTを使いこなして何かを開発しないといけないのではと思ったので、今回は簡単なアプリを作りながらツールとして使ってみることにしました
今回はこちらのアプリケーションを作成しました
作成時間は5時間ほどで、ChatGPTを活用するために新しい技術を取り入れてみました
どんなアプリ?
このアプリでは、GitHubのコミット(通称:草)を確認して、今日コミットがされているかを1日1回定期実行で確認してLINEに通知してくれます
なぜ作ったのか
転職をして周りがかなりつよつよのエンジニアばかりの中で仕事をしています
周りのエンジニアは毎日のようにプライベートでコードを書いている中で、よわよわの私が毎日コードを書かないと差を埋めるどころか、差をつけられてしまうなと思いました
しかし、毎日コーディングを仕事とは別にやるのはなかなかモチベーション維持が難しいです
そこで会社の人やライバル視しているエンジニアが今日も勉強(コーディング)しているぞというのを通知してくれるLINEボットがあれば負けず嫌いの私は頑張れると思いました
また、自分のコミットを監視することで毎日コーディングする意識をつけることができます
アプリ名について
今回「Sanpo」と名付けました
なるべくリポジトリ名は自分が気にいるような名前にして、そのリポジトリがたくさん増えることでおしゃれなアカウントを目指しています
「Sanpo」にしたのは、他の人のコミット(草)を見に行くということから、公園に緑を見に歩くというイメージでつけました
使用技術
- Deno
- TypeScript
- GitHub Actions
- LINE API
- ChatGPT (ツールとして)
今回はDeno
を利用して開発を行いました
いままでNodeしか使ったことがなかったのですが、仕事で利用する機会があり良いなと感じたので挑戦します
開発について
それぞれの技術について開発して思ったことを書いていきます
Deno
Denoを今回初めて使ってみましたがかなり良いなと思いました
npm install
のようなものがないのでリポジトリが膨れ上がることがありません
よく使うライブラリはDenoにも同じようなものが用意されているので困りませんでした
開発は基本的にTDD
で行っており、TypeScriptの場合Jest
を使っています。しかし、Denoの場合はDenoのテストライブラリが用意されているので、Jestと同じ感覚で使うことができていちいちインストールする必要もなく使えました
TypeScript
クリーンアーキテクチャでTDDで開発しました
いつもどおりの開発だったので特に困ったことなどはありませんでした
だんだんTypeScriptが好きになりました
GitHub Actions
パイプラインの中では
- テスト実行
- スクリプトの定期実行
を行っています
定期実行をどのようにするか迷っていた中でGitHub Actionsでできることを知ったので今回初めて試してみました
実行時間から5-10分ほど遅れて実行されてしまうので利用できるシーンは限られますが、今回は特に時間は気にしないので利用することにしました
ChatGPT
主にわからないことを聞くツールとして利用しました
課金しておりChatGPT-4です
Deno周り、Github Actionsの定期実行について聞いたところほとんど他に調べることなく実装することができました
いまのところかなり便利だなという印象です
エンジニアの仕事無くなりそうと思いました
こだわり
モチベーションをあげるためにこのアプリを作ったわけですが、これ以外にもモチベーションをあげるための取り組みをしています
それが「おしゃれなリポジトリ」を作ることです
リポジトリのバナー画像をみていただけるとわかるかと思いますが、いい感じです
この画像はStable Diffusion
で作成しています。このようにリポジトリにバナー画像を用意するだけで愛着がわきます。そしてそのようなリポジトリをたくさん作ってシリーズ化していこうという気分になります。
アプリケーション自体も、規模が大きいものではなく小さいものにするようにしています。
そのアプリの中で試してみたい技術を使うようにしています
またアプリケーションは自分が使いたいものを作るのも意識しています
技術的なこだわりは今回はないです(笑)
またこの記事のように作ったアプリをまとておくのも継続のコツかなと思っています
おわりに
個人開発した記録として記事を書いてみました
今後は記事に出して終了として行こうかなと思います
このアプリにはまだまだ改善点は多くあります
- コミット数も通知する
- コミットしてないときも通知する
- 定期実行の回数を増やす
...etc
今回はこれで終わりの予定ですが、内容としては初心者でも理解できるくらいのアプリケーションになっているのでプルリクお待ちしております!
参考