LINEヤフー Tech Blog

LINEヤフー株式会社のサービスを支える、技術・開発文化を発信しています。

セキュリティプラットフォームのインターン体験記(インターンレポート)

こんにちは。LINEヤフーのセキュリティプラットフォーム関連の開発を行っている矢島です。

LINEヤフーのセキュリティプラットフォーム部門では、インターンを実施しています。今年度は6名の方に参加いただき、それぞれの参加者がLINEヤフーの開発・運用業務を体験しました。この記事では、各インターン参加者に、実際に体験したこと・学んだことを紹介してもらいます。

2025年度 セキュリティプラットフォーム部門 インターン概要

2025年度のセキュリティプラットフォーム部門インターンは、8月18日から9月12日の4週間で行いました。今回のインターンでは、2つのコースを用意していました。

  • 1つ目のコースは「セキュリティプラットフォーム(認証・認可、暗号鍵、電子証明書)開発運用」です。このコースでは、システム間における認証・認可を行い、また電子証明書の発行・自動更新を行うAthenzというプラットフォームの開発・運用に関連する開発と、暗号鍵を安全に管理するためのプラットフォーム(以降、暗号鍵管理プラットフォーム)の開発・運用を体験してもらいました。このコースには5名の方が参加しました。複数のチームに分かれて業務に参加し、2週間単位でチームをローテーションする形式で実施しています。

  • 2つ目のコースは「LINEヤフーのDDoS対策プラットフォームの開発」です。HTTP Layer における traffic abuse 防止プラットフォーム(以降、不正トラフィック防止プラットフォーム)の新機能開発や、業務改善に取り組んでもらいました。このコースには1名の方が参加しました。

また、今回のインターンでは、以下のような取り組みも合わせて行いました。

  • 今後のキャリアを考えるための参考として、LINEヤフーの情報セキュリティに対する取り組みへの説明や、先輩社員からのキャリアパスの共有を行う講義を実施しました。
  • 部門内で半期に一度行われる「各チームで実施しているセキュリティ関連業務事例や、業務中の気づきの共有会」に、インターン生にも参加いただきました。

次の表にインターン参加者の方のお名前とコースを記載します。ここから先は、インターンで触れた技術や経験について、インターン生自身に紹介してもらいます。

氏名コース前半に体験したプラットフォーム後半に体験したプラットフォーム
川崎 晃太朗さんセキュリティプラットフォーム開発運用Athenz(電子証明書関連チーム)Athenz(本体開発チーム)
辻本 宗一郎さんセキュリティプラットフォーム開発運用Athenz(本体開発チーム)暗号鍵管理プラットフォームチーム
鶴賀 大さんセキュリティプラットフォーム開発運用Athenz(本体開発チーム)Athenz(電子証明書関連チーム)
楠見 健太郎さんセキュリティプラットフォーム開発運用暗号鍵管理プラットフォームチームAthenz(電子証明書関連チーム)
鈴木 幹理さんセキュリティプラットフォーム開発運用暗号鍵管理プラットフォームチーム
内野 彰紀さんLINEヤフーのDDoS対策プラットフォームの開発不正トラフィック防止プラットフォームチーム不正トラフィック防止プラットフォームチーム

主なプラットフォーム・ツールについて

はじめに、私たちがインターンにて触れたLINEヤフー社内の技術に関していくつか簡単に紹介します。LINEヤフーでは、さまざまな社内独自のプラットフォームやプロダクトが存在しています。中にはOSSとして公開され、LINEヤフーとしてOSSの発展に注力しているものもあります。

Athenz

もともとYahoo! Inc.で開発されていたオープンソースのアクセス制御プラットフォームです。リソースに対するアクセス権限をロールベースで管理することができ、ユーザーのみならずサービス間でのアクセス制御も行うことができます。Athenzは、サーバー側のZMSやZTS、クライアント側のathenz-siaといった主要コンポーネントで構成されています。Athenz OSSの公式ドキュメント

ZMS

ZMSはAthenzが扱うすべてのドメイン・ポリシーなどの情報を管理するコンポーネントで、Athenzのいわゆる台帳のような役割を担います。DBから保存されているDomain情報を取得し、ZTSに配信するといったような処理を行います。

ZTS

ZTSはZMSが管理する設定情報に基づいて実際に判断を下す中央アクセス制御機能と、アプリケーションがAthenzのポリシーに基づいてアクセス制御をする分散認可のための機能を提供するコンポーネントです。ZTSはアクセスの許可証となるトークンや、安全な通信のための証明書を発行する役割も持ちます。

athenz-sia

Athenzで利用される証明書は一定期間で期限切れになります。athenz-siaはVMではデーモン、Podではサイドカーとして動作することで、ZTSから定期的(24時間ごと)に証明書を取得・更新して所定の場所に配置する役割を担います。また、証明書の有効期限を監視するメトリクス機能も持っています。リポジトリはAthenZ/k8s-athenz-siaです。

athenz-siaバージョン管理コンポーネント

LINEヤフー社内では、VMやPodにインストールされるathenz-siaのバージョンを自動で管理するコンポーネントが存在します。athenz-sia と同じく VM や Pod 上に存在し、athenz-siaのバージョンを定期的に確認して、必要に応じてインストールやアップグレードを行います。

暗号鍵管理プラットフォーム

サービス開発では、パスフレーズ、暗号鍵、APIトークンなどのシークレットを安全に扱うことが不可欠です。これらのシークレットを安全に管理し、配布するのが暗号鍵管理PFです。シークレットは多層に暗号化した上で、セキュアなネットワーク内の中央管理されたストレージに保存されています。暗号化に利用する最上位の暗号鍵は物理的な手段で保護することで安全性を確保しています。 また、Athenzを利用することで、認可されたシステムにのみシークレットへのアクセスを許可することができます。

Screwdriver.cd について

もともとYahoo! Inc.社内で開発されていた、現在はオープンソースのCI/CDツールで、Kubernetes上で実行されるマイクロサービス・クラウド環境に対応しています。GitHub Actionsと同様、パイプラインをYAMLファイルで管理できます。GitHubのプルリクエストなど、Webhookをトリガーとしてパイプラインを実行することもできます。類似技術としてGitHub ActionsやJenkinsがありますが、違いはこのような感じです。

項目Screwdriver.cdGitHub ActionsJenkins
開発オープンソース(元Yahoo! Inc.)GitHubオープンソース(元Sun Microsystems)
実行環境Kubernetes上で動作、マイクロサービス/クラウド環境向けGitHub提供のホストランナー or 自前サーバー自前サーバー(オンプレ・クラウド両方可)
パイプライン定義YAMLファイルYAMLファイル(.github/workflows/Jenkinsfile(Groovy DSL)
トリガーGitHub PRやWebhookGitHubイベント(PR、Pushなど)SCM変更、Webhook、Cronなどなんでも
特徴- Kubernetesネイティブ
- 大規模マイクロサービス運用に強い
- 拡張性が高い
- GitHubと完全統合
- セットアップ容易
- OSSのプラグインが豊富
- 歴史が長くプラグイン数が非常に多い
- 大規模なカスタマイズが可能
向いている用途マイクロサービスを多数運用する大規模クラウド環境GitHub中心の開発プロジェクトレガシー環境から大規模企業向けまで幅広く対応

なお、関連ページとして、旧ヤフーのテックブログにScrewdriver.cdの高速化カスタマイズについての記事があります。https://techblog.yahoo.co.jp/entry/20200330824587/

SeekAI について

SeekAIは、2024年7月からLINEヤフーで社内向けに運用されているRAG検索プラットフォームです。使い方としては、普通のLLMを使う時と同じように質問を送信します。送信時に社内Wiki等のドキュメントから構築したベクトルDB内の、関連データを埋め込んだクエリが作成され、OpenAIのAPIに送信されます。

運用開始時に公開されたプレスリリースがこちらですhttps://www.lycorp.co.jp/ja/news/release/008806/

具体的な使用例

(以下は実際の返答例の一部です)

Q. Athenzで用いられるAccessTokenとRoleTokenの違いを教えてください

Athenz Support で回答中


どちらも「このプリンシパルが Athenz の特定ロールに所属している」ことを示す認可トークンですが、

  • Role Token …… Athenz 独自形式(Z-Token)。旧世代。将来 EOL 予定。
  • Access Token … JWT 形式。NIST/RFC に準拠した暗号を使用。標準ライブラリや OAuth/OIDC 系ミドルウェアと親和性が高く、今後はこちらを利用することが推奨される。

以下で違いを整理します。

... (略)

参考ページ

  • 【Athenz】XXXX
  • ...

というように、質問に最も適したアプリケーションが選択され、DBに登録された関連情報も埋め込まれた上で回答が生成されます。これによって、社内のナレッジベースの検索性が格段に上がっています。

便利な部分

  • 参照すべき場所がわからない疑問などを聞くのに最適
  • 人に聞かなくても解決できる問題が増える。また、人に聞く前に十分な予備知識を得ることができる。
  • 回答には社内wikiの参照URLが付くので真偽を確認しやすい
  • 適切でないアプリを用いると、ちゃんと「資料にはそれに関する情報がない」と回答してくれる(場合が多い)

川崎 晃太朗さんの体験

はじめに

筑波大学情報科学類3年の川崎晃太朗です。私は2025年のサマーインターンシップで「セキュリティプラットフォームの開発・運用」というコースに参加しました。この記事では、今回のインターンでの取り組みと、得られた体験や所感について紹介します。技術的側面だけでなく、LINEヤフーだからこそ得られた体験や発見についても書いていきたいと思います。

参加の動機

私は普段から個人開発をしているので、実装力には自信がありました。また、ありがたいことに、私はこれまでたびたびアルバイトや業務委託、インターンシップ、学生団体などでチーム開発に参加する機会をいただいてきました。しかしその過程で、「個人の実装力として強い」ことと「チームの活躍できる一員として強い」ことは、必ずしも同義ではないと感じるようになりました。そして今の私に足りないのは、後者であると思いました。

最近はクラウドや基盤、プラットフォームに関心があったこともあり、今回の「セキュリティプラットフォームの開発・運用」のインターンは、今の私にぴったりでした。そして、この夏を通して「チームとして活躍できるエンジニア」へ一歩近づこうという思いから、本インターンに参加することを決めました。

インターンでの取り組み

前半:Athenz の電子証明書関連チーム

前半の2週間は、Athenzの電子証明書関連チームに所属しました。前半2週間は、Athenzの電子証明書を自動更新するコンポーネントである athenz-sia の改善に取り組みました。athenz-siaに関する説明は上のセクションですでに詳しく書かれていると思うので、ここでは割愛します。athenz-siaはZTSから新しい証明書を取得した際にファイルシステムに書き込むのですが、athenz-siaのconfigに不備があるとうまく証明書を配置できず、状態の不整合により証明書の更新ができなくなるといった問題が発生していました。そこで、今回のインターンでは、ZTSから証明書を取得する前に検証を行う処理を実装しました。

基本的には1週間を1スプリントとするスクラム開発を採用しており、毎日のデイリースクラム、週次のプランニング、レビュー、レトロスペクティブを行っていました。また、スプリントレビューでは社内のステークホルダーに向けて提供価値を説明し、フィードバックをもらう場が設けられていました。

他社のインターンと比較して特に特徴的であったのが、チーム内での情報共有の徹底でした。朝のデイリースクラム、昼休憩後の共有、午後の共有など、チーム内での情報共有を行うタイミングが多く用意されています。各チームメンバーが受け持つタスクや進捗を常に把握するほか、意思決定においてはその資料を全員で共有し議論を行ったうえでチーム全体で合意を取り、その意思決定の記録をドキュメントに残すなど、非常に丁寧に運用されていました。

後半:Athenz の本体開発チーム

後半の2週間は、Athenzの本体開発チームに所属しました。このチームでは、Athenz本体や、Athenzに直接付随する主要なコンポーネントの開発を行っています。また、Athenzに対する問い合わせ対応やメール対応も行っています。チームは全員エンジニアで構成されていて、問い合わせ対応も含めてエンジニアが対応しています。これは、Athenzが完全に社内向けであり、ステークホルダーが社内で完結しているため、コンサルや渉外を担う人員は不要だそうです。これには驚きました。

後半のチームでは、ZTS、ZMS といったコンポーネントに関わりました。これらについても上のセクションですでに詳しく書かれていると思うので、ここでは割愛します。ZTSはZMSから全ドメイン情報を定期的に取得・キャッシュし、高速なアクセス制御を実現しています。しかしドメインやポリシーの増加により、ZMSの処理負荷やレスポンス遅延が顕在化していました。その結果、ZTSが最新情報を得るまでにタイムラグが生じ、証明書発行などに遅延リスクがあるという問題が発生していました。

チームでは、解決策としてZMSから社内S3互換オブジェクトストレージに情報を書き出すSyncerを実装し、ZTSはそこから並列で取得することで負荷を分散させる仕組みが提案されていました。インターンでは、このSyncerをデプロイするCI/CDパイプラインをAnsibleとScrewdriver.cd(Yahoo! Inc. が開発したCI/CDを扱うOSS)で構築するタスクに取り組みました。

前半チームと大きく異なるのは、モブプログラミングを中心に開発を進めていくことでした。モブプログラミングでは、実際の作業を行うドライバーと、コードの品質を保つナビゲーターに役割が分かれます。モブプログラミングを主体とする開発は初めての経験でしたが、初めからコンテキストの高い実際のチームの作業に関わっていけるため、すぐにキャッチアップすることができました。

LINEヤフーならではと感じた点

LINEヤフーは自社でさまざまなサービスを開発・運用しています。プライベートクラウドだけでも複数あり、VM基盤、コンテナ基盤、KaaS(Kubernetes as a Service)、S3互換分散オブジェクトストレージ、CI/CDパイプライン、ID管理など、すべてが自社サービスでそろえられています。個人開発でオレオレサービスや車輪の再発明をすることが好きな人にとっては、興味の尽きないとてもおもしろい環境なのではないでしょうか。社外秘の情報も多いのでここに詳しく書くことはできませんが、私は社内ドキュメントの自由研究(考古学?)がはかどりました。

また、災害が発生した際の対応フローも極めて徹底されているのが特徴的でした。例えば、災害時に最優先で安定稼働させるべきサービスが明確に定められており、「Yahoo! JAPAN トップページ」「Yahoo!天気・災害」「Yahoo!ニュース」などがその対象となっています。これらのサービスは、人々が災害情報を得るために必須であることから、他のサービスよりも優先され、ダウンタイムを最小限に抑えるように運用されています。これらのサービスが優先的にトリアージされるフローが緻密に設計されている点は、LINEヤフーほど大きい会社ならではなのではないかと感じました。

インターンでの学びを最大化するためにしていたこと

インターンでは学びの効率を最優先に、疑問はすぐ質問し、議論でも積極的に発言しました。前半は希望して全員と1on1を行い、開発の裏側やキャリアについてお話をすることができました。これらを通して、自ら接点を作る大切さを実感しました。

さらには、Slackのtimesチャンネルで進捗や考えを随時共有していました。会議での分からなかった用語や空き時間に読んでいた社内ドキュメントの自分なりの解釈を投稿してみると、社員の方が補足してくれることが多く、詰まっている箇所もこまめに共有することで助けを得やすくなりました。透明性を保つことが、学びを最大化する近道だと感じました。

インターンで学べたこと

今回のインターンを通して、影響範囲の広い「セキュリティプラットフォーム」を担う代表格であるAthenzが、どのような体制で堅実に開発を進めているのかを実地で学ぶことができました。「セキュリティ」「インフラ」「開発」という3つの側面を同時に持つプロダクトの開発に携われる機会はそう多くないのではないでしょうか。その現場を肌で体験できたことは、とても貴重な経験だったと感じています。

終わりに

4週間を通して、「個人で速く作る」から「チームで安全に価値を届け続ける」への視点転換ができました。特に、技術的な経験に加えて、チームでの働き方や文化そのものから学ぶことが多く、Athenzを通して、チームで改善を小さく安全に積み上げる技術と文化を体で学べたのが最大の収穫です。普段の個人開発や学生団体では得られない規模感と責任感の中で働けたことも、大きな糧になりました。

このような貴重な機会をくださった皆さまに心から感謝しています。

辻本 宗一郎さんの体験

同志社大学理工学部数理システム学科2回生の辻本宗一郎です。私は今回のLINEヤフーサマーインターンで、セキュリティプラットフォームの開発運用というコースに参加しました。前半2週間は社内のアクセス制御を担う認証・認可プラットフォームであるAthenzの開発を行う本体開発チーム、後半2週間はAthenzの認可システムを活用した暗号鍵管理プラットフォームの開発を行う暗号鍵管理プラットフォームチームに参加し、計4週間LINEヤフーでの開発業務を体験しました。

Athenzの本体開発チーム(前半2週間)

Athenzを構成する主なコンポーネントとして、ZMS、ZTS、Syncer、中間ストレージと、リクエストを送信する数種類のインターフェイスがあります。今回Athenzの本体開発チーム内で取り組んだのは、制御情報の管理を担うZMSと、中間ストレージ間での同期の高速化を図るDomain Syncerの並列化業務です。Domain Syncerの現状の問題として、ZMSからのドメイン同期を直列で処理しているため、数十MB程の巨大なドメインが更新された際に後続の同期処理が待たされてしまうという点がありました。今回のチーム参加中は、この問題の解決のために開発されていた並列化機能の動作確認と、テスト実装やデプロイの自動化などの業務に携わりました。(Athenzの概要については上の「Athenzについて」を参照してください。)

業務の特徴

スクラム

Athenzの本体開発チームでは、スプリントという単位のサイクルで目標を達成しながらプロジェクトを進めていく、スクラムという開発フレームワークを採用していました。複数人で業務レベルの開発を行った経験が今までなかったので、最初は慣れない部分も多かったですが、達成した課題や次の作業の確認について、細かい粒度で把握、相談等ができることがメリットとして感じられました。前半のAthenzの本体開発チーム参加時は、同じインターン生の鶴賀さんとメンターの方と自分の3人でモブプログラミングを行って作業を進めていました。普段はあまり見えてこない他の人の作業の取り組み方について知ることができて、とても新鮮でした。

Athenz

AthenzはRBAC(Role-Based Access Control)の名前の通り、ロールを活用した認証・認可システムで、ドメインという単位でアクセス主体と対象を定義し、ロールの割り当てとポリシーの設定によってアクセス制御を行っています。IPアドレスに依存せず、動作中の各サービスのプラットフォームにも依存しない仕組みで、機能がうまく抽象化されたすごいシステムだと思いました。

Claude Code / SeekAI

Claude CodeなどのLLMツールも積極的に取り入れている印象でした。Athenzは全てのコンポーネントをモノレポで管理する方法を取っており、新規参加者にとってはなかなか複雑に感じられたのですが、困った時はClaude Codeに対してコードベースに関する質問を行うと疑問が解決することが多かったです。これによって、非常に素早く前提知識の把握をすることができました。また、社内wikiのドキュメントと、それを活用した社内RAGプラットフォームであるSeekAIもとても便利で、ドキュメントやガイド整備の重要性が周知のものとして認識されているように感じました。

暗号鍵管理プラットフォームチーム(後半2週間)

秘密鍵、DBパスワード、APIトークンなどのシークレットを管理する暗号鍵管理PFのクライアント用ライブラリとして、現状ではJavaとNode.js用のものが社内向けに公開されています。幅広い利用を目的として、JavaとNode.js以外にPythonとGo言語向けのライブラリも公開予定になっています。今回のチーム参加時のタスクとして、私はGo言語でのクライアントライブラリの開発を行いました。(暗号鍵管理PFの概要については上の「暗号鍵管理PF」を参照してください。)

業務の特徴

BDD(Behavior Driven Development)

今回携わったクライアントライブラリについては、BDDという手法での開発を行いました。日本語に直すと振る舞い駆動開発という意味になります。より一般的に知られているTDD(テスト駆動開発)の発展形であり、ざっくり説明すると「仕様書とテストコードを一体として自然言語で記述する」という方式を取る開発手法です。Gherkin記法という記法を用いて、満たすべき振る舞いをfeatureファイルに記述することで、今回のようなさまざまな言語で同じ機能を持つプログラムを開発する場合でも、それぞれ同様の動作をすることが保証できます。実際に各開発言語で実装を始める際は、それぞれの言語のBDDフレームワークを使って、featureファイルを元に対応するテストコードを作るコードを記述します。個人的には、一般的なTDDより一段階抽象度が上がった開発手法だという印象を受けました。今回のチーム参加まで聞いたことすらなかったのですが、TDDにはなじみがあったのですぐに慣れることができました。仕様となるfeatureファイルは、すでに開発済みのJavaやNode.js向けのものと同じものを使用し、featureファイルからのテスト生成も大部分は既に実装していただいていたので、自分はひたすらにテストを通過する機能開発を行っていくだけで済みました。とても環境の整った開発体験をさせていただいたという所感です。

Go

インターンの参加前までは、Goについての知識はあまり持っておらず、goroutineに興味を持った時に作った簡単なwebsocketサーバくらいの開発経験しかありませんでした。しかし、今回のチーム参加を通してGoの標準ライブラリや開発環境の充実性に驚かされました。使用中に知ったGoの特徴として、interfaceの実装を暗黙的に行うという点があります。最初は明示的にimplementを行わないことに違和感を覚えたのですが、うまく活用すると効果的だと思える部分もありました。例えばリクエスト送信などの機能を持つ外部パッケージの構造体を扱う際、その構造体の代わりに同じメソッドを持たせたインターフェイスを対象にして開発を進めると、テスト時などにモックデータを返す構造体に差し替えやすかったり、モックサーバにリクエストを送るようにするようなカスタムが簡単になります。静的解析の強力さと、複雑すぎない型システム、Go特有の設計思想などがとてもバランス良く感じられました。

開発以外

オフィス見学

最寄りの開発オフィスへの出社が可能になったので、一度大阪オフィスで始業から退勤までの一日を過ごさせていただきました。梅田駅から直結で向かいやすく、周辺にお店も多いので、働く環境として充実していました。小ネタですが、ヤフー時代からなじみのある、あのキャラクターの名前が「けんさく」と「えんじん」であることをオフィスのオブジェで初めて知りました。

1on1

自分はまだ将来のことをほとんど考えていない状態でこのインターンに参加してしまったので、就活や院進の相談などもさせていただきましたが、趣味や生活についての話がほとんどになってしまったような気がします。技術書や言語、ツールやライブラリの話などは普段あまりできる機会がないので、実際にエンジニアとして働く方々とこのようなお話ができて非常に楽しかったです。

まとめ

実際にプロダクトの運用や開発に参加する中で、単純にコードを書くこと以外の部分にもさまざまな工夫や考え方や注意点が存在することを学ぶことができました。認証・認可システムやGo言語、BDDについてはインターン終了後も学習や活用を続けたいと思っています。貴重な経験をさせていただいて、本当にありがとうございました。

鶴賀 大さんの体験

こんにちは。埼玉大学大学院理工学研究科の鶴賀 大です。私は今夏、LINEヤフー株式会社で開催されたSummer Internship 2025における「セキュリティプラットフォームの開発運用」に参加し、4週間にわたって社内のサービス間アクセス制御に利用されている認証・認可プラットフォームAthenzの開発に携わりました。

参加の動機

今まで経験してきた長期インターンや業務委託での開発はWebバックエンドを担当していたり、研究で扱っているのも画像処理であったりともともとセキュリティとは程遠いエンジニア人生を歩んできました。しかし、ちょっとしたきっかけで研究室サーバーのセキュリティ向上を担当する機会があり、その際に認証・認可などのアクセス制御について興味を持ちました。そこから「実務でセキュリティに触れたいな〜」と思っていたところ、たまたま拝見していたLINEヤフー株式会社のインターンページに「セキュリティプラットフォームの開発運用」コースを発見し、これは今の自分にピッタリすぎる!と思い参加しました。(実はLINEヤフーのインターンには昨年度も参加していたこともあり、Athenzという認証・認可プラットフォームの存在も耳にしていたので、初めて実務でセキュリティに触れる場合でもやりやすいのではないかと感じたという理由もあります。)

インターンについて

今回参加した「セキュリティプラットフォームの開発運用」コースは4週間にわたって行われます。前半の2週間と後半の2週間で別々のチームに配属されるので、1回の参加で2度美味しいインターンとなっています。私は前半の2週間でAthenzの本体開発チーム、後半の2週間でAthenzの電子証明書関連チームに配属されました。どちらもAthenzの開発を担うチームで、約1ヶ月間Athenzの開発・運用に携わりました。

業務について

Athenzの本体開発チーム

Athenzの本体開発チームは主にAthenzのサーバー側の機能の開発・運用を担うチームです。今回のインターンでは辻本さんとともにZMSと中間ストレージ間でドメイン情報を同期する際に使用するZMS Domain Syncerの並列化業務に取り組みました。このタスクの背景として ZMS Domain Syncer が直列に実行されてしまうことにより、大きなドメインを同期しようとすると他のドメインの同期処理が待たされてしまい、結果として全体の処理時間が延びてしまうという課題がありました。

この課題を解決するため ZMS Domain Syncer を並列化し、同期にかかる全体の処理時間を最も大きなドメインの同期処理にかかる時間まで抑えることを目指して実装を行いました。

作業ではインターン生にメンターの方やチームメンバーの方を交えてモブプログラミングを行いました。モブプログラミングとはドライバーとナビゲーターに分かれ、ドライバーが作業、ナビゲーターが指示や助言を行う開発手法です。作業速度は落ちるもののその後のレビューや不明点のすり合わせなどの時間が省け、全体の作業時間の短縮やコードの品質向上が期待できます。

着手時点でSyncerの並列化実装自体はできていたため、われわれインターン生は動作確認 〜 ロジック修正 〜 テスト実装 〜 デプロイジョブの実装を担当しました。並列処理におけるテスト・定期実行の実装や、Ansibleを利用した自動デプロイの実装など学びの多いタスクでした。

Athenzの電子証明書関連チーム

主にAthenzのクライアント側の機能の開発・運用を担うチームです。Athenzの電子証明書関連チームのインターンでは楠見さんとともに特定環境で不要なログの転送を防ぐことを目的にathenz-siaバージョン管理コンポーネントの起動スクリプトの修正タスクを行いました。このタスクの背景としてもともとの実装では特定の環境でathenz-siaバージョン管理コンポーネントを起動した場合に不要なconfファイルが配置されてしまい、不要なエラーログが転送され続けてしまうという問題がありました。この課題を解決するため、われわれインターン生でshell-scriptで実装されているathenz-siaバージョン管理コンポーネントの起動スクリプトを修正し、特定の環境下においてconfファイルを配置しないようにする措置をとり、この課題を解決しました。加えてこの変更後のデグレを考慮してE2Eテストの設計や実装も行いました。テスト要件や前提条件の洗い出しなど、難しい箇所もありましたが、楠見さんやメンターの方々と話し合いながら進めたことで、無事実装まで完了することができました。

Athenzの本体開発チームの時と同様にインターン生の楠見さんとペアプロのような形式で作業を行い、メンターの方も交えてお互いに意見や議論を行いながら作業を進めていきました。その甲斐もあって非常に速いペースでタスクを進めることができ、2週どちらのスプリントにおいてもタスクをDoneすることができました。

学んだこと・感じたこと

  • 認証・認可プラットフォームの内部実装
    • 認証認可プラットフォームの開発にはなかなか関わることができないので貴重な体験ができました。
    • 特に認証・認可の内部的な仕組みやフロー、ロールベースでのアクセス制御の仕組みなどを詳しく知ることができました。
  • 実践的なスクラム開発
    • 前後半どちらのチームでもスクラム開発が採用されていました
    • 今までなんちゃってスクラム開発は経験したことがありましたが、プランニングやスプリントレビュー等まで経験したことはなかったのでとてもいい経験になりました。
    • 日々の朝会やリファインメント、プランニング、レビュー、レトロスペクティブを通じてスクラムがより効果的に進められるかつ情報の属人化が防げるような取り組みがなされていると感じました。
  • E2Eテストの構築
    • 後半のAthenzの電子証明書関連チームのタスクにてE2Eテストの実装を行いました。
    • Athenzというシステムの性質上、高い信頼性が要求されかつ変更による影響が他サービスも含め広範囲に及ぶので、デグレ等を防ぐためにかなりしっかりとしたE2Eテストが構築されていました。
    • われわれも今回の変更によるE2Eテストの設計・実装に着手しました。設計はなかなか難しくカバーしなければならない要点や前提とする条件の洗い出しに苦労しましたが、非常に勉強になりました。
  • AIの活用
    • 社内ではClaude CodeやChatGPT、社内ドキュメント検索AIのSeekAIなどさまざまなAIツールが使用可能です
    • Claude Codeなど実際に開発に活用されていますが、コンテキストの渡し方や生成されたコードの吟味など、AIを活用する上で気をつけるべきことなどを学ぶことができました。
  • 社食が安い
    • とても安いです
    • 学食の半分くらいでお腹いっぱい食べられます

さいごに

インターン期間中、何も学ばない日がないほど学ぶことが多い4週間でした。特にセキュリティプラットフォームの開発や実践的なスクラム開発は普段の開発ではなかなか経験できないもので、貴重な経験ができたと感じています。メンターの方々やサポートしてくださった社員の方々に深く感謝を申し上げます。このインターンで得た経験を活かして、今後さらにエンジニアとして活躍できるよう精進してまいります。4週間ありがとうございました。

楠見 健太郎さんの体験

こんにちは。九州大学大学院システム情報科学府の楠見健太郎です。2025年8月から9月にかけて、LINEヤフーグループにて「セキュリティプラットフォーム(認証・認可、暗号鍵、電子証明書)の開発・運用」に携わるインターンに参加しました。前半は暗号鍵管理プラットフォームチーム、後半はAthenzの電子証明書関連チームで、それぞれ異なるテーマに取り組むことができました。どちらも普段の研究や個人開発では触れることのない実務で、とても濃い経験になりました。

前半:暗号鍵管理プラットフォームチーム

ここでは鈴木さんとともに、社内向け暗号鍵管理プラットフォームのPythonクライアントライブラリを開発しました。

特に印象に残ったのは テスト駆動開発(TDD) です。「テストを書いてから実装する」という流れは理想的だと思いつつ、個人開発だとどうしても「早くコードを書きたい」という欲に負けてしまいます。チームで実際に体験することで、TDDの価値を実感できました。

さらにチームでは 振る舞い駆動開発(BDD) も採用しており、自然言語で仕様を記述し、それをテストに落とし込む開発方式を体験しました。.featureファイルに書いた要件がそのままテストになる仕組みは新鮮で、仕様とコードの橋渡しの面白さを感じました。ただ、その裏でstep definitionを書く大変さも痛感しました。

また、開発の場面では AIの活用も積極的に行いました。docstringを自動生成させたり、テストコードを補助的に書かせたりすることで、手間を減らしつつ品質を担保できる場面が多々ありました。一方で、フルコードを丸ごとAIに渡すことへのセキュリティ面の懸念も感じ、「AIを補助ツールとしてどこまで取り入れるか」というバランス感覚も学ぶことができました。

加えて、旧ヤフーから引き継がれた暗号鍵管理サービスがLINEとの統合を経てどのように発展してきたのかも知ることができました。インフラ寄りの領域は「動いて当たり前」と思われがちですが、その裏には高度な鍵管理や堅牢な仕組みが存在し、安心を支えているのだと実感しました。社内向けサービスは表に出ない分、自由度がある反面、基盤なので影響範囲が広くなり責任も重い——そうした現場ならではの責任感も印象に残りました。

後半:Athenzの電子証明書関連チーム

後半は鶴賀さんと一緒に、athenz-siaに由来するOS監視プロセスの不具合修正に取り組みました。

Athenzはクラウドネイティブなロールベースのアクセス制御システムで、サービス間の認証・認可を担う重要な基盤です。インターン以前は触れたことがなかったのですが、前半でクライアントライブラリを少し利用していたため、比較的スムーズに学習を進めることができました。とはいえ、旧ヤフー環境とLINEヤフー統合環境での挙動の違いにはかなり苦戦しました。

今回の課題は、監視プロセスが存在しないログを参照し続け、1分ごとにエラーを吐き続けるという不具合の修正です。環境ごとに挙動が変わるためテストが難しく、修正後の動作確認には多くの時間を割きました。それでも最終的には修正の実装からE2Eテスト、レビュー対応まで完遂でき、達成感を得られました。

また、このチームでは CI/CD の文化に多く触れることができました。Screwdriver.cd上でのE2Eテストの自動実行や、手動でのテスト証跡の残し方を学びました。E2EテストはGiven-When-Then形式で組み立てるのですが、これがレゴブロックを組むように楽しく、一方で実行に36分以上かかるテストを手動で回す場面もあり、「自動化の重要性」を身をもって理解しました。また、チームで進めているE2Eテストフレームワークのリニューアルにも触れ、チームに合った仕組みを育てていく過程を間近で見られたのは大きな刺激でした。

さらに、企業開発で常に意識される ROI(投資対効果) についても学びました。目標を達成するためにどれだけの工数やリソースを割くべきか。個人開発と違い、会社の目標 → チームの目標 → 自分のタスクへと階層的に落とし込まれる中で、自分の作業の意味や優先度を考え続ける必要があります。この「仕事として開発に向き合う姿勢」を体験できたことは、とても大きな収穫でした。

おわりに

今回のインターンでは、技術的な知識だけでなく、チームで働くことの意味や、価値に責任を持つという姿勢を学びました。実際の現場に飛び込んだことで、将来像がより鮮明になったと感じています。

「仕事とは価値に対する責任である」——この言葉を改めて実感できた2ヶ月間でした。

最後に、暗号鍵管理プラットフォームチーム、Athenz電子証明書関連チーム、人事のみなさま、そしてサポートしてくださったすべての方々に心より感謝いたします。

鈴木 幹理さんの体験

こんにちは。慶應義塾大学理工学研究科の鈴木幹理です。この夏、LINEヤフーの「セキュリティプラットフォーム開発運用」インターンに参加し、暗号鍵管理プラットフォームチームに所属して、社内シークレット管理ツール向けの Python SDK(クライアントライブラリ)を開発しました。

背景

LINEヤフーでは、社内向けプライベートクラウド Flava を開発・運用しています。暗号鍵管理プラットフォームチームは、その上で動くサービスに対して、クラウド上の シークレットの取得・管理 を行うための共通ツール群を提供しています。サービス開発では、パスフレーズ、暗号鍵、API トークンなどのシークレットを安全に扱うことが不可欠です。しかし、各開発者が個別に安全対策を実装・運用するのは負荷が高く、物理デバイス等による保護はコストもかかります。そこで、開発者が細かな実装を意識せず、共通プラットフォームを通じて安全にシークレットを利用できる設計とし、REST APIでシークレットを取得する方式を採用しています。ただし、毎回 HTTP リクエストの詳細を実装するのは手間とミスの温床になります。このため、プラットフォームを簡単に使えるようにするクライアントライブラリの整備が進められており、今回私はPython版の実装を担当しました。

実装したライブラリの主な機能

ライブラリはまず、環境ごとの設定値やリクエストに必要な情報を設定し、継続的に保持できるようにしました。さらに、OSS の Athenz で取得した認証・認可情報をリクエストへ自動付与することで、利用者が認証の詳細を意識せずに API を呼び出せるようにしています。加えて、REST API の送受信とエラー種別に応じた例外ハンドリングを担う通信レイヤを整備し、安定した利用体験を目指しました。

実装と工夫したポイント

  • 依存の最小化とセキュリティ配慮シークレット管理ツールは、通常以上にセキュリティを重視する必要があります。依存ライブラリが増えるほど脆弱性混入リスクは高まります。そのため、Requests などのサードパーティ製 HTTP クライアントは採用せず、Python 標準ライブラリを優先する方針を取りました。これにより、依存の更新管理やセキュリティ監査の範囲を最小化しています。

  • BDD(Behavior-Driven Development)の活用仕様は Gherkin 記法で記述し、それを受け入れテストとして実行できるように、仕様からテストコードへ変換する仕組みを実装しました。多言語でのライブラリ開発を見据え、共通仕様があることで開発がスムーズに進む利点を強く実感しました。

  • その他受け入れテストの他に、単体テストの実装も行いました。単体テストが適切な粒度で行えるよう、気をつけて関数の切り出しなどを行いました。また、CI/CDツールとして Screwdriver.cd を用い、自動テスト環境を整えた上で開発を行いました。

まとめ

広く利用されることを前提としたライブラリでは、例外設計とテストの重要性の大きさを痛感しました。また、依存を最小化し標準ライブラリを優先するという技術選定は、セキュリティと保守性の両面で有効だと学びました。さらに、コードレビューを通じて自分の実装の課題を客観的に把握でき、プロダクション品質に求められる基準を体感できたのも大きな収穫です。配属先のチームでは、GitHub のプルリクエストに対して LLM が自動でレビューを行う bot が導入され、ChatGPT をはじめとするAIツールも使用可能で、AI の導入に積極的な姿勢を感じました。私自身も日頃から ChatGPT を利用しているため、普段に近い環境で開発でき、快適でした。今回はライブラリの実装を進めましたが、未実装の機能がいくつか残りました。今後は、一時的なネットワーク障害やレート制限に備える自動リトライ機能と、読み取り中心のユースケースでレイテンシや負荷を低減するキャッシュ機能の実装を予定しています。

おわりに

短い期間でしたが、プロダクションレベルで求められる品質や設計の考え方を体感できたのは非常に貴重な経験でした。レビューを通して多くの指摘をいただき、自分のコードの甘さを痛感する場面もありましたが、それ以上に得られた学びが大きかったです。今後は今回の経験を活かし、より堅牢で信頼されるソフトウェアを作れるエンジニアを目指していきたいと思います。

内野 彰紀さんの体験

はじめに

こんにちは。横浜国立大学 環境情報学府の内野 彰紀です。私は「LINEヤフーのDDoS対策プラットフォームの開発」プロジェクトに参加し、不正トラフィック防止プラットフォームチームにてインターンシップを経験しました。

インターンシップの概要

LINEヤフーでは、自社サービスを守るためのDDoS対策プラットフォームを独自に開発・運用しています。このプラットフォームは社内向けに提供されており、さまざまなサービスの防衛ラインとして重要な役割を担っています。私が参加したインターンシップでは、このDDoS対策プラットフォームの操作性と利便性を向上させるための新機能開発に取り組みました。特に、LLM(大規模言語モデル)を活用して、ユーザーの自然言語による指示からプラットフォーム用の設定ファイルを自動生成する機能の実装を行いました。

DDoS対策プラットフォーム参考画像

チームの役割と取り組み

不正トラフィック防止プラットフォームチームでは、LINEヤフーが提供しているサービスをトラフィックベースの不正アクセスから守るシステムの運用・開発を担当しています。システムの仕組みとしては、L7 Reverse Proxyに私たちのシステムを組み込む形で提供しており、不正アクセスやabuseの疑いのあるHTTPリクエストがサービスへ到達するのを防いでいます。ブロックを行うためのルール作成等に関しては、各サービスの担当者が行っています。これに関しては、正規のアクセスと不正アクセスの傾向がサービスによって異なるため、サービスごとに最適なルールを設定する必要があるからです。しかしながら、ルール作成に関してはある程度DDoS対策プラットフォームに関する知識がないと作成することができないという課題がありました。そこで今期のインターンでは、LLMを利用することによってユーザの指示を理解し、最適なブロックルール作成を行う機能の開発を行いました。

私が取り組んだ課題

開発の背景

DDoS対策プラットフォームの設定には、JSONファイルの作成が必要です。この作業にはプラットフォームに対する知識や理解が必要でした。そこで、LLMを活用して自然言語の指示から正確な設定ファイルを自動生成することで、以下の効果を目指しました。

  1. 設定作業の効率化
  2. 人為的ミスの削減
  3. 専門知識がないユーザーでも適切な設定を可能にする

苦労した点と解決策

開発過程で最も苦労したのは、LLMの出力を実際のシステムで使用可能な形式に整えることでした。LLMは柔軟な出力が可能である反面、厳密なフォーマットを常に守るとは限りません。この課題に対して、以下のアプローチで解決しました。

  1. 構造化テンプレートの活用: 各設定パターンに対応するテンプレートを事前に用意
  2. プロンプトエンジニアリング: LLMに対する指示を最適化し、必要な情報を適切に引き出せるよう調整
  3. バリデーション層の実装: 生成されたJSONを検証し、必要に応じて修正を行うバリデーション機構を導入

これらの取り組みにより、ユーザーの自然言語による指示から、プラットフォームが受け付ける正確なJSONファイルを高い確率で生成できるようになりました。

まとめ

短期間ではありましたが、実際に運用されているDDoS対策プラットフォームの機能開発に携わることで、実践的な開発経験を積むことができました。特に、生成AIを実用システムに組み込む際の課題と解決策について深く学ぶ機会となりました。今回の経験を通じて得た知識や技術は、今後のエンジニアとしてのキャリアにおいて大きな財産になると感じています。最後に、貴重な機会を提供してくださったLINEヤフーの皆様、そして丁寧にご指導いただいたメンターやチームの方々に心より感謝申し上げます。今後も、この経験を活かして、より良いプロダクトを作り出せるエンジニアを目指して精進していきたいと思います。

メンターからの一言

今回開催したインターンにて、Athenzの電子証明書関連チームでメンターを務めた矢島です。今回のインターンでは、今チームで優先度を上げて取り組みたい課題に、実際のチームメンバーの一員として参加いただきました。インターン生として技術的に優秀なメンバーが揃っており、難易度が高い課題に対してもそれぞれ成果を残していただいたと思います。それぞれのインターン生自身が自主的に考えて、積極的に意見を出すなど行動できていたからこその結果だと感じています。また、各インターン生がうまくいった点・いかなかった点について、それぞれインターン生自身で振り返りを行い、週を重ねるごとに成長していた点も良かったです。これからはそれぞれの道を歩んでいくことになると思いますが、皆さんであれば、さまざまな困難を乗り越えることができると思います。今回参加いただいたインターン生皆さんの今後に期待しています。

川崎 晃太朗

Name:川崎 晃太朗

Description:筑波大学情報科学類3年。セキュリティキャンプ全国大会2025修了生、SecHack365 2025 トレーニー。snooze.page というサービスを一人で運営しています。OS自作やコンテナランタイム自作が好きです。

辻本 宗一郎

Name:辻本 宗一郎

Description:同志社大学理工学部数理システム学科2回生。個人開発ではWebアプリやVS Codeの拡張機能などを作っています。SecHack365 2020年度修了。

鶴賀 大

Name:鶴賀 大

Description:普段は生成モデルを利用した画像の雑音除去に関する研究をしています。車いじりとドライブが趣味です。

楠見 健太郎

Name:楠見 健太郎

Description:IoTのメッセージセキュリティに関する研究をしています。

鈴木 幹理

Name:鈴木 幹理

Description:慶應義塾大学理工学研究科 1 年。普段はシステムソフトウェアの研究をしています。

内野 彰紀

Name:内野 彰紀

Description:2025年度インターン生。横浜国立大学大学院 修士1年。大学ではダークウェブに関する研究をしています。サウナとダーツが好きです。