白ヤギコーポレーション 最先端情報吸収研究所 カメリオ開発者ブログ[B!]新着記事・評価 - はてなブックマーク (original) (raw)

11 users
aial.shiroyagi.co.jp
白ヤギリードアーキテクトの伊藤です。 3/2〜4にtry! Swift Tokyo 2017が開催され、そして今回、Apple以外のプラットフォームでのSwift活用法についてお話しました。 前回サーバーサイドSwiftでの記事を書いてから、しばらくぶりになりましたが、近況を簡単に報告することができました。 Swiftのオープンソース化から1年半ほどたちましたが、状況も様々変わりました。 スライドはこちらです。 ビデオもRealmのサイトでのちほど公開される予定です。 スライドで触れたライブラリなどは以下で公開しています。 novi/mysql-swift novi/nkf-swift novi/mecab-swift また、カンファレンス当日は、多くの方にオフィスアワーに来ていただきましたが、 ラズベリーパイ上でのSwiftの反響が予想よりも大きかったように思います。 このSwiftは現

58 users
aial.shiroyagi.co.jp
こんにちわ。白ヤギコーポレーションでエンジニアをしている谷田です。 自然言語処理では、テキストに含まれる単語をベクトルとして表現するというタスクが頻繁に発生します。最近ではそのために、日本語テキストが来たらMeCabに渡してword2vecに投入する、というのが定番パターンのひとつかと思います。word2vecは単語を分散表現と呼ばれる低次のベクトルに変換するモデルですが、単語をベクトルに変換するためには事前に学習を走らせておく必要があります。word2vecモデルの学習にはよくWikipedia日本語版をコーパスとして使ったりするのですが、全記事で学習を走らせると結構時間がかかります。 そこで、白ヤギが作った日本語word2vecモデルを公開します! http://public.shiroyagi.s3.amazonaws.com/latest-ja-word2vec-gensim-mo

4 users
aial.shiroyagi.co.jp
白ヤギの開発者の森本です。 今週の中日 (2016-09-20から09-24) から PyCon JP 2016 が開催されました。白ヤギコーポレーションは例年スポンサーをしていますが、「シルバースポンサーではうちの会社が目立たないだろう」的なノリで今年は初めてゴールドスポンサーとして参加しました。普段なら私は個人としてチケットを購入してカンファレンスに参加していましたが、ゴールドスポンサーは招待チケット枠が3つあったこともあり、スポンサーチケットを使って参加してきました。 今年のテーマは Everyone’s different, all are wonderful.「みんなちがって、みんないい」 でした。早稲田大学 さんの施設で行われ、正にテーマを表した5トラックという、例年よりも発表枠を拡大し幅広い分野における Python を使った事例や開発について様々な発表が行われていたように思

10 users
aial.shiroyagi.co.jp
白ヤギの開発者の森本です。 白ヤギではニュース記事のキュレーションをする カメリオ API というサービスを開発していますが、検索バックエンドとして Elasticsearch を使っています。 カメリオ API は約1年3ヶ月前に開発を始めたのですが、当時は 1.7 系を使っていました。昨年の夏から秋ごろにかけて 2.0.0 のベータ版がリリースされ、2015-10-28 に GA がリリースされました。現時点の最新バージョン (安定版) は 2.3.5 になります。 Elasticsearch 2.0.0リリース(日本語訳) Elasticsearch 1.x と 2.x は非互換となるため、検索インデックスやアプリケーションの変更なしに移行することはできません。2.0.0 リリース後の翌日に早速 ITS にチケットを作りました。その後どうなったかというと、いまこの記事を書いていること

6 users
aial.shiroyagi.co.jp
先日 Go で API サーバーを開発してきて1年が過ぎました という記事を書きました。昨日、Go 1.7 がリリース されなかった (もとは8/8がリリース予定だったのが8/15に延期された) わけですが、そのリリースパーティが行われました。先日のブログに関して話してほしいという依頼を頂いたので発表してきました。運営の方々、発表の場を頂いてありがとうございました。 Go 1.7 Release Party in Tokyo 発表のスライドは以下になります。発表全体として (前回のブログのフォローする発表でもあったため) Go そのものは関係なく設計の話が中心になってしまいました。 Goji とレイヤ化アーキテクチャ from Shiroyagi Corporation ※ How to Include Clickable Links on Slideshare Presentation

410 users
aial.shiroyagi.co.jp
白ヤギの開発者の森本です。 白ヤギでは Go 言語でニュース記事のキュレーションをする カメリオ API というサービスを開発しています。約1年2ヶ月前、Go を使って開発し始めたときに当時調べた内容を整理して以下の記事を書きました。 Go言語で API サーバーを開発する 1年以上に渡り開発を継続してきて変わったこと、変わってないことなどをざっくばらんにまとめてみます。たまたま過去の記事のはてブコメントを見返していて 以下のコメント を見つけました。 最近 golang 導入事例増えて来たけど、導入後一年くらいのメンテナンスフェーズな事例について聞いてみたい。継続的デリバリーみたいなの。まだ早いのかな? まだまだメンテナンスフェーズにはなっていなくて現在も活発に開発中ですが、継続的デリバリーについて白ヤギでは特別なことをしてなく、ansible を使ってデプロイしているのみです。Go 1

44 users
aial.shiroyagi.co.jp
はじめまして。白ヤギコーポレーションでエンジニアをしている谷田です。 カメリオでは、テーマに合ったニュース記事を提供するために、機械学習を応用した新しいアプローチを最近こっそり導入しました。この記事では、カメリオがどのようにニュース記事がテーマに合っていると判断しているのか、そのアルゴリズムの概要を解説してみたいと思います。 カメリオでは新しく入ってきたニュース記事を、何万もあるテーマの中から良く当てはまるものに自動的に振り分けています。これまでカメリオでは、記事があるテーマに振り分けられるためのさまざまな条件を半自動的に導出して、テーマと記事とのマッチングを行っていました。しかしこの従来の方法では、テーマ名の単語が記事中にたくさん出てきたりした場合に、実際にはあまりテーマに関係が無かったり、あるいはユーザの興味を引かないような記事が混ざってしまうことがありました。 新しく導入した機械学習

14 users
aial.shiroyagi.co.jp
白ヤギコーポレーションのデータ分析担当 堅田です。 今回は、時間がない中でデータをさくっと分析したいという人向けに、RのrandomForestパッケージを使った分析方法を紹介したいと思います。 データの前処理 まずデータの前処理では、難なくRのrandomForestに突っ込むための加工を施します。主なステップは以下の4つです。 1. データのサンプリング 初期分析の段階で全データを使う必要はないと考えます。変数のサイズにもよりますが、私は10%くらいのデータでまずやるようにしています。 2. 数値型の変数の欠損値は中央値で補完。さらに、欠損の有無そのものを新たな変数とする RのrandomForestのデフォルト設定では、欠損値があると実行できません。そのため、欠損値を補完する必要があります。 数値データの欠損は、本来は理由に応じて処理すべきですが、理由がわからなければ中央値で補完して

214 users
aial.shiroyagi.co.jp
こんにちは。リードアーキテクトのItoです。 前に予約していたNuAns NEOが届きました。かなりいい感じです。iPhoneと比べてしまうと、カメラ性能とアプリの少なさが気になりますが。 前回の記事では、Nodeベースのプロジェクト(Webサーバー)をSwiftに置き換えられるかという部分の話をしました。今回は前回からのアップデートや実際に運用してみたSwiftベースのサーバーサイドの話もしたいと思います。 Swift全体の動き、Swift本体(コンパイラ)のlatest build(masterブランチ)はSwift 3系になりました。 Swift(特にオープンソース版)の最新情報を追いたい場合は、以下のソースが参考になりました。 iOS Dev Weekly Swift Weekly Brief This week in Swift little bites of cocoa. Ch

6 users
aial.shiroyagi.co.jp
こんにちは、白ヤギコーポレーションのニコです。 普段はAndroidデベロッパーですが、昔から人工知能に興味を持っていて、大学でも人工知能専攻でした。 特に興味があるのはコンピュータビジョン(画像処理、顔認識、等)です。 カメリオでは記事タイトルと一緒にサムネイルを表示するのですが、最近より良いサムネイルを作るために、顔画像認識システムを作りました。 今までサムネイルを作る時は、画像の中央の部分を切って表示するだけでした。 なぜかと言うと、ほとんど画像の重要な部分は中央にあり、人の顔も中央にあるという仮説があったからです。 しかし、そうでもないケースも結構あります。例えばこの画像です。 ご覧のように元画像の中央の部分を切ると結果がイマイチだと思います。 今回の場合は着物だけが見えるので、誰がその着物を着ているのか分からなくなるし、そもそも顔がなくて着物だけ映されてもなんか微妙というか、無駄

56 users
aial.shiroyagi.co.jp
word2vec_cbow はさすがに GPU を使うだけあって元になった word2vec に比べて3倍以上高速になっています。 chainer は GPU を使うとだいぶマシになりますが、それでもかなり遅いです。ただ、 improve-word2vec ブランチの実装では、 Chainer 1.5 のものと比べて速度が1.5倍程度に改善されています(ここには示していませんが、条件によっては2倍以上の性能が出ることもありました)。残念ながらまだマージされていませんが、次のバージョンにはぜひ入ってほしいですね。 まとめ この結果を見る限り、速度に関する比較だけで言えば word2vec か gensim のどちらかを使っておけば良さそうです。 word2vec_cbow は速いですが、 GPU が必要なので動かせる環境が限定されてしまいます。逆にどうしても高速化したい場合には良い選択肢だと

52 users
aial.shiroyagi.co.jp
こんにちは。リードアーキテクトのItoです。最近アナログオーディオをやっているのですが、つらい事件が起きました。 今月はじめにSwiftのコンパイラなどのソースコードがGithubで公開され、かなりの反響を呼びました。コンパイラだけではなく、パッケージマネージャやコアライブラリ、今後のマイルストーン、コーディング規約など、Swiftが一つのエコシステムとして公開されたことで、さらに盛り上がりを見せている気がします。 また、3月にはtry! Swiftという世界的なカンファレンスが渋谷・東京で行われるので、面白い四半期になりそうです。私もチケットを購入したので行く予定です。 カメリオは、iOS版がSwift、バックエンドのサーバーがNode.jsとPythonで書かれています。また、サーバーのAPIは、フロントAPIとバックエンドAPIに分かれ、マイクロサービス化がなされています。 iOSの

19 users
aial.shiroyagi.co.jp
雰囲気を掴むために、以下は Elastic の哲学 から内容を意訳したものです。この文章は Elastic の開発方針を表すと共に Elastic へコンテトリビュートするときに必要なことも端的に説明しています。 Elasticsearch はとても多くの機能を提供していて、これを書いている時点で大雑把に 100 エンドポイントあり、600 もの JSON データ構造をもちます。Elastic は要求に応じて管理系よりも検索/インデクシングの機能を優先的に実装しています。要求に応じてとは言ったものの、Elastic は Elasticsearch のすべての機能を実装しないかもしれません。ごめんなさい。 私はプルリクエストが好きです。本当にそうですよ。但し、実装するときは先ず コントリビューションガイド を読んでください。API のエンドポイントを実装した上でテストも書いてください。 El

15 users
aial.shiroyagi.co.jp
こんにちは。ここに初めて登場するエンジニアの北野です。業務の半分くらいがエンジニアで、エンジニアとしてクローラーの開発とサーバー運用などを行っています。今回はカメリオを動かしているサーバーのログ、イベント収集と解析・表示をどのように行っているかを書きたいと思います。 カメリオを動かすサーバー構成 最初に白ヤギではカメリオをどのようなサーバー構成で動かしているのかを説明します。 カメリオのサービスを提供するために利用しているサーバーは現在全てAmazon Web Service上で動かしています。 かなり省略した図になりますが四角い部分がサーバーを表しています。現在は次のような3つの機能を持つサーバー群 フロント用APIサーバー 記事検索・タグ付けサーバー 記事クローラーサーバー などと、この図には無い サーバー監視とログ収集・解析を行うサーバー の大きつ4つのサーバーを稼働してサービスを提

3 users
aial.shiroyagi.co.jp
初めてこのブログにポストします、代表の渡辺です。読者の皆様に最先端の情報を吸収していただくというブログの目的に沿って、ストーム・トルーパーの実装について私の持っている少ない知見をシェアできればと思います(今回はコーディングの話ではありません)。 そもそもストーム・トルーパーとは ストーム・トルーパーとは、映画スターウォーズに出てくる銀河帝国軍の機動歩兵です。下の写真を見れば、スターウォーズに詳しくない方でも「ああこれか」と気がつくのではないかと思います。 毎度大量に出現し、ジェダイに対して発砲するものの、命中させることはない一方で自分たちはすぐに打たれて死にます。彼らの劇中での活躍は、Stormtrooper Effect(ストームトルーパー効果)という言葉にもなっています。つまり、Stormtrooper Effect(ストームトルーパー効果)とは「あまり重要でないやられ役(雑魚キャラク

3 users
aial.shiroyagi.co.jp
こんにちは、Androidエンジニアのニコです。 最近、AndroidのGradleビルドファイルをより良いものにする方法を考えてました。 GradleビルドファイルのDependenciesはGradleビルドファイルの中に一番よく変わるところと思いますが、 プロジェクトが分かれていれば、Dependenciesの管理が難しくなります。例えば、MVPデザインパターンの場合にModel, ViewとPresenterで分けて、各プロジェックトに別のbuild.gradleを作らないといけないです。 調べてみたところ、GradleのDependenciesが独立したGradleファイルで管理できる方法を見つけました。 その為に、新しいGradleファイルが必要です。私の場合はdependecies.gradleという名前を作って、buildconfigフォルダーの中に入れました。 そしてその

9 users
aial.shiroyagi.co.jp
白ヤギの開発者の森本です。 この週末 (2015-10-9から10-12) にかけて PyCon JP 2015 が開催されました。2011年からもう5年目です。Python プログラマーにも、そうではない方にも認知度が高くなっているのでイベントそのものの説明はもういりませんよね。 私は初期の2011-2012年の頃に参加していました。その後は余裕がなくて参加していませんでした。そして3年ぶりに参加してきたわけになるのですが、2011年の頃とは大きく変わって、会場の規模もスタッフもカンファレンスの内容もレベルアップしていて驚きました。とりわけ3年前と比べて気付いたことは女性と外国人の参加者が増えていたことです。 例えば、いま求められるコミュニティの多様性と未来 と題して女性向けコミュニティの運営に携わっている方々のパネルディスカッションがあったり、LT では外国人 (おそらくはそのコミュニ

75 users
aial.shiroyagi.co.jp
リードアーキテクトのItoです。 カメリオのiOS版では1年ほど前にエクステンションからSwiftを導入し、Swift化を進めてきました。 先日リリースしたiOS 9とwatchOS 2対応版ではそのほぼすべてをSwift2.0化しました。 2014/9月: iOS 8 – Today ウィジェットをSwift 1.1化 2015/4月: Apple Watch – WatchKitをSwift 1.2で実装 2015/9月: iOS 9 – iOS本体およびExtensionをほぼSwift 2.0で実装 APIレスポンスの仕様 カメリオ(初期は違う名前だった)は2013年の秋ごろに最初のプロトタイプを作り始め、その後機能追加や仕様変更がありました。そろそろ最初のコードから3年くらいが経ちます。 ずっとiOSやAndroidと直接通信するAPIサーバーにはNode.jsを使っていますが、

13 users
aial.shiroyagi.co.jp
こんにちは。白ヤギのデータ分析担当の堅田です。 少し前になりますが、8月23日から1週間、京都大学で行われた機械学習サマースクール(Machine Learning Summer School, 通称MLSS)に行ってきました! (写真はFacebook Machine Learning Summer School’15 – Kyoto より) MLSSとは、世界中の研究者や実務家が生徒として集まり、第一線の研究者から授業を受けるという、機械学習専門の短期コースです。講義は長いときで朝8:30から夜7時までとハードでしたが、機械学習の基礎理論に触れることができた、満足度の高いコースでした。 私は、2週間のコースのうちの最初の1週間しか参加していませんが、心に残った講義を紹介したいと思います。 1. Convex Optimization (Stephen Boyd) 日本語でいうところの、

3 users
aial.shiroyagi.co.jp
Androidエンジニアのニコです! 7月の23日にRealmのMeetupに参加しました。 2015/7/23 Realm meetup #5 カメリオのバージョン4.0からRealm Databaseを使っていて、アプリのパフォーマンスが上がりました。 最先端情報吸収研究所 – AIAL 際限ない情報の中から、自分に価値のある情報を効果的に吸収することは、かつてなく大きなチャレンジです。最先端情報研究所はニュースアプリ「カメリオ」、レコメンドエンジン「カメクト」を提供する白ヤギコーポレーションのR&D部門として、データサイエンスの力でこの問題を解決していきます。白ヤギでは現在研究開発メンバーを募集しております。ご興味のある方は是非下記サイトを御覧ください!

16 users
aial.shiroyagi.co.jp
初めまして!白ヤギコーポレーションのAndroidエンジニア、ニコです! 最近アップデートしたカメリオAndroid版はUIだけではなくて、データフローも変わりました。 カメリオAndroidでReactiveX(Reactive Extension)というAPIのJavaバージョン(RxJava)が導入されました。 RxJava RxJavaはAsynchronousプログラミングのAPIです。ObservablesでAsynchronousデータの流れを表します。Observablesも色んなオペレータがあって、オペレータでObservableをフィルター、選択、変換、構成、そして組み合わせすることができます。 Observables Observableとは? ObservableというObjectはタスクが終わったあとにSubscriberに通知して、SubscriberはObse

360 users
aial.shiroyagi.co.jp
こんにちは!白ヤギの開発者、森本です。 白ヤギではいま API サーバーを Go 言語で開発しています。 皆さんも Go の話題をよく見聞きするようになっていると思います。今回は白ヤギの業務でどんな風に Go を使って開発しているかの一端を紹介します。 余談ですが、先日、大学の先生とお話ししたときにこんな話を伺いました。その先生は学生にプログラミングを教えているそうですが、何割かの学生は及第点に届かないそうです。しかし、そういった学生がプログラミングの素養がないかというとそういう訳ではなく、プログラミングを学ぶ上でその学生にとって何が理解を促すのかが違うだけなのだと仰っていました。教える側として全ての学生が習得できるプログラミング教育というのを見つけられていないのが悔しいといった話をされていました。 何かを学ぶというのを一般論では語るのは難しいということかもしれません。そのため、私はこうい

12 users
aial.shiroyagi.co.jp
こんにちは!データ分析担当の堅田です。 4/17に技術評論社から「Pythonエンジニア養成読本」という本が発売されました。その中で、PyData.Tokyoのオーガナイザーの1人であるALBERT池内さんが「PyData入門」を書いており、「これからPythonでデータ分析をしよう!」と考えている人に最良の指南書となっています。そこで、読みどころを紹介したいと思います! Pythonでデータ分析? Pythonはソフトウェアやウェブアプリ開発などでよく使われているプログラミング言語ですが、実はデータ分析の分野でも人気があります。Pythonでデータ分析をするメリットはなんでしょう。それは、なんといってもソフトウェア開発やウェブアプリ開発とデータ分析がシームレスをつなげることができるということです。データサイエンティストが作った予測モデルを、サーバーに組み込みといったことができるわけです。

91 users
aial.shiroyagi.co.jp
こんにちは、白ヤギでは下手の横好き的なPythonistaのシバタアキラです。 カメリオのような複雑なオンラインサービスを開発提供していく上では、様々な開発言語からミドルウェアそしてハードウェアやモニタリングに至るまで、様々な計算技術を応用しています。開発言語自体はあくまで手段であって目的ではないので、自分たちのマインドシェアの中でも小さくあるべきと思っています。一方で、未だにvim vs emacsなんていう些細な選択肢に関しても「戦争」が起こる様に(起こってない?)なんだかんだいって、ツールというのはエンジニアにとってもデータサイエンティストにとってもとても大切なモノです。 昨年PyConJPのスポンサー(今年もやります!)をして以来、Pythonコミュニティーでコアに活動されている方々とお付き合いさせていただく機会も増え、また自分でもPyData.Tokyoというデータサイエンスに特

437 users
aial.shiroyagi.co.jp
あけましておめでとうございます。白ヤギの物理担当、シバタアキラ(@punkphysicist)です。 皆様はどんなお正月を過ごされましたか?日本の正月といえば、おせち、日本酒、おばあちゃん、そしてパズル、ですよね。私の正月はそんな感じでした。お節をたらふく食べ、美味しいお酒でほろ酔い気分になっている私の横で、黙々とおばあちゃんがパズルをやっているのに気づいたのです。部屋中をフワフワしている私とは全く対照的に、微動だにせずパズルを続けるおばあちゃん。御年迎えられると辛抱強さが半端ない。 そんなおばあちゃんがやっていたのはかわいいチョコレートのピースとは裏腹にこんな挑発的な文言の書かれたパズルです(この記事はアフィリエイトではありませんが、写真をクリックすると買えます) 何時間たっても答えが出ないおばあちゃん、辛抱強さは人一倍強いですが、私も何とか助けてあげたいと思いトライ。しかし日本酒が・・

9 users
aial.shiroyagi.co.jp
こんにちは、シバタアキラ(@punkphysicist)です。 明日NikkeiBPさんから発売予定の「図解と数字で説得する! データプレゼンテーションの教科書」の�記事のために、自然言語処理を使った分析をさせていただきましたのでご紹介させていただきます。こんなビジュアルのかっこいい分析です。 今回ご協力させていただいた本にご興味をお持ちの方は下記からお探し頂けます!下記日経BPさんのご紹介 得られた答えや発見を図解やビジュアルの形で分かりやすく示す「プレゼンテーション」能力も身に付ける必要に迫られて います。そこで、図解を使ってメッセージを分かりやすく伝える方法論から、最先端のデータビジュアライゼーションの現状までを盛り込んだムック「データプレゼンテーションの教科書」の一部を公開します。これこそデータを魅せるワザを習得できるベストプラクティスです。 今回のお題は「多様性」です。今年もいろ

240 users
aial.shiroyagi.co.jp
こんにちは、シバタアキラです。この度PyDataの本家であるアメリカのコミュニティーで半年に一度開催されているPyDataカンファレンスに出席するため、NYCに行って来ました。11/22-11/23の二日間の日程で行われ、延べ250人ほどが参加したイベントです。その時の模様は、先日のPyData Tokyo第二回ミートアップでもご説明させていただき、また後日記事化されると思いますので、そちらをぜひご覧いただければと思います。 今回はそのPyData NYCカンファレンスで私が発表してきたミニプロジェクトについてお話します。最近各所で話題に上がるディープラーニングですが、これを使った応用を「カメリオ」のサービス向上のために使えないか、というのがそもそものプロジェクトの着想でした。今回PyData Tokyoオーガナイザーとして、またディープラーニングで色々と面白い実験をしている田中さん(@a

3 users
aial.shiroyagi.co.jp
金子です。11月17日から19日まで名古屋大学で開催された IBIS2014 のワークショップに行ってきました。 各発表の内容については神嶌先生のまとめページなどを読んでいただくとして、以下では個人的に特に面白かった発表について簡単に感想を書きたいと思います。 多腕バンディット問題の理論とアルゴリズム 最近は広告や検索結果の最適化などにも使われているバンディット問題ですが、その代表的な2つのアルゴリズム UCB (Upper Confidence Bound) と Thompson Sampling について、基本的な考え方から理論的な性能評価までを知ることができ大変参考になりました。 大規模言語データに基づく自然言語処理とその応用 ウェブページや Twitter のデータを分析して報道に利用する事例(データジャーナリズム)などが紹介されました。自然言語処理に関わる人間として、「憲法9条」

360 users
aial.shiroyagi.co.jp
アーキテクトのItoです。動画を撮るのが趣味ですが、最近はこの本を買って、カラーグレーディングの勉強をしています。とても良い本です。 さて、今回お話するのはバックエンドにあるフロントエンドについて。 以下はほぼ実際にカメリオで運用しているバックエンド構成です。 図中のサーバーというものはいわゆるHTTPベースのサーバーアプリで、ここでは緑をNode.js, グレーをPython, C++で実装しています。小さいサーバーがたくさんあります。主にクライアント〜フロントエンドAPIだけの構成図で、記事クローラーや各種管理画面などは図にはありませんが存在します。 まずフロントエンドにELB(AWSを使用)とNginxを置き、後ろに NodeベースのフロントエンドAPIサーバーを置きます。 ここはNode.jsで作られたアプリをサービスするごく一般的な方法です。 エンドポイント(api.kamel.

次のページ