おはようございます!「zenncast」、MCのマイクです。10月14日、水曜日、朝7時。今日も気持ちよくスタートしていきましょう!
この番組では、Zennで今日トレンドになっている記事から、気になる話題をお届けします。開発のアイデアや、日々の運用に役立つヒントを、一緒にチェックしていきましょう。
今日ご紹介する記事は5本です。サイトの証明書トラブルから、スマホで進める開発、良いテストの考え方、AWSの料金分析、そして退役PCを使ったGitLabの運用まで。幅広いラインナップですよ!
....
まず1本目は、CloudflareとGitHub Pagesを使っているサイトで、Error 526が出たときの対応についてです。
このエラーに出会ったら、Cloudflare側の設定だけを見るのではなく、配信元の証明書も確認することが大切です。GitHub Pages APIのhttps_certificateを調べると、証明書の更新が失敗していないか、有効期限がどうなっているかを確認できます。サイトの手前だけでなく、その奥まで見る、ということですね。
暫定的に復旧する方法として紹介されているのは、Cloudflareのプロキシを一時的に外し、GitHub PagesのCustom domainを再設定して、証明書を再発行する手順です。再設定したあとは、Enforce HTTPSの状態も忘れずに確認します。証明書ができたから終わり、ではなく、HTTPSを強制する設定までチェックするわけです。
そして、再発を防ぐための選択肢が、Cloudflare Pagesへの移行です。証明書の管理を一本化することで、管理する場所を整理できます。移行するときは、いきなり本番を切り替えるのではなく、今の本番環境を残したまま、プレビューで動作を検証してから切り替えると安全です。
ただし、移行には細かな確認も必要です。.htmlの自動転送に合わせてルールを修正し、404.htmlも配置します。また、R2のCORS設定を変更したのに古い応答が残る場合には、ホスト名を指定してキャッシュを削除します。設定は変えたのに挙動が変わらない、というときは、キャッシュにも目を向けたいですね。
さらに、外部から定期的にサイトへアクセスする監視も導入します。応答コードだけでなく、ページ本文や、証明書の有効期限までの残り日数も確認すると、障害や失効の兆候を見つけやすくなります。
復旧してほっとするところから、次のトラブルを防ぐ仕組みまで。サイト運用の見直しに役立つ内容ですね。
....
続いて2本目は、Claude CodeのRemote Controlを使って、スマホから自宅のMacに開発をお願いする、という話題です。
Remote Controlを有効にすると、スマホのClaudeアプリから、自宅のMacへ開発の指示を送れます。ポイントは、PCを持ち歩かなくても、実装から実機での確認まで進められること。身軽に出かけながら開発できるのは、ちょっとわくわくしますね。
ただ、出発前の準備が重要です。TestFlightやFirebase App Distributionなどへ、コマンドでアプリを配信できる環境を用意しておきます。途中で画面上の操作が必要になる手順が残っていると、外出先からの作業がそこで止まってしまうんです。
準備ができたら、スマホから実装と配信を指示します。そして、届いたアプリをスマホにインストールして、動作を確認する、という流れです。配信手順を再利用できるスキルとしてまとめておいたり、完了通知を設定しておいたりすると、毎回の作業が進めやすくなります。
また、Macと同じWi-Fiにつながっている場合、iOSではワイヤレスで直接インストールすることもできます。この場合は、配布サービス側の処理を待つ時間を省けるのがうれしいところです。
もちろん、スマホだけで全部の処理が動くわけではありません。ビルドやテストはすべてMacで実行されるので、Macは起動したままにして、スリープしないようにする必要があります。そして、ログインやCAPTCHAなど、人の操作が必要な場面ではPCに戻ります。
スマホは指示と確認の窓口、実際の作業を支えるのはMac。この役割分担と、配信まで自動で進められる準備が、便利に使うための鍵ですね。
....
3本目は、良いテストとは何か、そしてAIにテストを作ってもらうときに何を気をつけるか、という記事です。
良いテストの基本は、とても明快です。「壊れたら知らせ、壊れていなければ通る」。この両方を満たすことが大切なんですね。
評価する観点としては、不具合を見つける力があるか、コードの中身を整理しても通るか、実行が速いか、保守しやすいか、という点が挙げられています。バグを検知できるだけでなく、問題のない変更でむやみに失敗しないことも、テストの品質なんです。
そこで、内部の呼び出し回数や非公開フィールドを細かく確かめるよりも、入力に対してどんな結果が返るか、画面に何が表示されるかを確認します。そして、期待する結果は、今の実装をそのまま写して決めるのではなく、仕様から決めます。
これはAIにテストを生成してもらうときにも重要です。AIにはコードだけでなく、仕様も渡します。そのうえで、生成されたテストが、現在のコードにあるバグを「正しい結果」として扱っていないか、人が確認する必要があります。テストが通ったから安心、の前に、何を正解にしているのかを見るわけですね。
網羅率についても、使い方を整理しています。網羅率は、まだ確認できていない場所を探す補助として使います。コードを通った割合が高くても、その結果を正しく検証できているとは限りません。数字の高さと、テストの確かさは、同じではないんです。
設計の面では、業務上の判断と、データベースの読み書きを分けることが勧められています。判断の部分は速い単体テストで細かく確認し、接続部分は統合テストで守ります。また、既存コードの設計を直す場合には、先に統合テストで安全を確保してから進めます。
たくさんテストを書くことだけが目的ではなく、安心して変更できる状態を作ること。そこを意識したいですね。
....
続いて4本目は、AWSの料金を、利用者ごとに見えるようにする方法です。
使うのは、AWSの料金・使用量レポート、CUR 2.0です。ここで、呼び出し元のIAMユーザーやロールを記録する設定を有効にします。IAM Identity Center経由の利用なら、タグを付けなくても、ユーザー別に料金を集計できるのがポイントです。
レポートはS3へ毎日出力し、AthenaでSQLを使って集計します。ただし、記録されるのは設定後の利用分だけです。あとから過去の分も見たくなるかもしれませんから、分析したいと考えているなら、早めの設定が重要ですね。
集計では、トークン数の扱いにも注意が必要です。モデルごとに単位が異なるため、換算したうえで集計します。さらに、入力、出力、キャッシュのそれぞれに料金を分けると、どこが費用増加の原因なのかを見つけやすくなります。合計金額だけでなく、その内訳を見るということです。
可視化には、公開されているCloudFormationテンプレートを使い、Amazon Quickのダッシュボードを作成します。利用者別、モデル別の料金や、その推移を確認でき、Cost Explorerが使えない場合にも役立ちます。
導入時には、QuickにS3とAthenaへのアクセス許可を与えること、そして、データを取り込むSPICEの容量を用意することが必要です。
もう1つ押さえておきたいのが、表示される金額の意味です。ダッシュボードの表示額は、定価ベースの概算なので、実際の請求額と一致しない場合があります。請求額そのものとして扱うのではなく、利用状況や費用の傾向を把握するための数字として見ることが大切ですね。
誰が、どのモデルを、どれくらい使っているのか。コストの話を具体的にするための仕組みです。
....
最後、5本目は、退役PCを活用してGitLabを動かす構成についてです。
GitLabの処理は社内の退役PCに任せ、月500円程度のVPSを外部公開の窓口にします。社内PCとVPSは、autosshのリバーストンネルでつなぎます。既存のPCと回線を使う構成ですが、PCを動かす電気代は別途かかる、という点も忘れないようにしたいですね。
社内PCでは、Proxmox上でUbuntuを動かし、Docker ComposeでGitLabを構築します。必要なソフトが設定済みのDockerイメージを使うことで、導入の手間を減らします。
運用で重要なのは、バックアップです。OS全体とGitLabのデータは、別々にバックアップします。さらに、更新前にはスナップショットを取って、更新に失敗しても元へ戻せるようにしておきます。動かし始める準備だけでなく、困ったときに戻す準備も必要なんですね。
HTTPSの証明書はLet's Encryptで取得し、nginxで暗号化通信を受け付けます。そして、メール送信はSendGridに任せる構成です。外部との通信や通知も、それぞれの仕組みで支えます。
ただし、自社で運用する以上、障害対応の負担もあります。月々の費用が安い、という理由だけで選ぶべきではありません。一方で、サーバーやネットワークを実際に学ぶ機会になる、という良さもあります。
費用を抑えながら、手を動かして仕組みを学べる。でも、運用を担う責任もある。その両面を見て、自分たちに合うか考えたい構成ですね。
....
さて、今日の「zenncast」は、5本の記事をお届けしました。
CloudflareとGitHub Pagesの証明書トラブルへの対応、Claude Codeでスマホから進める開発、壊れたときにきちんと知らせるテストの考え方、AWSのユーザー別料金の可視化、そして退役PCとVPSを組み合わせたGitLab運用でした。
便利な仕組みも、安心して使うための準備や確認があってこそ。今日の話題が、みなさんの開発や運用を見直すきっかけになればうれしいです。
詳しい内容はショーノートに書いてありますので、気になった記事はぜひチェックしてみてください。そして、番組の感想もお待ちしています。「この話題が役立った」「こんなことも聞いてみたい」など、気軽にお寄せくださいね。
この番組はSpotifyやApple Podcast、YouTubeなどで毎日配信しています。気に入っていただけたら、登録や高評価をつけてもらえるとうれしいです!
それでは、次回もみなさんにお会いできるのを楽しみにしています。お相手はマイクでした。今日も素敵な1日をお過ごしください!