サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
techblog.lycorp.co.jp
LINEヤフー株式会社の開発組織では、開発文化を改善するためにさまざまな試みを行っています。今回は、LINEのクライアントアプリの開発プロセスを改善を担うMobile Developer Experience Devチームでの「コードの可読性」向上の取り組みについて、Munetoshi IshikawaさんとGiuk Jungさんのインタビューを通じて紹介します。 左からGiuk Jung、Munetoshi Ishikawa Giuk Jung:LINEのiOSアプリ開発を担当しています。特にiOSのビルド環境の改善や、ビルドに使われるツールの開発などに取り組んでいます。簡単に言うと、「開発者をサポートする開発」をしています。iPhone3GSが発売された2009年から日本で働き始め、今年で15年目になります。 Munetoshi Ishikawa: LINEのAndroidアプリの開発
こんにちは。エンジニアの中野です。前回は、私たちが開発している FractalDB: LINEヤフーのオンプレミス・マルチテナンシー型データベースシステムの紹介という記事を公開しました。 今回は続いて、開発に至った背景とそれからどのようなサービス設計を行ったのか、少し具体的な話をさせていただきます。 課題(FractalDB開発の背景) 社内クラウドDBが欲しい 比較的昔から「パブリッククラウドの"クラウドDB"、例えばAWS DynamoDB(以下DynamoDB)やGCP Cloud Spanner、Microsoft Azure CosmosDBのようなデータベースが社内にも欲しいよね」という漠然とした話はありました。 例えば、DynamoDBを使ったアプリケーション作成は、通常のRDBMSを使ったアプリケーション開発と以下のような違いがあります。 普通のRDBMSを使ったアプリDy
こんにちは。LINEヤフー株式会社でデータベースエンジニアをしている、松浦、中園、大塚、曽根、笠井です。 データベースはLINEヤフーのさまざまなサービスを支える重要なソフトウエアですが、その安定的な運用やトラブルシューティングには、データベースに関する専門的な知識が必要です。 一方で、データベース部門に配属される新卒のエンジニアは、全員が学生時代にデータベースを専門的に勉強しているわけではありません。このような新卒エンジニアは、データベース部門へ配属後、OJTや実際のデータベースの運用業務に携わりながら、データベースに関する専門知識を深めていきます。 今回のブログ記事では、データベースエンジニアとしての専門性を高めるために、部門内で実施している専門書の輪読会、そして、MySQLを題材としたデータベースカーネルのモブプログラミング(以下、モブプロ)の取り組みについてご紹介します。 1. 輪
こんにちは。私はLINEアプリのiOSエンジニア、Zang Zhihaoです。私たちのチームはLINEアプリの公式アカウント機能やLINE公式アカウントアプリを担当しています。今日は、iOS/Androidプラットフォーム間でのコード共有についてお話しします。 プラットフォーム間でのコード共有は、ソフトウェア開発コミュニティで長い間ホットな話題となっています。しかし最近では、モバイル開発の分野でさらに注目を集めています。古い技術であるXamarinは最近のニュースにはあまり登場しませんが、Kotlin Multiplatformについての話がiOSDCやDroidKaigiでは、少なくとも最近3年間は常に取り上げられています。FlutterやReact Nativeの技術についてもよく話題になります。しかし、今日は別の、Rustの話をしたいと思います。 Rustはモバイル開発のための明白な
This post is also available in the following languages. English, Korean はじめに 最近、業界に生成AIが導入され、ソフトウェアの開発において開発品質を維持しながら生産性を向上させる新たな方法が提供されています。それに対して、QAの品質管理の生産性を向上させる方法はあまり取り上げられていないようです。一般的にQAの品質管理をテストに限定して自動化テストやレポートの作成に生成AIを導入しようとする取り組みが主流であり、全体的な品質管理の生産性を向上させる方向では取り上げられていません。この記事では、生成AIを活用してQAの品質管理の生産性を向上させる方法について紹介します。 LINEヤフーにおける品質管理 QA(quality assurance)の定義は、プロジェクトやサービスの性質によってその役割と範囲が異なる定義がで
こんにちは。メディアカンパニーに所属する鴻巣和司 (@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を超える、「適切なテストがされているが、さらに自動化の余地が残っている」を達成することをいったんの目標としていました。 また、各カテゴリごとに分解して見てみると、特にモニタリングの領域について課題がありそうなことがわかります。 取り組んできたこと
This post is also available in the following languages. English, Korean 弊社では3年前、従来のヘッドレスCMSの構造とパフォーマンスを改善した新しいヘッドレスCMS、LandPress Contentを社内向けに公開しました。その後、従来のCMSを使用していた多くのLINEサービスがLandPress Contentとして再開発されはじめました。今回の記事では、従来のCMSからヘッドレスCMSに移行する際の注意点や移行後の改善点について紹介します。 ヘッドレスCMS登場の背景 まず、ヘッドレスCMSが登場した背景を見てみましょう。 従来のCMSの問題点 従来のCMSは、下図のようにフロントエンドとバックエンドの組み合わせで一体化されたように動作します。その代表例としてWordPressとMovable Typeがありま
こんにちは、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ヤフー株式会社の企業ロゴやサービスロゴなどのブランドロゴには、ブランドガイドラインと呼ばれるロゴ使用時に守らなくてはならないルールが定められています。ロゴを使用する際にロゴが変形してしまったり、変色してしまったりすると問題となるため、細心の注意を払って使用しております。今まではロゴが使用されている画像を担当デザイナーがすべて目視確認でチェックすることで、ガイドラインを遵守してきました。ブランド価値を守るためにとても大切な作業です。これらの作業を画像処理で自動化できないかと考え、ブランドロゴチェックツールを作成しました。 ※載せている画像は、今回のブログ用に用意したテスト画像です。 この記事では、社内のデザイナーから寄せられた目視確認の作業に工数がかかってしまっているという課題を画像処理技術で解決した事例について、紹介し
次のページ
このページを最初にブックマークしてみませんか?
『LINEヤフー Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く