こんにちは、フォースタートアップス株式会社の李です!
今回は、毎日の技術トレンドを簡単にキャッチアップできるツールを開発したので、紹介させていただきます。
目次
はじめに
皆さん、技術トレンドを毎日追えていますか?
僕は全くと言っていいほどできていません。技術記事を読むよりもゲームを遊んだり漫画やアニメを見たりしたい派です。でも、エンジニアとして成長するためには日々の情報収集が重要ですよね。今回はそんな課題を解決するファーストステップなるものを作ってみました。
作ったもの
その名も『Daily Tech Digest』です!
毎朝9時にQiitaの人気記事を1件、LINEに送信するシンプルなツールです。
特徴
- 簡単に始められる
- 送るのは1件だけ
- 最初は「記事を読む時間を1日の中に取り入れること」を習慣化することを目標としているので、ハードルを下げるために1件だけにしています。
- 毎朝9時に配信
- 習慣化に大事なのは、「毎日すること」「同じ時間帯にすること」だと考えています。通勤中や朝のコーヒータイムに読むことを想定して朝9時に配信しています。
使用技術
『Daily Tech Digest』の開発では、以下の技術を採用しました。それぞれの選定理由と技術的な特徴を詳しく紹介します。
- LINE Messaging API
- Cloudflare Workers
- Hono
1. LINE Messaging API
LINE Botを構築するために使用したAPIです。ユーザーとLINE上でメッセージをやり取りする仕組みを提供してくれます。
特徴:
- 送信できるメッセージの種類が豊富。
- 日本語の公式ドキュメントが充実しており、開発がスムーズに行える。
- 普段から使うアプリなので記事配信の通知が目に入りやすい
- 将来的には社外の方にもお届けしたい!
2. Cloudflare Workers
サーバーレスプラットフォームとしてCloudflare Workersを採用しました。JavaScriptの実行環境をクラウド上で提供し、リクエストごとに軽量な環境を生成します。
特徴:
- 応答が早い
- 将来的にはユーザーからのメッセージに対して何かしら返答する機能も作りたいと考えていました。
- デプロイが簡単
- プロジェクト下で以下のコマンドを実行するだけです。
wrangler deploy
- 無料(一番重要)
技術的ポイント:
0msコールドスタート
一般的なサーバーレス環境(AWS Lambdaなど)では、一定時間アクセスがないとその度に起動時のオーバーヘッドによる遅延が発生してしまいます。(これをコールドスタートと呼びます)
それに対してCloudflare Workersはisolateと呼ばれる機能を使うことで、オーバーヘッドを大幅に削減しています。
isolateとはJavaScriptエンジンV8が持つ機能で、軽量かつ迅速に多数の分離された実行環境を用意することができます。下記画像右側のように、実行環境を多数の空間に分離することで実行環境起動時のオーバーヘッドを削減しているようです。
コード実行までが早い
3. Hono
Webページ、Web APIを作るのに便利なフレームワークです。
Cloudflare/Deno/Bun/Node.jsなど様々な環境に対応しています。
特徴:
ルートハンドラーが非常に簡単です
⬇︎たったこれだけでルートにリクエストが来たら”hello”を返す処理が書けます!
import { Hono } from "hono"; const app = new Hono(); app.get("/", async (c) => { return c.text("hello"); }); app.fire();
まだ複雑なロジックは作成していないので、また新たな発見があれば別の記事で紹介できたらなと思います!
開発で意識したこと
個人開発では、最小限の機能でリリースすることが重要です。大きなスコープを設定すると挫折しやすいため、シンプルで続けられる範囲に収めました。
使ってみた感想
1週間使ってみたところ、以下の点に気付きました。
習慣化の効果
- 自分で作ったツールを使う楽しさもあり、毎日送られてくる記事を読む習慣がつきました。
課題
社内勉強会での反響
社内勉強会で発表した際、以下のような意見をいただきました。
- 「1記事だけ送るのがちょうどいい!」
- 「調べたい情報に応じてカスタマイズできると面白いね。」
- 「Cloudflare Workersは常駐が必要?」
これらのフィードバックは今後の改善に活かしていきたいと思います。
発表に使った資料です!よければ合わせてご覧ください。
今後の展望
- トレンドの再定義
- 「どのジャンルをトレンドとして捉えるべきか?」や、「どの情報がトレンド理解に繋がるのか?」といった視点で、配信内容の見直しを行いたいと考えています。
- データベースの導入
- 記事の配信履歴やユーザー登録タグなどの機能を追加したいのでCloudflare D1(サーバーレスなSQLデータベースサービス)を導入してみたいです。
現状はユーザー全員に同じ内容を一斉配信していだけなので、今後はパーソナライズされた情報提供が可能になることを目指していきたいです!
まとめ
自分で試行錯誤しながら作り上げたツールには愛着が湧きます。そして、「もっと良くしたい!」という気持ちが、自然と技術キャッチアップのモチベーションに繋がっていることに気づきました。
今回の開発で使用したCloudflare Workersは、無料で始められる手軽さと高性能が魅力で、個人開発に非常に適していると感じました。ぜひ試してみてください!