#
32
どうも、リスナーのみなさん!おはようございます!「zenncast」のマイクです。今日は2024年6月2日、日曜日ですね。みなさん、いかがお過ごしでしょうか?

さて、今日はZennでトレンドの記事を紹介していきますよ!前回は「React+TypeScript のコードをタイピングするゲームを作った話」や「ついにSnowflakeにNotebookが搭載された!」、そして「Ruby 3.3 + YJITにアップデートしてパフォーマンスが大幅に向上しました」などをご紹介しました。。

今日は、なんと5つの記事を紹介します!それでは、さっそく見ていきましょう。

。。まず一つ目の記事です。タイトルは「社内ネットワークに制限した静的サイトホスティング環境をAmazon S3で構築する」です。

この記事では、Webフロントエンドエンジニアのaokikenさんが、社内向けに制限された静的サイトホスティング環境をAmazon S3で構築した方法について詳しく解説しています。プロトタイプを迅速に社内で共有してフィードバックを得るため、この環境構築を検討しました。

AWSを既に利用していることからAmazon S3を選定し、AWS CLIやGitHub Actionsを用いたスムーズなアップロードも視野に入れています。社内VPN経由のみの利用を目指し、ブロックパブリックアクセス、アクセスコントロールリスト(ACL)、バケットポリシーを駆使してIP制限を実現しました。

具体的には、terraformを用いて設計し、SREチームにレビューを依頼。パブリックアクセスをブロックし、特定のIPアドレス以外からのアクセスを拒否するバケットポリシーを設定しました。実際に導入した結果、プロトタイプの共有がスムーズになり、APIドキュメントのホスティングも成功しました。

まとめとして、Amazon S3の適切な設定で社内ネットワークに制限された静的サイトホスティング環境を簡単に構築できることが強調されています。社内向けに同様のホスティング環境を検討する際の参考になる内容です。

。。
続いて二つ目の記事です。タイトルは「Next.jsとPrismaをCloudflareにデプロイして月300万のDBクエリに無料で耐える」です。

Next.jsをCloudflareにホスティングする際、Edge Runtime環境でPrismaをそのまま使用できないため、Prisma Accelerateの自前構築を行う方法を紹介しています。公式サービスの無料プランではクエリ数に制限があるため、自前で構築することで月300万クエリの無料運用が可能になります。

具体的な手順としては、まずCloudflare Workersの準備から始め、必要なパッケージをインストールし、環境変数を設定します。次に、Cloudflare KVを作成し、PrismaとWASMに関する型定義を追加します。そして、`src/index.ts`にPrisma Accelerate相当の処理を実装し、Cloudflare Workersにデプロイします。

Next.jsプロジェクトの修正も行い、Prismaクライアントのimport先を`@prisma/client/edge`に変更し、`withAccelerate`を呼び出します。環境変数`DATABASE_URL`の設定もPrisma Accelerate用に修正します。

この手順により、Edge Runtime環境の制約を克服し、高いパフォーマンスを維持しながら低コストで本番運用が可能です。月間300万アクセスにも耐える堅牢なサービスを構築できる点が大きな魅力です。

。。
三つ目の記事です。タイトルは「『個人開発で月30万の売上を3ヶ月で達成!』という目標を掲げた【エンジニア超特化マッチングサービス】のβ版を本日リリース🎉」です。

「DokuPro(ドクプロ)」は、エンジニア向けのマッチングサービスで、現役エンジニアとエンジニアを目指す人々を繋げるプラットフォームです。開発者のSadoさんが、独学の困難さとスクールの高額さを解消するために個人開発を始め、「月30万の売上を3ヶ月で達成する」という目標を掲げて半年間でβ版をリリースしました。

DokuProは、AI、ゲーム、インフラなど多岐にわたる分野に対応し、最新の技術やツールの検索が可能です。生徒は、専門的なアドバイスが必要な分野のプロのエンジニアを見つけて相談でき、現役エンジニアは自分のスキルを活かして生徒をサポートしながら副収入を得ることができます。

技術スタックにはNext.jsとTypeScript、バックエンドにはLaravel、インフラにはGoogle Cloud Platformを活用。今後、ユーザーからのフィードバックを反映して正式版リリースを目指す予定です。個人開発の成功事例としても注目されています。

。。
四つ目の記事です。タイトルは「KillerCodaで無料Kubernetesを遊び尽くす!」です。

KillerCodaは、無料でKubernetesを学べるサイトで、CKAやCKADの練習にも最適です。ユーザーは既存のシナリオから学び、クリエイターとしてシナリオを提供することもできます。無料ユーザーは無制限にシナリオを使用でき、パブリックシナリオを3つまで作成可能です。有料ユーザーはシナリオを4時間まで使用でき、CKA、CKS、CKADのシナリオを解くためのExam Remote Desktopを利用できます。

特徴的な点はシナリオの作成と共有で、Nodeのスペックではなくシナリオに関連する要素が課金対象です。無料ユーザーでもKubernetesの各種バージョンを試すことができ、ログイン後は1時間の時間制限付きでクラスタを利用できます。kubectlもデフォルトで使え、簡単なコマンドでPodを立てることが可能です。

シナリオ作成は公式ドキュメントに詳しく書かれており、GitHubリポジトリを設定してシナリオを更新することができます。具体的な手順としては、リポジトリの登録、Deploy keyの設定、Webhookの登録を行います。シナリオが正しく作成されているかは「My Scenarios」で確認でき、必要な場合は修正も可能です。

KillerCodaの使い方とシナリオ作成の手順を具体的に説明しており、Kubernetes学習に興味があるエンジニアにとって非常に役立つツールとなるでしょう。

。。
そして最後、五つ目の記事です。タイトルは「マルチプレイヤーアプリケーションが作れる PartyKit ってなんだ....?」です。

PartyKitは、Cloudflare WorkersとDurable Objectsを用いてマルチプレイヤーアプリケーションやリアルタイム体験を簡単に構築するためのライブラリ兼プラットフォームです。1つのクラスでWebSocketとDurable Objectsの処理を統合でき、複雑な操作をシンプルにします。

具体的な特徴として、WebSocketの簡単な取り扱い、RateLimitの簡単な実装、Hibernation API対応、デプロイの簡便さが挙げられます。npmとbunを用いて環境設定を行い、CloudflareのAPIトークンとアカウントIDを設定ファイルに記入することで完了します。デプロイもシンプルで、公式のnpxコマンドを使用する方法が推奨されています。

実際のアプリケーション開発においては、クライアントサイドでのWebSocket接続とDurable Objectsのインスタンス生成を行い、リアルタイムのデータ同期やルーム機能の実装が可能です。特に、Yjsを用いた共同編集機能も`Y-PartyKit`ライブラリでサポートされています。

Hibernation APIを利用することで、スリープ状態によりメモリ消費を抑えつつ、大量の接続を管理できます。スリープ状態になるとインメモリの状態が破棄されるため、Durable Objectsの状態を定期的に外部保存する必要があります。

PartyKitのビルドとデプロイはPartyKitのサーバー経由で行われ、特定のバインディングには対応していないため、カスタムバインディングの追加は難しいですが、WebSocketの取り扱いを容易にする点で非常に強力なツールと言えます。

以上、今日のトレンド記事を5つご紹介しました!次回も素晴らしい記事をお届けできるのを楽しみにしています。詳しい内容はショーノートに載せてありますので、ぜひチェックしてみてくださいね。そして、番組への感想もお待ちしています!

それではまた次回お会いしましょう。マイクでした!

Related episodes

内容の近いエピソードを推薦しています