タグ

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

  • 文字と行間の大きさは何が良い?読みやすさとKPI両立への挑戦

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、デザイナーの鈴木です。CTO室でユーザインタフェースの研究開発を行っています。 みなさんはスマートフォン向けのアプリケーションやWebページを作成する際、文字と行間の大きさをどうしたらよいか迷ったことはないでしょうか? 私たちはこの疑問を明らかにするためにクラウドソーシングを用いた大規模な実験を実施し、どんな大きさの組み合わせが適切であるか定量的・定性的な分析を行いました。記事ではこの実験と分析の結果について述べ、さらにこの知見をヤフーニュースに適用した結果どのような貢献が見られたかお話しします。 予備実験 読みやすさに影響を与えうるフォントプロパティはさまざまなものが考えられます。私たちはその中から文字と行間の大き

    文字と行間の大きさは何が良い?読みやすさとKPI両立への挑戦
  • 循環的複雑度に着目し10年モノのコードを改善する(Yahoo!カーナビのコード品質可視化と改善の歩み)

    ※循環的複雑度を改善する以外にも、テストカバレッジを向上させるためにコードを整理したり、テストコードを増やしたり、アーキテクチャを刷新するためにリファクタリングを進めたり、さまざまな活動をしていますが記事では割愛します。 実際、Yahoo!カーナビのAndroid版/iOS版共に、複雑度が75以上のメソッドが存在しました。 循環的複雑度の可視化 指標が決まったので、次に着手するべきは指標の可視化です。可視化については以下の2点が重要だと考えました。 自動で計測・集計できる(もしくは単純な手動作業で計測できる) 誰でもすぐに見られる 複雑度を計測する モバイルアプリにおいて、循環的複雑度を計測する方法はいくつかあります。私たちは同じZホールディングスグループのZOZOのTECH BLOG「ZOZOTOWN Androidチームにおけるコードメトリクスとビルド時間計測の取り組み」を参考にしま

    循環的複雑度に着目し10年モノのコードを改善する(Yahoo!カーナビのコード品質可視化と改善の歩み)
  • 今は、もう、動かない、その 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 文字列
  • Cognitive Complexityを400以上減らすまでに何をしたか 〜 コード品質改善の具体的なプラクティス

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

    Cognitive Complexityを400以上減らすまでに何をしたか 〜 コード品質改善の具体的なプラクティス
  • ヤフー式新人研修 〜 フルオンラインでエンジニア研修を作った話

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

    ヤフー式新人研修 〜 フルオンラインでエンジニア研修を作った話
  • ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは! Yahoo!ショッピングクーポンチームの小倉です。 前回のフロントエンド技術刷新の話とは打って変わり、今回は2019年に行ったバックエンド技術刷新の話です。 刷新前のシステムはノンフレームワークPHPのモノリスでしたが、現在は主にJava/Spring Bootでマイクロサービス化しています。今回は、その中でもっとも仕様が複雑だったマイクロサービスにおいて、ドメイン駆動設計(Domain Driven Design:DDD)を実践した話をご紹介します。 ショッピングクーポンの自由度を知る みなさんは、ショッピングの商品が割引になるクーポンをご存じでしょうか? 実は、クーポンには、ヤフーが予算をだして発行する「モールク

    ドメイン駆動設計で保守性をあげたリニューアル事例 〜 ショッピングクーポンの設計紹介
  • ヤフーのスクラム開発実践者の経験年数ごとの学習方法の紹介

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは! アジャイルコーチの荒瀬です。 ヤフー、および関連会社のアジャイル開発支援や研修を担当しています。 今回はヤフーのスクラム実践者の学習方法についてお話しします。 イベントや研修の中で、スクラムの勉強方法をいろいろな方から質問されることが多かったので、記事にするとより多くの人の役に立つのではないかと思い執筆することにしました。 また、せっかく書くのであれば、ヤフーの中にいるさまざまなスクラム実践者の話も交えると、経験年数別に、より参考になりそうな書籍、セミナーや研修を紹介できるのではないかと考え、ヤフーのスクラム経験者にも協力いただいています。 スクラムを始めた頃の自身のことを考えながら、こういう記事があるといいのにと思

    ヤフーのスクラム開発実践者の経験年数ごとの学習方法の紹介
  • 社内勉強会で専門的技術力を高めるには

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog サイトオペレーション部に所属している大津と申します。普段CDNとNode.jsサポートの仕事をしていて、第9代黒帯(ヤフー内のスキル任命制度/ネットワーク・セキュリティ)に任命していただいています。1 先日ヤフー社内で黒帯LT会が開催されました。お題目は事前に指定された「専門的技術力を極めるための極意」ということで、10分ほど話をしました。しかし、これまでみたいにセミナールームで大勢の前で話すわけではなく、最近代わり映えしない自宅デスクからのオンラインLTは、正直勝手が違いました。時間配分もミスって中途半端に終了です。と思いきや数日前、このYahoo! JAPAN Tech Blog担当者から「いやー、よかったですよ。そのネタ書

    社内勉強会で専門的技術力を高めるには
  • UICollectionViewでレスポンシブUIを実現するためのコードをOSSとして公開しました - Yahoo! JAPAN Tech Blog

    こんにちは、iOSアプリ黒帯の林(@kazuhiro494949)です。 先日、ヤフーのiOSアプリ内で利用されているコードを一部切り出してOSSとして公開しました。 https://github.com/yahoojapan/UICollectionViewSplitLayout このOSSを使うと、リストやグリッドで表示されているデータを画面サイズに合わせてレスポンシブに並べることができます。 iOSのユニバーサルアプリ1で上記のようなデザイン要件を受け、既存の仕組みでは実現することが難しかったため開発しました。記事では、その技術的な課題を解説し、解決策としてのOSSを紹介したいと思います。 UICollectionViewとUICollectionViewLayout はじめに、UICollectionViewというiOSアプリ開発において重要なクラスのひとつを簡単に説明します。

    UICollectionViewでレスポンシブUIを実現するためのコードをOSSとして公開しました - Yahoo! JAPAN Tech Blog
  • 身近な技術的課題から始めるOSSプロジェクト

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、iOSアプリ黒帯の林(@kazuhiro494949)です。 ヤフーでは、普段はiOSアプリの開発をしながらそこで得た技術的な知見を広く社会へ共有するという仕事をしています。 「技術的な知見を社会へ共有する」というのは具体的にはどういったことを指しているのでしょうか。その方法はさまざまあるかと思いますが、今回はOSSを通じた技術コミュニティーへの貢献という話を書きたいと思います。といっても、紹介する事例はSwiftやRxSwift・fastlaneなどへコミットするという大きな話ではありません。もっと身近な、「日常の開発で発見したピンポイントな課題を解決するライブラリ」という観点で話を進めます。 モチベーション 1年以

    身近な技術的課題から始めるOSSプロジェクト
  • potatotips #37で発表しました & 発表した内容をOSS化しました

    みなさま、こんにちは。ヤフーでiOSアプリのエンジニアをしている林(@kazuhiro4949)です。 少し前になりますが、2月15日に弊社LODGEにてpotatotips #37が開催されました。 potatotips #37 (iOS/Android開発Tips共有会) (2017/02/15 19:00~) 当日の様子は以下の記事で詳しくレポートされています。 potatotips #37 (iOS/Android開発Tips共有会) 参加レポート potatotips#37 (iOS/Android開発Tips共有会) Androidまとめ 2017/2/15 #potatotips (iOS/Android開発Tips共有会) 第37回 私はヤフーからの発表者として参加し、以下の内容でLTをさせていただきました。 もともとは、IGListKitというInstagram製のUIC

    potatotips #37で発表しました & 発表した内容をOSS化しました
  • 高速ファイル/メッセージ転送 K2HFTFUSE の紹介

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、Technical Yahoo の中谷です。 今回は、Yahoo! JAPANからオープンソースとして公開した高速ファイル/メッセージ転送システムの K2HFTFUSE の紹介をします。 K2HFTFUSEは、確実で高速なファイル/メッセージ転送を低コストで実現するために開発されたシステムです。 K2HFTFUSE(K2Hash File Transaction by FUSE-based file system)とは、FUSE(Filesystem in Userspace)によるユーザースペースでのマウント機能を利用したファイル/メッセージ転送システムです。 K2HFTFUSEは、仮想ファイルシステムを提供し、マウ

    高速ファイル/メッセージ転送 K2HFTFUSE の紹介
  • 細かすぎて伝わらないSSL/TLS

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog 「細かいと言うより長いよね」 はじめに こんにちは。ATS の脆弱性を発見した小柴さんや ATS に HTTP/2 の実装を行っている大久保さんと同じチームの一年目、匿名社員M さんからいじられている新人です。今回ありがたい事に、こういったすごい方々を含めモヒカン諸先輩方より「何か書かないの?」「いつ書くの?」という数々のプレッシャーお言葉をいただきました。 というわけで、SSL/TLS の Session 再開機能に関して書いていこうかと思います。 SSL/TLS は機密性、完全性そして真正性に対して安全な通信を行うための仕組みです。しかし、この仕組みは暗号技術を多用し特に接続において複雑なプロトコルを用い、Client, Se

    細かすぎて伝わらないSSL/TLS
  • LollipopでのNotification

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Androidアプリエンジニアの筒井です。 11月27日の夜にヤフー社内で他社さんも含めたクローズドな合同勉強会を行いました。 その時の自分の発表内容を今日は書こうと思います。 LollipopでのNotification 5.0からのNotificationで自分が興味があるところについて調べてみました。 Heads Up Notification ロック画面上での通知の表示 その他 Tipsなど 環境 調べるにあたって利用した環境です。 Nexus5 (OS: 5.0) ソースコード android-5.0.0_r7 Heads Up Notification Lollipopから導入された新しい通知の仕組みです。

    LollipopでのNotification
  • Caffeで手軽に画像分類

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。システム統括部 データソリューション部の宮崎です。 最近ディープラーニングと呼ばれる技術の話題を耳にすることが増えてきました。 この記事ではディープラーニングの手法を実装し画像認識系の用途で便利に使えるCaffeというツールの使い方を紹介します。 Caffeの概要 Caffeは、C++で実装されGPUに対応した高速なディープラーニングのライブラリです。 大規模画像認識のコンテストILSVRCで2012年にトップとなった畳込みニューラルネットワークの画像分類モデル[1]がすぐに利用できるようになっています。 Caffeは、カリフォルニア大学バークレー校のコンピュータビジョンおよび機械学習に関する研究センターであるBV

    Caffeで手軽に画像分類
  • AndroidでもiPhoneに負けないようなアニメーションを実装してみよう

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、Yahoo!ニュース開発の加藤真也です。 Yahoo!ニュースでは主にAndroidアプリの開発をしていたのですが、現在は スター育成プログラム という社内ベンチャーの枠組みで、mato*memoというAndroidアプリの開発をしています。 ふって簡単メモ! mato*memo ~まとめも~ 今回は、mato*memoアプリ開発でアニメーションを実装するため使用した、Property Animationについて紹介したいと思います。 ちなみに開発当初の目標は、タイトルにもある通り、iPhoneにも負けないアニメーションをAndroidで実装することでした。 結果がどうなったかは、上のリンクから実際にアプリをダウンロー

    AndroidでもiPhoneに負けないようなアニメーションを実装してみよう
  • 爆速でわかるjQuery.Deferred超入門

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog Yahoo!デベロッパーネットワークの中野(@Hiraku)です。これまで、JavaScriptで非同期処理を書く上での問題として、コールバック地獄やエラー処理に例外が使えないことなどを解説してきました。 これらの問題に対処するライブラリの1つであるjQuery.Deferredに関して、もう少し丁寧に解説いたします。なお、jQueryのバージョンは記事執筆時点の最新である、1.9.1を想定しています。 jQuery.Deferredとは jQuery.DeferredとはjQueryのバージョン1.5から導入された、非同期処理をうまく扱うための標準モジュールです。使いこなすことで、以下のような効果が見込めます。 非同期処理を連結

    爆速でわかるjQuery.Deferred超入門
  • 爆速JSONPをオープンソース化しました

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog 先日、ブログパーツ作成フレームワーク 爆速JSONP をGitHubにて公開しました。2012年8月にYahoo! JAPANのソフトウェアガイドラインをライセンスとするバージョンを公開しましたが、オープンソース化に伴い、CDNで配布しているファイルもGitHub版に差し替えています。(インターフェースは互換性を保っています) yahoojapan/bakusoku-jsonp · GitHub CDN版: https://s.yimg.jp/images/yjdn/js/bakusoku-jsonp-v1.js CDN版(圧縮済み): https://s.yimg.jp/images/yjdn/js/bakusoku-jsonp

    爆速JSONPをオープンソース化しました
  • レプリケーションを使わないMySQLの冗長化

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、DBMSチームの三谷です。 ヤフーでは多くのサービスでMySQLを利用しています。MySQLはヤフーを支える重要な技術の1つです。 私のチームではヤフーのさまざまなサービスのデータベースを集約して管理・運用しています。 集約することでコストの削減やノウハウの蓄積といった効果を生み出しています。 今回はこの集約環境の冗長化方法についてご紹介します。 集約環境の構成 集約環境ではマスターの冗長化にレプリケーションを利用せず、エンタープライズ向けの共有ストレージを利用したアクティブ・パッシブ型のHA構成を採用しています。 データファイルを共有ストレージに置き、どのマスターサーバーからでも同じデータに対してアクセスできるように

    レプリケーションを使わないMySQLの冗長化
  • 30分でできる!AR帰宅支援アプリをYOLPのiOS Map SDKで作ってみました

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog YOLP(Yahoo! Open Local Platform)のiOS Map SDKコアエンジン担当のunoです。 先日アップデート公開しましたiOS Map SDKとAndroid Map SDKの新機能をご紹介させていただくために、サンプルアプリとしてiOS Map SDKを使って簡易AR帰宅支援アプリを作ってみました。 以下の記事に沿って進めていただければ、どなたでも簡単に開発いただけますので、ぜひお試しください。 iOS Map SDK & Android Map SDKとは? iOS Map SDKとAndroid Map SDKは、それぞれiOS、Android OS向けの地図アプリケーション開発キットです。 これ

    30分でできる!AR帰宅支援アプリをYOLPのiOS Map SDKで作ってみました