サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
techblog.lycorp.co.jp
こんにちは。メディアカンパニーに所属する鴻巣和司 (@kazushikonosu) です。普段はLINEスキマニのフロントエンドの開発をしています。業務をきっかけに、TypeScriptの不要なデッドコードを自動で削除するツール ts-remove-unused を開発し、GitHub上でOSSとして公開しました。本稿では、ts-remove-unusedが解決しようとしている問題や直近で行った大規模な変更について紹介します。 exportしていることで気づきにくい不要なコード TypeScriptを使っている場合、tsconfig.json の compilerOptions.noUnusedLocals を有効にすることで、ファイル内で参照がない不要な変数などの定義をTypeScriptコンパイラの実行時に検知することが可能です。また、ESLintなどの静的解析ツールを使い適切にルール
こんにちは。AndroidアプリでLINE公式アカウントの開発を担当している高島です。今回は、私たちのチームで試しているモブプログラミングの取り組みと、実際に取り組んで感じたことについてご紹介します。 モブプログラミングについて モブプログラミングは、複数の開発者が1つのコンピュータを共有し、協力して問題を解決する開発手法です。モブである人たち(ナビゲーター)が解決方法を提示してガイドし、キーボードの前に座る1人(ドライバー)がコーディングします。ドライバーは一定時間ごとに交代します。 私たちのチームは、後ほど紹介する本を参考にして、合わないところは変更しながら、現在は次のような形で週に1度90分間行っています。 準備(5分) 新しいテーマに取り組む場合、問題を皆に共有し、どう進めるか方向性を話し合って決めます。前回から引き続き同じテーマで行っている場合、前回やったことと、前回の振り返りで
こんにちは。LINEヤフーで画像処理エンジニアをしている植田です。先日2024年8月6日から9日まで熊本にて国内最大級の画像分野の学会、第27回 画像の認識・理解シンポジウム MIRU2024が開催されました。 LINEヤフーもスポンサーとして協賛し、企業ブースの運営や研究発表・聴講のために参加しました。昨年はLINE・ヤフー個別で参加 (MIRU2023参加ブログ)していましたが、合併を経てLINEヤフーとして初めてMIRUへ参加させていただきました。 本記事では会場の様子やLINEヤフーの研究発表内容を紹介します。 MIRUとは? 国内の画像分野では言わずと知れた学会でもあるMIRUは画像処理や、人工知能(AI)の視覚機能を研究する分野「コンピュータビジョン」など、情報学における画像分野の一大学会です。開催地は年によって異なり日本全国各地で開催されています。今年は熊本県熊本市の熊本城ホ
こんにちは。生成AI関連の開発をしている図左です。社内でRAGを使った生成AIサービスを開発していますが、ロジック変更のたびに毎回人手でテストするのは現実的ではありません。今回は、この品質評価を自動化したフローや手法を紹介します。 SeekAIとは LINEヤフー株式会社では、社内の情報を効率的に検索するために、生成AIを活用したサービス SeekAI を内製展開しています。SeekAIではRAGという技術を使って一般的な知識だけでなく、社内規程・ルール・問い合わせ先、コーディング時の技術スタック、顧客や取引先とのコミュニケーション履歴などを効率的に把握できるため、社内の情報検索ツールとして活用されています。 SeekAIのプレスリリース RAGとは 生成AIに『学習済みではない知識』に関する回答を出力させるために、別途構築したデータベースから取得した情報と組み合わせて回答させる手法です。
こんにちは。AndroidアプリエンジニアのChigitaとFukunoです。 先日開催されたKotlin Fest 2024のLINEヤフー企業ブースでは、「Pocket Code Battle」を...
こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 この記事は、毎週木曜の定期連載 "Weekly Report" 共有の第 34 回です。 LINEヤフー社内には、高い開発生産性を維持するための Review Committee という活動があります。ここで集まった知見を、Weekly Report と称して毎週社内に共有しており、その一部を本ブログ上でも公開しています。(Weekly Report の詳細については、過去の記事一覧を参照してください) 三十六計分けるに如かず メッセージを送受信するサービスの UI レイアウトを実装しているとします。このレイアウト内では、様々な「ボタン」を実装する必要があります (例: メッセージ送信ボタン、プロフィール編集ボタン、...)。以下のコードは、メッセージ送信ボタン SendMessageButto
こんにちは、LINEスキマニのフロントエンド開発担当や、フロントエンド開発に関するイベントの運営をしている板井(@itatchi3_)です。 LINEヤフーでは、社員が海外のカンファレンスや学会に参加することを支援する制度があります。これを通じて、最先端技術の情報収集や現地の温度感の調査を行い、得た知見を会社に持ち帰ることで、全社的な技術力向上に努めています。 この制度を活用し、2024年5月13日と14日にアメリカ・サンフランシスコ州マウンテンビューで実施された「Google I/O 2024」に現地参加してきました。 現地のエンジニアと実際に触れ合った中で、その熱意の高さからも重要であると感じ、さらにLINEヤフーでも導入の検討が進められているフロントエンド技術について解説します。 Built-in AI 兎にも角にもAI一色の「Google I/O 2024」でした。AI関連の発表が
質問内容に対して、手動で実行しその結果をドキュメントに残していれば0.5、CIなどに組み込まれ自動実行されている場合には1.0、どちらにも該当しない場合には0といった形で回答し、各領域においてスコアを合算し、そのスコアの最小値が最終的なMLOpsScoreです。 前回報告した際の、合併前のヤフー株式会社のプロダクトにおける MLOpsScoreの結果は以下の通りでした。 元論文の判定基準に当てはめると、現行のスコアは「基礎的なプロジェクトの要求事項は通過した。しかし、信頼性向上のためのさらなる投資が必要とされる」という判定です。当初はこのスコアが2を超える、「適切なテストがされているが、さらに自動化の余地が残っている」を達成することをいったんの目標としていました。 また、各カテゴリごとに分解して見てみると、特にモニタリングの領域について課題がありそうなことがわかります。 取り組んできたこと
こんにちは、Dev Contentチームのmochikoです。LINEヤフー株式会社でテクニカルライターとして働いています。 今日は、テクニカルライティングの専門チームで、私たちテクニカルライターが「チームの目標」をどう決めたかについてお話しします。 ※本文中に記載されている会社名、製品名、キャラクター名などは各社の商標、または登録商標です。 テクニカルライターってなに? 目標の話に入る前に、そもそも「テクニカルライターってなに?」という方もいらっしゃると思いますので、テクニカルライターについて簡単に説明します。 LINEヤフー株式会社の技術組織には、技術ドキュメントやAPIリファレンスなどを書く専門職として「テクニカルライター」というポジションがあります。日々、テクニカルライターがどんなふうに働いているかについては、合併前のLINE Engineering Blogに書いた『LINEの社
こんにちは。Yahoo!フリマのAndroid開発を担当している菅野です。 私の開発チームではGitHub Copilotを導入し、開発の生産性を高めています。今回は私たちの開発チームがどのようにGitHub Copilotを活用しているのか、その具体的な事例を紹介します。この記事を通じて、GitHub Copilotの導入方法や活用のポイントを学び、皆さんの開発プロセスの効率化に役立てていただければと思います。 GitHub Copilotとは GitHub CopilotはAIを活用したコーディングアシスタントで、コードの記述を助けるためにリアルタイムでコードの提案を行います。コード補完として入力中のコードに対してコーディングの補完提案をしてくれたり、チャット機能を利用してコードに関する質問をCopilotに投げかけることができます。 Android StudioにGitHub Cop
以下のように、できるだけ簡潔に単一ページですべてを解決できるように構成し、ユーザーだけでなく私たちも使用量を追跡・管理するために、管理者ダッシュボードも構成しました。 ユーザーダッシュボード 管理者ダッシュボード 今回のキャンペーンは大規模なRedisが対象で、リリース時期や開発関連の特定イベントを避けるなど、開発者のスケジュールも考慮しながら実施したため、長期間にわたって展開しました。深く考えて準備したためか、多くの開発者がキャンペーンに参加し、おかげさまで成功裏に終えることができました。以下は、2023年の1年間、Redisが使用していたリソースの変化を示したグラフです(サービス数ではありません!)。 ここで重要なのは、サービス数にはほとんど変化がなかったということです。むしろ、終了するサービス数が開始するサービス数に追いつくことができませんでした。それでも、上のグラフのようにリソース
こんにちは。LINEヤフー株式会社で、出前館というプロダクトのサーバーサイドエンジニアをしている古田大志です。 株式会社出前館はLINEヤフーのグループ会社です。資本業務提携を結んでいて、LINEヤフーが開発などをサポートしています。 詳しくはこちらをご参照ください。(https://corporate.demae-can.co.jp/pr/news/demaecan/line.html)(外部サイト) 今回の記事では、その出前館における開発の内容を紹介させていただきます。 出前館はデリバリーサービス事業のプロダクトで、開発においてはマイクロサービスアーキテクチャを採用しています。出前館のマイクロサービスの1つに、クーポンに関するドメインの責務を持ったコンポーネントであるクーポンサービスがあります。 クーポンサービスでは、ビジネスエンハンスに伴う「非機能要件の増大」や「仕様の複雑さの肥大化
このページでは、毎週木曜の定期連載「コード品質向上のテクニック」の過去記事一覧を掲載しています。 LINEヤフーの開発組織では、高い開発生産性を維持するためにコード品質と開発文化の改善に注力しています。そのさまざまな取り組みの 1 つとして Review Committee の活動があります。これは、マージ済みのコードを再度レビューし、レビューアとオーサーにフィードバックするというものです。そして、そのレビューで集めた知見を Weekly Report と称して毎週社内に共有しています。 この Weekly Report で共有される話題の中には、Kotlin や Swift といった言語固有のものや、Android や iOS といったプラットフォームに限定されるものもあります。しかし、多くの記事は言語やプラットフォームによらず、プログラミング一般に適用できる話題についてです。そのような
はじめに こんにちは! Yahoo!知恵袋の津村です。去年の11月からYahoo!知恵袋のフロントエンドシステムのリアーキテクトに取り組んでいます。この記事では、これまで抱えていた技術的な問題と、それらをどう解決したかについて説明します。この結果、開発効率向上やレビュー時間短縮などの効果がありました。 Yahoo!知恵袋は利用者登録者数5,200万人、質問総数2億8,000万件、回答総数は6億5,000万件以上(2024年4月3日現在)ある、日本最大級のQ&Aサイトです。2004年からサービスを開始し、今年20周年を迎えます。 Yahoo!知恵袋はモバイルクライアント、バックエンド、フロントエンドの3つのシステムで構成されています。今回対象とするフロントエンドシステムは、ブラウザやYahoo! JAPANアプリからアクセスされる際のWebページを提供するシステムです。 Yahoo!知恵袋の
こんにちは、LINEヤフー株式会社でデータベース部門に所属している、今野です。現在は、先日LINEヤフー社内にて提供を開始したFractalDBの開発と運用を担当するチームに所属しています。 FractalDBは、LINEヤフーのオンプレミス環境に向け開発された、データベースプラットフォームです。この記事では、FractalDBの概要として、開発に至った背景や設計目標から、その特徴およびアーキテクチャの概要について紹介します。 また、LINEヤフーでは今夏のインターンシップを募集しています。FractalDBチームも募集してますので、ページの最後の紹介をぜひ確認してみてください。 FractalDBとは FractalDBは、LINEヤフーのオンプレミス環境に最適化されたデータベースプラットフォームとして開発されています。リレーショナルデータベースとNoSQLデータベースの利点を融合させた
こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 この記事は、毎週木曜の定期連載 “Weekly Report” 共有の第 23 回です。Weekly Report については、第 1 回の記事を参照してください。 return の切れ目が edge case の切れ目 早期リターン (early return, return early) は、動作の流れを明確にする上で重要なテクニックです。エラーケースを最初に除外することで、「関数の主な目的」に焦点を当てたコードを書きやすくなります。また、エラーの条件とその処理ロジックの関係もより分かりやすくなりという利点もあります。(詳しくは、 https://speakerdeck.com/munetoshi/code-readability-session-5-ver-2-ja?slide=39 から
はじめまして、LINEヤフー株式会社でKubernetes as a ServiceのPlatform Engineerを務めている小林と申します。 私は業務で使っているという都合もあり、 kustomize(※)というOSSの開発者もしています。 ※ kustomize:kustomizeは、KubernetesのYAMLマニフェストファイルをテンプレート化せずに管理するためのツールです。ベースとなるマニフェストに対して、パッチやオーバーレイといった方法で変更を加えることができます。これにより環境ごとの設定差分を管理し、再利用可能なマニフェストファイル群を作成することが可能となります。 前回のKubeConにて、OSSへの貢献から Kubernetes Contributor Awards という賞を受賞させて頂きましたので、私のLINEヤフー株式会社でのKubernetesやOSSとの
こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 この記事は、毎週木曜の定期連載 “Weekly Report” 共有の第 22 回です。Weekly Report については、第 1 回の記事を参照してください。 To equal, or not to equal Java や Kotlin では、equals をオーバーライドすることで「構造の等価性 (structural equality)」を定義することができます。(ただし、equals をオーバーライドするときは、hashCode もオーバーライドする必要があります。) 以下のような、ユーザプロファイルの UI のデータモデルがあるとしましょう。このデータモデルでは、独自の equals と hashCode を定義しています。 class UserProfileViewData(
以上の点を踏まえると、類似処理をグルーピングし、グループごとの総計算リソース消費量を比較することで、改善すべき処理群をより効率的に特定できます。私たちは、類似処理のグルーピングに際して、以下の3つの要素を用いました。 実行されたクエリのユーザクエリで参照されたテーブルのリスト各クエリによる計算リソースの消費量 これらの情報を用いたグルーピングにより、クエリ文字列が若干異なるものであっても、同一の処理として比較を行うことが可能になります。実際に私たちが行った手順は以下の通りです。 クエリ実行ログの収集収集したクエリ実行ログから参照テーブルリストを抽出分析可能にするためのログテーブルの作成グルーピングと最適化を検討すべき処理群の特定 「クエリ実行ログの収集」から「分析可能にするためのログテーブルの作成」を実現するPythonのサンプルコードを以下に示します。 #!/usr/bin/env py
こんにちは。Site Operation本部の深澤と小林です。普段は同じチームのメンバーとしてデータセンターネットワークの運用などを担当しています。 2024年1月17日(水) ~ 19日(金) に開催された JANOG53 Meeting IN HAKATA にて「データセンターネットワークでの輻輳対策どうしてる?」というタイトルで登壇をしました。 この登壇では、データセンターネットワークの輻輳に関する技術や課題、実際にHadoopを用いて行った輻輳制御の検証結果をお話しさせていただきました。 今回は、登壇の内容や質疑応答を書き起こし記事としてレポートしたいと思います。 また、質疑応答でいただいたものを参考に追加検証を行いましたので、そちらの結果を共有もいたします。 発表資料アーカイブ動画 1.1. データセンターネットワークと輻輳制御 最初に、この発表を行った背景について解説します。
こんにちは。SWATチームの今谷と、LY会員サービス統括本部の木所です。 LINEとヤフーの会社合併に伴って、LINEヤフー株式会社が提供するサービスを利用するユーザーに「新プライバシーポリシーへの同意」をいただくためのモジュールを開発しました。本記事では、ヤフーのユーザー5,400万人から”同意”を得るための工夫について、実装上の不具合も交えてご紹介します。 なお、ご紹介する内容は、UIT × Bonfire Front-end Meetup #1 での発表が起点となっています。詳細についてより深く知りたい方は、発表資料 や Podcast をあわせてご参照ください。 会社合併と、新プライバシーポリシーのご案内 LINEとヤフー、それぞれで同意モジュールがあります。Web向けのほか、iOS・Androidアプリ向けにも提供しました。 Webの同意モジュールでは「Modal版」と「Ful
こんにちは。DS統括本部で画像処理エンジニアをしている上野です。LINEヤフー株式会社の企業ロゴやサービスロゴなどのブランドロゴには、ブランドガイドラインと呼ばれるロゴ使用時に守らなくてはならないルールが定められています。ロゴを使用する際にロゴが変形してしまったり、変色してしまったりすると問題となるため、細心の注意を払って使用しております。今まではロゴが使用されている画像を担当デザイナーがすべて目視確認でチェックすることで、ガイドラインを遵守してきました。ブランド価値を守るためにとても大切な作業です。これらの作業を画像処理で自動化できないかと考え、ブランドロゴチェックツールを作成しました。 ※載せている画像は、今回のブログ用に用意したテスト画像です。 この記事では、社内のデザイナーから寄せられた目視確認の作業に工数がかかってしまっているという課題を画像処理技術で解決した事例について、紹介し
はじめに こんにちは。プロダクト開発本部のYoungjin Jangです。 皆さんはフロントエンド開発をするときに、テストコードを書いていますか? フロントエンドは分野の特性上、開発スケジュールの後半に成果物(スペック、デザイン、API)を総合して最終的にプロダクトを作る立場になるため、時間に追われてテストコードを書きにくいこともあるかと思います。逆にスケジュールの前半では他の職種より比較的時間が余ることもあるでしょう。この時間を活用してテストを書いてみるのはいかがでしょうか? この記事では、テスト駆動開発の基本的な概念とCypressを利用したテスト駆動開発方法、そして実際にLINEドクターのフロントエンドを開発するときに、どのようにテスト駆動開発を行っているかを紹介します。 LINEドクターとは LINEドクターはオンライン診療サービスで、ユーザーはLINEを通じて診察を受け、処方箋や
こんにちは、UITサービス開発部の板井です。普段はLINEスキマニのフロントエンド開発担当や、フロントエンド開発に関するイベントの運営をしています。 UITでは社内のフロントエンドエンジニアのトレンドや周辺ツールの利用状況を調査するため、毎年社内に向けてアンケート「UIT Survey」を実施しています。(昨年度の実施レポート) 今回の調査に関しては、毎年UITで行っている世界各地のフロントエンド開発拠点が、コラボレーションして技術を共有し合う「UIT GLOBAL WORKSHOP」という社内イベントのオープニングコンテンツで、結果を発表するために行いました。 概要 対象:海外拠点を含むLINEヤフーのフロントエンドエンジニア(回答者は日本、韓国、ベトナム、台湾の組織に所属)質問および回答の言語:英語回答期間:2022/11/22-2022/12/07回答者数:121 名 調査した開発者
こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 この記事は、毎週木曜の定期連載 “Weekly Report” 共有の第 11 回です。Weekly Report については、第 1 回の記事を参照してください。 関数にたこができる あるサービスで、ユーザ同士が「フレンド」になるという機能を実装することを想定します。現在のユーザから見て、別のユーザがフレンドであるかを調べたり、新たにフレンドになるために、以下のような UseCase クラスを使います。 class FriendStateUseCase( private val currentUserId: UserId, ... ) { fun isFriend(otherUserId: UserId): Boolean { ... } fun markAsFriend(otherUserI
This post is also available in the following languages. English, Korean
こんにちは。コミュニケーションアプリ「LINE」のモバイルクライアントを開発している石川です。 この記事は、毎週木曜の定期連載 "Weekly Report" 共有の第 10 回です。Weekly Report については、第 1 回の記事を参照してください。 起きば浮世の壱を見ん ソートされた Item のリストを表示する UI を実装することを想定しましょう。この Item リストの上部には、Item の総数を表示するヘッダーがあるとします。以下は、リストの表示例です。 Items: 3 --------- <item1> --------- <item2> --------- <item3> さらに、リストと総数表示には次のような仕様があるとします。 リストで表示できる Item 数は先頭 100 個まで100 個を超える Item がある場合は、個数表示は "100+" となる 総
はじめに はじめまして。VOOM事業統括本部 VOOM事業本部 サービスアナリシスチームの吉木と申します。データマネージャー 兼 データスチュワードとして日々の業務に取り組んでいます。 私が所属しているチームは、LINEヤフー株式会社の保有するデータを用いて、ビジネスに対する洞察の提供、施策や機能の効果を測定する分析活動の支援、KPIのモニタリングを行う用途のダッシュボードの提供などを主に行っています。 この記事では、データマネージャーとはどのような役割を担っているのか、そしてLINEヤフー株式会社における事業部メンバーのデータガバナンスに対する認識や意識を高めるために行った取り組みについての事例を紹介します。 私と同じようにデータマネジメントやデータガバナンスに関する活動や業務に取り組まれている方の参考になれば幸いです。 データマネージャーとは データマネージャーの業務内容についてご存じ
次のページ
このページを最初にブックマークしてみませんか?
『LINEヤフー Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く