LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog
LINE Engineering Blog official account
急増するLINEインフラの課題と対応 こんにちは。今回はITサービスセンターより、インフラ運営の観点から急増するLINEインフラの課題と対応について記させていただきます。 はじめに 先日開催したLINE Developer Conference(インフラ編)には大勢の方にいらしていただきました。カンファレンスでは、LINEサービスが始まってから約2年の間に我々はどういった方法でインフラ運営を行い、またどんなことに悩んできたのかを、システム、データベース、ネットワークの観点からそれぞれ発表させていただきました。 カンファレンスはLINE株式会社が様々な技術をどのように使い、どのように運用を行っているのか。現在どのような技術的なことに取り組んでいるのか日本のエンジニアの皆さんに知っていただくために開催されました。結果としてインフラ編では150名の定員に対して430名のご応募をいただいたとのことでLINEサービスに対する関心の高さを感じ、当日発表させていただいた3名は身が締まる思いがしました。 各セッションの後、懇親会が行われ、大勢のエンジニアの方々 からLINEインフラ運営について様々なご質
はじめまして、LINE技術戦略室のhayaishiです。趣味は自転車と言っていますが最近は全く乗っていません。この記事では、LINEのiOSアプリ開発に関することをいくつかご紹介させていただこうと思います。 LINEのiOSアプリ開発環境 ソースコード管理 ソースコードはgitで管理しています。gitのリポジトリブラウザとしてGithub Enterpriseを利用しており、Githubでお馴染みのPull Requestなどを活用して開発を進めています。また、LINEのiOSアプリのタスクについてはGithub Enterpriseとは別のチケット管理システムを利用しておりそちらのステータスと連携して開発者、QA、プランナー間の開発状況の共有を行っています。 Gitでの開発フローについて LINEのiOSアプリはgithub-flowの様に一つの常にdeploy可能なmasterを持つというよりは常にdeploy可能なバージョン毎のmasterを持っているという形で運用しています。 それぞれがリリース可能なブランチで、開発状況によっては下位のバージョンのコミットが上位のバージョンの
こんにちは 今回は、LINEが全世界にサービスを拡大する過程において、ユーザーの立場から品質を測定し、改善している取り組みについてご紹介します。しかし、ここに書いた取り組みはごく一部であり、実際にはすべての開発者、企画者、さらには事業担当者もユーザーの立場から、各自努力をしていると思います。LINEの競合に影響のない小さな範囲で書いてみます。 LINE遠征隊 LINEは2011年6月、日本でサービスを開始して以来、現在では4億人のユーザーが使用するメッセンジャーとなっています。他のどのサービスよりも急速に成長しているだけに、LINEも数多くのユーザーの品質問題を経験してきました。人間が自分の生まれたところ以外で生きるためには、考えや話す方法を変えなければならないように、LINEも生まれた日本を脱し、他の国でもうまく動作するために、多くの部分を改善しました。その取り組みについてのお話です。 2012年12月、スペインの多くのユーザーがWhatsAppの有料化の動きに反発して LINEを選択しました。本当に瞬く間にスペインユーザーが爆発的に 増えました。しかし、その時のLINEは時々メッセー
LINE Engineer
皆さんお元気ですか?LINEサーバー開発室でサーバ開発を担当している崔珉秀と申します。 この記事ではLINEのサーバーの開発とリリースプロセスについて述べたいと思います。LINEの開発者はどんな形で開発しているのか、サービスに変更事項をどのように適用しているのか、お互い協力してより良い開発環境を得るためにどんな努力をしているのかをお伝えする機会になったらいいなと思います。 ここで述べるリリースプロセスは、LINEのサーバ開発の流れとソース管理システムの運用方法、そして本番環境に変更事項を適用するまでの過程です。 LINEのServer Applicationはその役割とシステムの構成によって複数のServer Applicationに分かれて構成されています。 例えばNetwork通信及びProtocolなどを担当するApplication、messagingやsocial graphなどの中心となるロジックを担当するCore Messaging Application、その他に機能別に様々なApplicationに分かれて構成されています。特に、その中でコアロジックを担当するCore
[13/11/14 追記] flex-wrapの実装について注記を追加しました。 暑さもやわらいできたような気配がしてきました。皆様いかがお過ごしでしょうか。久しぶりのブログ更新です。UIT 富田です。 今回はCSSでのレイアウトをより柔軟にしてくれるflexboxについて解説します。 flexboxは大幅な仕様の変更が過去に2度もあり、各ブラウザとそのバージョンによって実装している仕様が異なるため、後方互換をきっちり対応しようとすると、gradientと並んで2大考えるのをやめたくなるプロパティとなっております。 しかしflexboxを利用することで、現時点ではCSSだけでの対応が難しかったり、複数のプロパティを複雑に組み合わせる必要があるレイアウト(例えば一番大きい高さに揃えた要素を横に並べたり、子要素を上下左右中央位置したりといったもの)が、容易に利用できるようになるという大きなメリットもあり、使えるならば使っていきたいプロパティでもあります。 にも関わらずflexboxについて調べてみると、各仕様をまとめた記事はみつかるものの、新旧の仕様を横断的に確認できるものが見つからなかっ
こんにちは、こんばんわ、お久しぶりです。NHN Japan ウェブサービス本部開発1室UITチーム 吉田徹生(@teyosh)と申します。 3ヶ月ぶりの登場です。AngularJSって何?という方は第一回目の記事[Angular JSを使おう]を御覧ください。 さて、3ヶ月の間にstableは1.0.5と順調にアップデートしております。ちゃんとアップデートがされると使っていても安心できます。 今回はAngularJSを利用していると気になるng-clickやng-repaeatなどAttributeに設定されているものについてです。これはdirectiveの拡張でAngularが機能を設定してくれます。 Hello, World 以下のようなコードがあるとします。 <div ng-app='hello'> <div ng-controller='helloCtrl'> <button ng-click='hello("world")'>hello</button> </div> </div> ang
Messaging Platform Engineering
こんにちは.サービス開発2チームの中村です. 先日1/23に行われた日本最大級のHadoopユーザー会イベント,「Hadoop Conference Japan 2013 Winter at 東京ビッグサイト」にて,私,中村と同チームの大平が講演させていただきました. Storage infrastructure using HBase behind LINE messages from NAVER Japan 中村の方からは,まずLINEのサービスやストレージの要件と現在の1億ユーザーを支えるHBaseで扱う規模感を共有しました.後半では,HBaseのサービス投入から1年経過して,我々のために作ったもの・得られたノウハウについて少しだけ紹介しました. ポイントは,HBaseをリアルタイムサービスのストレージとして採用し,ノンストップ環境の中でどのように可用性の高いストレージの構築を目指しているか,という点です.このために,HBaseが備えるレプリケーションやリージョンの自動管理機能などは使用せず,自分たちのサービスに特化させた方法を利用しています. 後半の内容は,敢えてHBase
あけましておめでとうございます。NAVERまとめのフロントエンドを担当している縣です。初詣で引いた大吉のおみくじを握りしめながら今年も張り切っていこうと思います。 今回はJavaScriptの遅延ロードの仕組みをNAVERまとめに導入した際のお話を紹介します。 遅延ロードの検討 昨年NAVERまとめのまとめ閲覧ページや、まとめ編集ページでのJavaScriptファイルの読み込みを遅延ロード化する作業をしました。元々はページ読み込み時に全て読み込ませていましたが、JavaScriptファイルが巨大になってきてパース・実行に時間がかかるようになったことから遅延ロードを検討することになりました。 遅延ロードの利点というとJavaScriptファイルの読み込み・実行によるブラウザのレンダリング停止を防ぐのはもちろんですが、どのファイルがいつどこで必要になるかを明確にすることもでき、依存関係を動的に解決できます。規模が大きなプロジェクトほど読み込むファイルも増えるでしょうから、スクリプト側で読み込むファイルを把握できたほうが都合がいい場合が多いです。 ファイルの分割・再構成 閲覧ページでは元々閲
Web Front-end Developer
UITチーム 清水大輔 (@tori3_jp)です。2012年も残り僅かとなりましたが、年の瀬をいかがお過ごしでしょうか。 Backbone.js Advent Calendar 2012の10日目のエントリーとなります。 先月、DailyJSというJavaScript関連のトピックを配信しているサイトにBackbone.jsの次期リリースに関する記事が投稿されていました。今回はこの中からBackbone.jsの次期リリースで予定されている変更点について紹介したいと思います。 Backbone.$ Backboneで扱うjQuery互換ライブラリへのエイリアスが変更されます。ローカル変数$を参照していたものがBackbone.$に変更されます。 - var $ = root.jQuery || root.Zepto || root.ender; + Backbone.$ = root.jQuery || root.Zepto || root.ender; また、同時にsetDomLibrary()は削除されます。使っているケースはほとんど無いと思いますが、どうしてもsetDomLibr
歳晩の候、皆様におかれましてはますますのご繁栄の事とお喜び申し上げます。NHN Japan ウェブサービス本部開発1室UITチーム(長い) 富田(@a_t)です。 CSS Preprocessor Advent Calendar 2012の3日目、css書くのに便利だからといって盲目的にcompass使ってないでちょっとは中でなにをしているか知っておいてもよかろうもん ということでタイトルのとおり、compassがベンダープリフィックスの制御をどのように行なっているかについて書きます。compassのソースをまだ一度も見たことがない人向けの内容です。 sassについてよくしらない、というかたは過去の記事をよむとわかるかもしれません。 CSS3関連のmixinはなにをしてるか compassのCSS3関連のミックスインは、引数に値を渡してあげるだけで、しちめんどくさいベンダープリフィックスを自動で出力してくれる大変霊験あらたかな機能です。 使っているだけでは中で何をしているかはわかりませんが、compassは公式サイトからsourceの中身を見ることができます。そこからベンダープリフィッ