S3とFluentdを用いた効率的なログ管理

  • 2013

ゴクロの大平です。

私にとって一番大事で替えの効かないミュージシャンはさだまさしさんですが、私にとってクラウドコンピューティングのサービスの中で一番大事で替えが効かないサービスはS3です。 多種多様なAPIを用いて柔軟にファイルの操作が出来る事や、”99.999999999%”と謳われている高い耐障害性、S3にあるデータをElastic MapReduceRedshiftなどを用いて手軽にデータ解析を行える基盤が提供されていることなど、あまりに便利すぎてS3の代替となるサービスを探しだすのが難しい状態です。

もちろん多くのAWSユーザーが同じようにS3の便利さを享受していると思いますし、インターネット上でも多くのブログ等でその魅力が語られています。その中で本記事は既に存在する記事と似たような内容を書いてしまうかもしれませんが、弊社なりのS3の使い方についてご紹介したいと思います。

なお、S3は、”Simple Storage Service”の略称で、”Sadamasashi さん”の略称ではありませんので、くれぐれもお間違えの無きようご注意下さい。

 

Latent Dirichlet Allocation(LDA)を用いたニュース記事の分類

  • 2013

株式会社ゴクロの中路です。

以前のベイズ分類をベースにしたSmartNewsのチャンネル判定で触れたように、SmartNewsで配信する記事を「スポーツ」「エンタメ」「コラム」のようなチャンネルに分類しているのは、人ではなく機械です。そのアルゴリズムとして前回ご紹介したのは「ナイーブベイズ分類器」ですが、記事の分類を行う手法は、他にも様々なものがあります。その中で今回はLatent Dirichlet Allocation(以下LDA)について、先日東京大学の博士課程の皆さんと、社内で合同勉強会を行った際に作成した資料をベースにご紹介します。

b-Bit MinHashによる高速かつ省スペースな類似度判定

  • 2013

ゴクロの浜本です。ネットカフェでコードを書くのが好きです。

前回のエントリーでも触れられていますが、SmartNewsはホットな話題をユーザにお届けするために、常時、膨大な数のツイートおよびURLをクロールしています。こうして収集した記事に対し、様々な分析が施されますが、その中でも重要な処理の1つに、記事の類似度判定があります。内容の似通った記事をインデックスから発見し、グループ化する処理です。

毎秒、大量の新着記事が到着することから、この類似度判定は高速に実行する必要があります。また、インデックスを全てメモリに載せているので、類似度判定を実現する際の空間効率も要求されます。

今回は、SmartNewsが高速かつ省スペースな類似度判定のために使用しているb-Bit MinHashと呼ばれる手法を紹介します。2年前に、PFIの岡野原さんが非常に分かりやすい解説記事を書かれており、本エントリーはこの記事を参考にさせていただきました。

アプリ開発者がおさえておきたい《アフォーダンス》の概念

  • 2013

突然ですが、ちょっとしたクイズです。 下の文章の中にはリンクが1つあるのですが、それはどこにあるでしょうか?

あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。

どうでしょう。思ったところがリンクではなく、なかなか本当のリンクを見つけることができなかったかと思います。

もちろん、普通はこんなおかしな表現はせずに、次のように表現するでしょう。

あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。

これらのことは《アフォーダンス》という言葉を使って次のように表すことができます。

 最初の文章 : リンクのアフォーダンスを正しく認識できない例  次の文章  : リンクのアフォーダンスを正しく認識できる例

この記事では、iOS / Android アプリ開発においても重要な考え方の1つとなっている、アフォーダンスという概念をお話ししたいと思います。

ベイズ分類をベースにしたSmartNewsのチャンネル判定

  • 2013

株式会社ゴクロの中路です。普段は機械学習の手法を用いたアルゴリズム改善など、サーバーサイドの開発を行っています。

SmartNewsでは様々なニュース記事を「エンタメ」「スポーツ」「グルメ」などのチャンネルに分けて表示しています。そのようなことを可能にするためには、ニュース記事がどのチャンネルに属するのかを判断する必要があるわけですが、それを行っているのは人ではありません。機械が、アルゴリズムに基づいて、自動的に行っています。 今回のエントリーでは、その「自動的にチャンネルに分類する仕組み」について書こうと思います。

AppCodeでObjective-Cの開発効率をより高く!コード周りの主要機能をXcodeと徹底比較

  • 2013

株式会社ゴクロの浜本です。SmartNewsでは、主にサーバサイドのURL収集およびインデクシング部分と、iOSアプリの開発を担当しています。

このエントリーでは、私が好きなIDEの1つで、Objective-Cによる開発効率を大幅に高めてくれると感じているAppCodeについて、Xcodeとの機能比較表を作ってみました。

XcodeやAppCodeの真価を引き出す上で、個人的に最重要レベルと位置付けているコマンドとショートカットキーを厳選して表にしたので(厳選という割には結構なボリュームになってしまいましたが)、チートシート的なチェックリストとしても活用していただけると思います。

chef + fabricを用いたクラウドサービス管理

  • 2013

ゴクロの大平と申します。はじめまして。 4月からjoinさせていただいた、特に特記事項の無い平凡なプログラマです。さだまさしが好きです。

SmartNews開発者ブログをご覧になる方々は、サービスの裏側で動作するクローラーや多種多様な機械学習のロジックであったり、フロントエンドのUIの話であったり、サービス固有の話に興味が有る方が多いと存じますが、都合上(原稿の担当順番の都合上)、今回は一般的な話をさせていただきます。 ※先掲の話題については次回以降取り上げられますので、お楽しみに。

一般的な話題とはいえ、大企業とスタートアップでは取り巻く環境や解決すべき課題も異なっていますので、その辺もあわせてお伝え出来ればなと思います。

なお、今回のテーマは、サーバー/ミドルウェアの構成管理ツールとして最近有名になってきた「chef」と「fabric」です。 かなり長文のエントリーになってしまい恐縮ですが、ご了承ください。

 

SmartNews開発者ブログを始めます

  • 2013

株式会社ゴクロの浜本です。

このブログでは、弊社が提供するニュースアプリ「SmartNews」の技術背景をお伝えしたいと思っています。

SmartNewsのミッションは、「世界中の良質な情報を必要な人に送り届ける」ことです。

私は、2010年頃に個人的趣味でTwitterのクローラを実装し、自宅サーバで動かしていました。ある日、ツイートに含まれるURLが解析対象として興味深いことに気付き、URLも合わせてクロールするようになりました。インターネットユーザひとりひとりのURLへの言及を集約し、民主化された情報配信の仕組みを作れないかと考えました。