タグ

ブックマーク / techblog.yahoo.co.jp (60)

  • コード品質を上げるために凝集度解析ツールをGo言語で自作した話

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog みなさんこんにちは。Yahoo!広告 ディスプレイ広告エンジニアの安部です。広告配信システムの開発を担当しています。 私がいるチームでは、レガシーシステムのモダン化に取り組んでいます。新しいシステムでは処理速度や書き易さの点からGo言語を採用しています。 新しいシステムでは、品質を担保するためにソフトウェアメトリクスをCIで監視しています。メトリクスの算出にはgolangci-lintを使っています。golangci-lintが算出するメトリクスには循環的複雑度などがあります。 今回は、golangci-lintが計測していない凝集度に着目しました。記事では凝集度の解説に加え、静的解析ツールの開発と導入など、凝集度をCI監視のメ

    コード品質を上げるために凝集度解析ツールをGo言語で自作した話
  • FIDO認証&パスキー総復習(認証の仕組みやパスキー登場までの経緯)

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。サービス統括部ID部で認証サービスの開発運用を担当している服部です。 パスワードに代わる新たな認証手段としてパスキーが登場し、多くのサービスでも利用ができるようになってきていますが、みなさんはご活用されていますでしょうか。このパスキーとはパスワードに代わる認証情報で、Fast IDentity Online(FIDO)仕様というFIDOアライアンスによって規格策定されている技術をベースとしています。ヤフーでも2018年から「生体認証でログイン」としてFIDO認証に対応し、2023年よりパスキーをつかった認証にも対応しています。 この記事ではこのFIDO認証の技術的な説明から当時の課題と解決方法、そしてその解決方法を

    FIDO認証&パスキー総復習(認証の仕組みやパスキー登場までの経緯)
  • 3rd-party JavaScript のリスク対策に CSP(Content Security Policy)を活用する

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、プラットフォームエンジニアの中山です。 Web サイトにはしばしば 3rd-party JavaScript を導入することがあります。たとえば Web 解析ツール、いいねボタンのような SNS 連携機能、広告掲載や効果測定目的のコードスニペットなどは多くの Web サイトで導入されています。 その一方で 3rd-party JavaScript は Web サイトを閲覧するユーザーに対して悪影響を及ぼしかねないため、導入とあわせたリスク対策も必要となります。 そこで、今回は Content Security Policy(以降 CSP)を活用した 3rd-party JavaScript のリスク対策について、ヤフー

    3rd-party JavaScript のリスク対策に CSP(Content Security Policy)を活用する
    fumikony
    fumikony 2023/07/18
  • ヤフーでは開発迅速性と品質のバランスをどう取ってるか(2022年)

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog 皆さんは「No Measurement, No Improvement」という言葉をご存じでしょうか。これは「測れないものは改善できない」という意味で、熱力学者であるウィリアム・トムソン博士の言葉とされています。 下図はGoogle社のDORA(DevOps Research and Assessment)を参考にして作成しました。開発スピードとサービスの品質を改善するためには計測が必要です。計測のための4つの指標を紹介します。 四つの指標で計測し、開発スピードとサービスの品質を改善 開発スピードの分析に利用する指標は、1つ目が「Change Lead Time(開発が始まってから番にデプロイされるまでの時間)」、2つ目が「De

    ヤフーでは開発迅速性と品質のバランスをどう取ってるか(2022年)
  • ヤフートラベルのシステムリニューアル / 一休.com とのシステム統合

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog ヤフートラベルと宿泊予約サイトの一休.comにおいて、システムリニューアルを行い統合したプロジェクトについて紹介します。 これはヤフートラベルと一休.comのシステムを統合した後の画面です。左がヤフートラベル、右は一休.comです。サイトは2つですが、バックエンドもフロントエンドも、1つのシステムで2つのブランドのサービスを配信しています。そのため、一見するとデザインが似ています。 ですが、細かいところをよく見ると、ホテルの表示カードのデザインは横幅と縦幅が違いますし、当然ロゴとかバナー表示するコンテンツも異なります。ヤフートラベルの方はYahoo! JAPAN IDでログインでき、一休.comの方は一休.comのIDでログインな

    ヤフートラベルのシステムリニューアル / 一休.com とのシステム統合
  • 今は、もう、動かない、その User-Agent 文字列

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、広告エンジニアの中山です。 唐突ですが、みなさまの Web アプリケーションに User-Agent 文字列を参照する処理はありますか? User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36例えば User-Agent 文字列を解析して内容に応じて制御を分岐させたり、機械学習の特徴量として用いたり、さらには一般に悪しきユースケースとされていますが IP アドレスと組み合わせて fingerprinting に活用する … と

    今は、もう、動かない、その User-Agent 文字列
    fumikony
    fumikony 2022/12/19
  • 保守性と生産性を両立する分析用SQL構造化の4原則 〜 構造化プログラミングの考え方をSQLに適用する

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告のデータマーケティングソリューション(以下、DMS)を開発しているデータアナリストの薄田です。 みなさんは、中間テーブル同士が複雑に絡み合い変更しようにも影響範囲を推定できず、手がつけられない分析パイプラインの保守で苦労された経験はないでしょうか? 私のチームでは数千行におよぶ分析用SQLをリファクタリングして、保守性と生産性を両立する分析パイプラインに生まれ変わらせることができました。 この記事ではリファクタリングを通して確立した、分析用SQLを構造化するための4原則を紹介します。4原則を意識しながらSQLを書くことで、高凝集・疎結合な分析パイプラインを作ることができます。 この記事では凝集度と結合度

    保守性と生産性を両立する分析用SQL構造化の4原則 〜 構造化プログラミングの考え方をSQLに適用する
  • サービス無停止でRDB移行 〜 Yahoo!広告のOracleDB移行事例

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告 ディスプレイ広告(以下、ディスプレイ広告)エンジニアの池田です。 記事では、ディスプレイ広告において広告主の予算に対する課金処理・配信制御に使われるRelational Database(以下、RDB)を障害を起こさずにサービス無停止で移行した事例について紹介します。無停止でのRDBの移行を検討されている方がいらっしゃったらぜひ参考にしていただければと思います。 サービスを停止できない理由 今回、私たちが運用していたOracle Database(以下、OracleDB)のハードウェアのEOLおよびソフトウェアのEOLに伴うバージョンアップ(Oracle12c→Oracle19c)などの理由により、

    サービス無停止でRDB移行 〜 Yahoo!広告のOracleDB移行事例
  • Yahoo! JAPANプライベートクラウドにおける事故防止の取り組みの変遷

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。ヤフー株式会社のシステム統括部クラウドプラットフォーム部に所属している寺田です。 クラウドプラットフォーム部は、弊社のアプリケーションが稼働する基盤となるプラットフォームを開発運用する組織となっています。内製のプライベートクラウドプラットフォームに加え、他社製品も多く存在します。 稿では、システム運用者が避けて通ることのできない「事故」について、組織としてどう向き合ってきたのか、2年間の取り組みの変遷と成果をご紹介いたします。 なお稿での事故という表現は、プラットフォーム利用者に影響のあったシステム障害を指しています。 事故対策の背景 まずはじめに、なぜ私たちが組織として事故対策にアプローチしはじめたかですが

    Yahoo! JAPANプライベートクラウドにおける事故防止の取り組みの変遷
  • Yahoo! JAPAN がメールセキュリティ「BIMI」を導入するまでのお話

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。メッセージング技術領域における第11代黒帯(ヤフーでのスキル任命制度)の中村成陽と申します。エンジニアとしてYahoo!メールを担当しております。 今回の記事では、メールの比較的新しい認証規格である BIMI についてのご紹介、そしてその BIMI を Yahoo! JAPAN が導入することになりましたので、それまでの過程や実際の対応内容などについてご説明します。さらに、BIMI における今後の展望に関しても触れられればと思います。 フィッシングメール対策として、Yahoo! JAPANから配信するメールにアイコンが表示される規格「BIMI」を導入(プレスリリース) BIMI とは? BIMI (Brand Indi

    Yahoo! JAPAN がメールセキュリティ「BIMI」を導入するまでのお話
  • Cognitive Complexityを400以上減らすまでに何をしたか 〜 コード品質改善の具体的なプラクティス

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告 ディスプレイ広告エンジニアの安田です。私たちの開発チームでは広告配信の起点となるJavaScriptTypeScript)ライブラリを提供しています。今回はこのライブラリのデプロイ失敗率を改善できた、コード品質改善の取り組みについてご紹介します。 コード品質を定量的に測る指標の1つにCognitive Complexityがあります。Cognitive Complexityは人間視点での複雑性を評価する指標で、例えばネストが深くなるほど複雑と判断される特徴があります。複雑なコードは変更に多くの時間を要し、テストが難しくなるので要改善なシグナルといえるでしょう。私たちが今回実施した品質改善の取り組みで

    Cognitive Complexityを400以上減らすまでに何をしたか 〜 コード品質改善の具体的なプラクティス
  • iOSのVision.framework活用事例 〜 PayPayフリマのクレカ番号読み取り機能実装例

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。PayPayフリマでiOSアプリ開発を担当している伊藤(@shizuna_it)です。PayPayフリマYahoo! JAPAN Tech Blogの第二弾です! PayPayフリマは、誰でも気軽に、安心して個人間取引ができるフリマアプリです。(PayPayアプリの中からも使えます) PayPayフリマのiOSアプリでは、Swift Package Manager(SwiftPM)でライブラリ管理を行うようにリファクタリングを進めています。その過程で私達はVision.frameworkを活用してクレジットカード番号読み取り機能を独自実装しました。この記事では、実際に起きていた技術負債とその解消のための実装をサンプルコ

    iOSのVision.framework活用事例 〜 PayPayフリマのクレカ番号読み取り機能実装例
  • NIST SP800-171へ準拠することが決まったら 〜 FIPSモードを有効化した場合

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog ヤフーの IaaS チームに所属する木下です。普段はインフラエンジニアとして IaaS 基盤の開発・構築・運用を担当しています。 ヤフーを傘下に持つZホールディングスは、高度化するサイバーセキュリティの脅威に対応するため、サイバーセキュリティ方針を掲げています。 この基方針の中で、Zホールディングスおよびそのグループ企業は、米国標準技術研究所(NIST)が定めたサイバーセキュリティ基準に準拠したシステムを構築し、サービスを提供すると宣言しています。 タイトルにある NIST SP800-171 はこの「米国標準技術研究所(NIST)が定めたサイバーセキュリティ基準」の一例です。 私が担当する IaaS 基盤でも、このサイバー

    NIST SP800-171へ準拠することが決まったら 〜 FIPSモードを有効化した場合
  • Apache Hudi を用いてレコード単位で削除可能なデータレイクを構築した話

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。データ統括部でYahoo!広告のデータエンジニアをしている江島です。 記事では、Yahoo!広告のデータ分析環境であるデータレイク上のデータを、Apache Hudi を用いてレコード単位で削除可能にした事例を紹介します。 Yahoo!広告のデータ分析環境 Yahoo!広告における データマーケティングソリューション では、ヤフーの持つ圧倒的な量と質のデータを活用し、消費者理解や広告効果分析を目的としたさまざまな商品を提供しています。 これらの商品を提供するための裏側には広告に関する膨大なログや多種多様なサービスのログを使ってデータ分析機械学習を行うためのデータ基盤が必要です。データマーケティングソリューションで

    Apache Hudi を用いてレコード単位で削除可能なデータレイクを構築した話
  • ヤフーのJava開発を支えるJavaサポートチーム

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告エンジニアの高見と申します。 2021年10月より「第11代黒帯〜プログラミング言語(Java)〜」 に就任しました。 この記事では、「ヤフーにおけるJava開発」と、私が従事している「Javaサポートチームの活動」について、紹介します。 (※黒帯制度とは:各領域において突出した専門性を持つ社員を黒帯として任命し、社内外における活動を会社として支援する制度) 1.ヤフーにおけるJava環境 2017年10月頃から全社でシステムのモダナイゼーションが推進されています。 この取り組みで、主要開発言語がPHPから、JavaとNode.jsに変更となりました。 Javaは、主にサーバーサイドアプリケーションで使

    ヤフーのJava開発を支えるJavaサポートチーム
  • EOLを迎えたSensuがPrometheusに託した、2万台規模のIaaS監視

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。ヤフーのクラウドプラットフォーム部に所属している北田、馬場、高橋です。 私たちのチームは社内向けに IaaS 環境を提供しており、その品質を管理・維持するために監視システムを導入しています。 システムの部分的な障害や冗長性などを監視する目的で、私たちはこれまで Sensu を使っていましたが、その EOL をきっかけに Prometheus へ移行することにしました。 この記事では、Sensu の移行先として Prometheus を選んだ理由、Prometheus を利用した監視システムの構成、そして、Prometheus を導入した際の工夫などを紹介します。 ヤフーの IaaS 環境の監視状況 私たちのチームが社

    EOLを迎えたSensuがPrometheusに託した、2万台規模のIaaS監視
  • モデリング施策を高速・安全に回せる、MLOpsの仕組みづくり

    こんにちは。サイエンス統括部で機械学習エンジニアをしている芹沢です。ヤフー全社で使われているレコメンドプラットフォームを担当するプロジェクトに所属し、ログ収集・学習ジョブの開発/運用やMLOpsに関連する業務を行っています。 記事ではそのMLOps業務の中からモデリング業務の効率化の取り組み事例を紹介します。新しいモデルを番採用するまでにはA/Bテストの準備などをする必要がありますが、それにかかる工数が多いことが課題となっていました。そこで、検証段階からA/Bテスト実施までの実装の負担を軽減し、より早く安全にモデル改善の試行錯誤を行える仕組みを提供しました。 ※ レコメンドシステムの開発はプライバシーポリシーの範囲内で取得したデータを用いて、個人を特定できない形で行っています。 全社共通レコメンドプラットフォームの紹介 レコメンドとは、サービスを利用するユーザーにおすすめのアイテムを

    モデリング施策を高速・安全に回せる、MLOpsの仕組みづくり
  • ヤフー式新人研修 〜 フルオンラインでエンジニア研修を作った話

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。システム統括部で技術研修の設計・運営をしている酒井です。 ヤフーでは新入社員が配属後も業務で協力しあえるよう、同期同士の関係構築を研修のゴールのひとつとしています。しかし昨年は、新入社員の研修をフルオンラインで行ったために、そこに課題が残ってしまいました。今年は、いかに関係構築ができるよう改善できるか? がポイントの1つでした。 この記事では、2021年4月から6月にかけて実施した2カ月半の研修での工夫を、カリキュラム内容と新入社員の声もまじえて紹介していきます。よかったら最後までお付き合いください! 【目次】 狙いと課題 研修の流れとカリキュラム コミュニケーションのために工夫したこと 新入社員と運営が、ともに作る

    ヤフー式新人研修 〜 フルオンラインでエンジニア研修を作った話
  • ヤフーのAIプラットフォーム紹介 〜 AI開発をより手軽に

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。ヤフーでデータエンジニア兼マネージャーをしている安藤です。 社内で利用しているAIプラットフォームの構築、提供を担当しています。 ヤフーには100を超えるサービスがあり、各サービスのデータ*1が蓄積されています。ヤフーではこれらのデータをマルチビッグデータと呼んでいます。マルチビッグデータを利用し、ユーザの利便性やサービスの質向上のため、AI機械学習の導入が増えています。 今回は、社内で急速に利用が進んでいる内製のAIプラットフォームを紹介します。 *1 この記事で取り扱っているデータは、プライバシーポリシーの範囲内で取得したデータを個人が特定できない状態に加工しています。 AIプラットフォーム開発の目的 AIプラッ

    ヤフーのAIプラットフォーム紹介 〜 AI開発をより手軽に
  • あなたの会社のなりすましが現れたら? 迷惑メール対策方法とYahoo!メールのDMARC導入事例紹介

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。エンジニアの中村成陽と申します。Yahoo!メールを担当しております。 今回の記事ではなりすましメールについての説明と、その対策としてYahoo!メールに導入した送信ドメイン認証技術のひとつである「DMARC」についてご紹介します。そしてこれらを踏まえ、なりすましメール対策のために何ができるのかをご紹介しますので、参考になれば幸いです。 なりすましメールとは? なりすましメールとは、送信者自身のものではない、うそのメールアドレスを詐称、つまり別のメールアドレスからのものであると偽って送られたメールのことです。 送信元メールアドレスには、手紙でいえば封筒に記載する差出人となる EnvelopeFrom アドレスと、中身の

    あなたの会社のなりすましが現れたら? 迷惑メール対策方法とYahoo!メールのDMARC導入事例紹介