おはようございます! zenncast、MCのマイクです。10月16日、金曜日、朝7時になりました。今日も気持ちよく、一日を始めていきましょう!
この番組では、Zennで今日トレンドの記事をご紹介します。今日は、AIとの上手な付き合い方から、セキュリティ、Webの表現まで、5本の記事をお届けします。
....
まず1本目は、エンジニアにとってのAIエンジニアリングについてのお話です。
AIの活用は、製品に機能として組み込むだけでなく、開発作業そのものにも広がっています。筆者は、AIエンジニアリングは専門職だけのものではなく、エンジニアが身につけるスキルになってきた、と述べています。
その中心にあるのが、評価と失敗の分析を繰り返すことです。AIは、同じように使っても出力が毎回変わることがあります。だからこそ、まず何をもって成功とするのかを決める。そして、最終的な結果だけでなく、途中でどう動いたのかも確かめて、改善につなげる。そんな仕組みが必要なんですね。
さらに、AIが人のいない間にも仕事を進めるようになると、大切なのは画面を作り込むこと以上に、仕事をどう任せるか、結果をどう確かめるか、誰が責任を持つかを明確にすることだといいます。
こうして積み重ねた評価は、自社向けにモデルを追加学習させるための土台にもなる。筆者は、そんな可能性も示しています。
AIを導入して終わり、ではなく、任せて、確かめて、育てていく。日々の開発でも意識しておきたい視点ですね。
....
続いて2本目は、AIに文章を推敲してもらうときの注意点です。
AIに文章を整えてもらうと、ぐっと読みやすくなることがありますよね。ただ、その裏で、気づきにくい意味の変化が起きることもあります。たとえば、「見込み」が「予定」に変わってしまうケース。似ているようで、決まっている度合いが違います。
筆者がGemini 4 Argonと3.8 Flashを比較したところ、意味や語調を守るという点ではArgonが、読みやすさではFlashが、多く選ばれたそうです。
一方で、資料を渡さずに技術記事を書かせると、両モデルとも、根拠のない数字を事実のように書いたといいます。文章が自然だから、あるいは自信たっぷりに言い切っているからといって、正しいとは限らないんですね。
そこで筆者が勧めているのが、推敲後の文章を原文と並べて確認することです。特に見たいのは、文末がどれくらい確かな言い方になっているか。説明だった文章が依頼に変わっていないか。そして、比喩や感嘆符に込めた気持ちが保たれているか、といった点です。
読みやすくなったかだけでなく、自分が伝えたかったことのままか。このひと手間を大事にしたいですね。
....
3本目は、WAFで攻撃を遮断するときに、正規の利用者を巻き込まないための考え方です。
まず確認したいのは、遮断しようとしている通信の送信元です。共有IPや事業者のネットワークには、多くの利用者が混在しています。怪しい通信があったからといって、その送信元をまとめて止める前に、そこから来ている通信全体を調べる必要があるんですね。
また、国や、通信ソフトの特徴を表す値であるJA4だけで、広く遮断しないことも大切です。botらしさや、攻撃を示す条件と組み合わせて判断します。そのうえで、業務用のbotや正規のクローラーではないかも確認します。
影響が読みきれないルールなら、まずは通信を止めず、記録だけ取って対象を確かめます。人の利用が混じっている可能性があれば、人間かどうかの確認画面を出す方法も選択肢になります。
例外を設ける場合は、送信元とアクセス先で範囲を絞ります。検査を外すルールも必要最小限に。そして、全サイトに共通で適用するルールには、どのサイトでも不要だといえる通信だけを指定します。
最後に、決め手がなければ遮断せず、保留するという判断も重要です。止めた理由だけでなく、止めなかった理由も記録しておく。古くなったIPやJA4の設定も、定期的に見直します。
攻撃を止めることと、必要な利用を守ること。その両方を意識する、慎重な運用のお話でした。
....
続いて4本目は、スクロールに合わせて前景がせり上がり、背景が現れるWebの演出です。
この演出は、CSSのpositionプロパティにstickyを使うことで作れます。fixedを使う場合よりも、周囲のレイアウトへの影響を抑えやすいのが利点です。
仕組みを順番に見ていきましょう。まず、背景となる要素の高さを、画面の高さに相当する100vhにします。そして、上端の位置を0に指定し、スクロール中に画面の上端にとどまるようにします。
さらに、上方向のマージンをマイナス100vhにして、背景が1画面分早く、画面の上端に到達するようにします。
背景の前後にある要素は、positionをrelativeにし、z-indexを1にして、背景よりも手前に配置します。このとき、背景が途中で意図せず見えてしまわないよう、直前の要素などで、合計100vh以上の高さを覆っておく必要があります。
そして、背景を囲む要素の高さは200vhです。これは、上にずらした100vhと、背景を見せるための100vhを足した高さなんですね。この囲みの高さを変えることで、背景を見せるスクロール量を調整できます。
見た目の演出だけでなく、どこで背景が現れて、どれくらい見せるかまで、レイアウトの仕組みで組み立てていくのがポイントです。
....
最後、5本目は、Agent Scriptで、コードとLLMの役割を分けるお話です。
基本の考え方は、確実に実行したい処理はコードで制御し、要約や訪問準備の案づくりはLLMに任せること。「必ず確認して」と指示するだけでは、必要な処理が抜けることがあります。その問題に、処理の流れを明確にすることで対処するんですね。
具体的には、推論の前後に実行する処理で、変数や、現在対応しているサブエージェントの名前を記録します。これが、追加の質問を同じ担当へ振り分ける手がかりになります。
条件による分岐にはif、データ取得の実行にはrunを使います。ここで大事なのが、取引先IDのような、間違えると困る入力です。こうした値はLLMに生成させず、変数から渡します。
取得したデータは、サブエージェント同士で共有します。加えて、取得済みの取引先IDも保存し、今扱っている取引先と一致しているかを確認します。別の取引先の情報を誤って使わないための対策ですね。
モデルも、仕事に合わせて選びます。定型的な要約には軽量モデル、訪問時の議題づくりには推論力の高いモデルを使う。そして、ユーザーの好みなどを覚えておく記憶管理には、標準機能を活用できるそうです。
柔軟に考えてほしい部分と、確実に守ってほしい部分。その境目を設計することが、安心して仕事を任せるポイントになりそうです。
....
さて、今日のzenncastは、5本の記事をお届けしました。
AIエンジニアリングを支える評価と失敗の分析。AIの推敲で意味を変えないための確認。正規の利用者を守るWAFの運用。stickyを使ったスクロール演出。そして、Agent ScriptでのコードとLLMの役割分担でした。
詳しい内容はショーノートに書いてありますので、気になった記事をぜひチェックしてみてくださいね。
番組の感想もお待ちしています。「この記事が気になった」「こんな工夫をしています」など、気軽に聞かせてもらえるとうれしいです。
この番組はSpotifyやApple Podcast、YouTubeなどで毎日配信しています。気に入ったら、登録や高評価で応援していただけるとうれしいです!
それでは、次回も皆さんにお会いできるのを楽しみにしています。お相手はマイクでした。今日もすてきな一日を!