サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
developer.smartnews.be
こんにちは。スマートニュース株式会社の町野です。 9月18日の iOS 7 の登場から 1ヶ月半ほど経ちました。既に多くのアプリが iOS 7 に対応し、ユーザーの方たちも段々と iOS 7 に慣れてきたのではないでしょうか。そこで今回は、SmartNews での iOS 7 にまつわる話をご紹介しようと思います。 iOS 7 対応版のリリース SmartNews は、9月18日(日本時間 9月19日)の iOS 7 の一般公開に合わせて、iOS 7 対応版の SmartNews v1.5 をリリースすることができました。iOS 7 の新機能も使ったこともあり、Apple さんには長い間「iOS 7 対応」のアプリとしておすすめしてもらっています。 Apple におすすめしてもらうことはかなり有効です。iOS の開発版配布と一般リリースの時期はだいたい決まっていますので、OS の公開に間に
スマートニュース株式会社の西尾です。10月1日よりメンバーに加わった新入社員です。 本記事のテーマは、先日弊社を会場として行われたセミナーです。弊社の新オフィスには40人程度収容可能なセミナー室があり、プロジェクターと壁一面のホワイトボードが備わっています。週末にはセミナー会場として提供し、交流の場として機能させたいと考えています。弊社が会場となった記念すべき第一回目のセミナーは、10月13日に行われた「第三回 物理と情報と幾何のインフォーマルかもな勉強会」でした。この勉強会は建築、物理、数学、情報の各分野の専門家の方々が各テーマを専門外の人にも分かりやすく紹介して下さるというものです。大学研究機関に職を持っておられる方々も参加されており、とても格式高い勉強会でした。また活発な議論があり雰囲気も良いものでした。私も会場スタッフとしてトークを興味深く拝聴させていただきました。 以下にてこのセ
ゴクロ改め、スマートニュース株式会社の大平です。 巷間では「bigdata」の活用が叫ばれて久しいですが、弊社はまだまだ小さい規模のスタートアップのため少なくともデータサイズとしてhugeなdataの活用が行える環境ではありません。 であればデータの活用に対する要求が低いか、というとそうでも無く、サービスサイドでも自然言語処理や機械学習を中心としたデータ解析処理がサービスの生命線となっていますし、サービスの裏側でも戦略を立てる上で効果測定や諸々のデータの分析は非常に重要な位置を占めています。 本記事では主にサービスの裏側で求められるデータ解析において、いかにカジュアルにデータを解析するか、の一例として、掲題のような組み合わせによるデータ可視化の事例を簡単にですがご紹介したいと思います。 データ解析基盤を作る側の視点からすると、システムとして求められる要件は以下のようなものだと理解していま
ゴクロの大平です。ごくろうさまです。 Redisは高速で、かつデータの永続化や、複数のデータ型によるストア(list,set,sorted set等)も対応しており、機能的が豊富ということから愛用者の多いKVS実装の一つだと思います。 特に私のようなアプリケーションエンジニアの人間にとってはデータ型のバリエーションの豊富さが便利さを感じる部分で、たとえばlistを用いてタイムライン的な情報や履歴情報の管理、sorted setを用いてランキング情報の管理、などのようにアプリケーションの需要の多くにRedisが対応することができます。 これらの情報を登録する際のフローとしては自作のアプリケーションから直接、というケースが多いと思いますが、せっかくFluentdのような便利なlog collector実装があるので、FluentdとRedisを組み合わせる事でカジュアルに情報の蓄積を行いたい
Android の次期バージョン 4.4 の名称が《KitKat》だと発表されました。Android は歴代のバージョンに「アルファベット順のお菓子の名前」を付けていることで有名ですが、今回まさかの企業コラボ。「K」は「Key Lime Pie」になるだろうと言われていたのに、さすがの斜め上です。。 着実に進化を続け、いまやスマートフォンの世界シェアの8割近くを占める[1]ようになった Android ですが、多くのサービスは依然として「iOS ファースト」で開発している[2]ように思います。かくいう SmartNews も、まず iOS版から始まり、Android版が出たのはその数ヶ月後でした。 そういった場合、「iOS を出して、それがうまくいったら、Android にそのまま移植すればいい」というよう考え方をしてしまいがちなのですが、それでは多くの場合よいものになりません。どうしても
ゴクロの大平です。 私にとって一番大事で替えの効かないミュージシャンはさだまさしさんですが、私にとってクラウドコンピューティングのサービスの中で一番大事で替えが効かないサービスはS3です。 多種多様なAPIを用いて柔軟にファイルの操作が出来る事や、”99.999999999%”と謳われている高い耐障害性、S3にあるデータをElastic MapReduceやRedshiftなどを用いて手軽にデータ解析を行える基盤が提供されていることなど、あまりに便利すぎてS3の代替となるサービスを探しだすのが難しい状態です。 もちろん多くのAWSユーザーが同じようにS3の便利さを享受していると思いますし、インターネット上でも多くのブログ等でその魅力が語られています。その中で本記事は既に存在する記事と似たような内容を書いてしまうかもしれませんが、弊社なりのS3の使い方についてご紹介したいと思います。 なお
株式会社ゴクロの中路です。 以前のベイズ分類をベースにしたSmartNewsのチャンネル判定で触れたように、SmartNewsで配信する記事を「スポーツ」「エンタメ」「コラム」のようなチャンネルに分類しているのは、人ではなく機械です。そのアルゴリズムとして前回ご紹介したのは「ナイーブベイズ分類器」ですが、記事の分類を行う手法は、他にも様々なものがあります。その中で今回はLatent Dirichlet Allocation(以下LDA)について、先日東京大学の博士課程の皆さんと、社内で合同勉強会を行った際に作成した資料をベースにご紹介します。 LDAでできることの例 前回ご紹介したナイーブベイズ分類器を構築する際には、すでにトピックのラベルが付けられた文章を、学習データとして用意する必要がありました。 一方、LDAの場合は、 東京でサッカー大会が開催された。xx選手のゴールが圧巻であった。
ゴクロの浜本です。ネットカフェでコードを書くのが好きです。 前回のエントリーでも触れられていますが、SmartNewsはホットな話題をユーザにお届けするために、常時、膨大な数のツイートおよびURLをクロールしています。こうして収集した記事に対し、様々な分析が施されますが、その中でも重要な処理の1つに、記事の類似度判定があります。内容の似通った記事をインデックスから発見し、グループ化する処理です。 毎秒、大量の新着記事が到着することから、この類似度判定は高速に実行する必要があります。また、インデックスを全てメモリに載せているので、類似度判定を実現する際の空間効率も要求されます。 今回は、SmartNewsが高速かつ省スペースな類似度判定のために使用しているb-Bit MinHashと呼ばれる手法を紹介します。2年前に、PFIの岡野原さんが非常に分かりやすい解説記事を書かれており、本エントリー
大平です。今回はさだまさしネタは特に無しです。 先日、サービスのクローラーで使用しているID生成器について置き換えを行いました。非常に地味な話になりますが、本記事ではその辺の内幕の話をしたいと思います。 ID生成にまつわる苦悩 弊社ゴクロの提供しているSmartNewsは表向きはニュースアプリですが、裏側の仕組みは検索エンジンに近似しています。ユーザーの方々の興味関心や、アクセス傾向をクエリーとし、その内容に応じた話題のニュースを検索結果として返却する、という風に捉えていただくと、なんとなく私が言わんとしている事を想像していただけるかと思います。 SmartNewsはTwitterのつぶやき情報を用いたトレンド分析をベースとしており、話題になっているニュースを選定するためには、大量のTwitter上のtweet、ならびにその中に含まれているURLに対してクロールを行う必要があります。日々
突然ですが、ちょっとしたクイズです。 下の文章の中にはリンクが1つあるのですが、それはどこにあるでしょうか? あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 どうでしょう。思ったところがリンクではなく、なかなか本当のリンクを見つけることができなかったかと思います。 もちろん、普通はこんなおかしな表現はせずに、次のように表現するでしょう。 あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 これらのことは《アフォーダンス》という言葉を使って次のように表すことができます。 最初の文章 : リンクのアフォーダンスを正しく認識できない例 次の文章 : リンクのアフォーダンスを正しく認識できる例 この記事では、iOS / Andro
株式会社ゴクロの中路です。普段は機械学習の手法を用いたアルゴリズム改善など、サーバーサイドの開発を行っています。 SmartNewsでは様々なニュース記事を「エンタメ」「スポーツ」「グルメ」などのチャンネルに分けて表示しています。そのようなことを可能にするためには、ニュース記事がどのチャンネルに属するのかを判断する必要があるわけですが、それを行っているのは人ではありません。機械が、アルゴリズムに基づいて、自動的に行っています。 今回のエントリーでは、その「自動的にチャンネルに分類する仕組み」について書こうと思います。 SmartNewsにおける、ニュース記事のチャンネル判定を単純化すると、ベースには「ナイーブベイズ分類器」と呼ばれる、機械学習の初歩的な知見があります。このエントリーではナイーブベイズ分類器をメイントピックとして取り上げます。ナイーブベイズ分類器については、すでに様々なとこ
株式会社ゴクロの浜本です。SmartNewsでは、主にサーバサイドのURL収集およびインデクシング部分と、iOSアプリの開発を担当しています。 このエントリーでは、私が好きなIDEの1つで、Objective-Cによる開発効率を大幅に高めてくれると感じているAppCodeについて、Xcodeとの機能比較表を作ってみました。 XcodeやAppCodeの真価を引き出す上で、私が最重要レベルと位置付けているコマンドとショートカットキーを厳選して表にしたので(厳選という割には結構なボリュームになってしまいましたが)、チートシート的なチェックリストとしても活用していただけると思います。 AppCodeを使うようになった背景 (個人的な経緯なので、不要な方は読み飛ばしてください) 私はJavaの使用歴が長いのですが、Java開発の生産性を上げるべく、今までいろいろなIDEを試してきました。Java
ゴクロの大平と申します。はじめまして。 4月からjoinさせていただいた、特に特記事項の無い平凡なプログラマです。さだまさしが好きです。 SmartNews開発者ブログをご覧になる方々は、サービスの裏側で動作するクローラーや多種多様な機械学習のロジックであったり、フロントエンドのUIの話であったり、サービス固有の話に興味が有る方が多いと存じますが、都合上(原稿の担当順番の都合上)、今回は一般的な話をさせていただきます。 ※先掲の話題については次回以降取り上げられますので、お楽しみに。 一般的な話題とはいえ、大企業とスタートアップでは取り巻く環境や解決すべき課題も異なっていますので、その辺もあわせてお伝え出来ればなと思います。 なお、今回のテーマは、サーバー/ミドルウェアの構成管理ツールとして最近有名になってきた「chef」と「fabric」です。 かなり長文のエントリーになってしまい
株式会社ゴクロの浜本です。 このブログでは、弊社が提供するニュースアプリ「SmartNews」の技術背景をお伝えしたいと思っています。 SmartNewsのミッションは、「世界中の良質な情報を必要な人に送り届ける」ことです。 私は、2010年頃に個人的趣味でTwitterのクローラを実装し、自宅サーバで動かしていました。ある日、ツイートに含まれるURLが解析対象として興味深いことに気付き、URLも合わせてクロールするようになりました。インターネットユーザひとりひとりのURLへの言及を集約し、民主化された情報配信の仕組みを作れないかと考えました。 自宅サーバ。今はAWSに移行したため動いていない 現在のSmartNewsは、当時のクローラを発展させたエンジンCrowsnestを基盤としてサーバサイドを構築しています。Crowsnestが処理するURLは1日あたり1,000万件を超えます。大量
このページを最初にブックマークしてみませんか?
『developer.smartnews.be』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く