ヘッダーナビゲーション

2017年5月18日木曜日

Slackで論文収集botを作る

目次


概要

SlackのIncoming Webhooksという機能を使うと、簡単にプログラム上からSlackに投稿ができます。その機能を用いて、Arxivから興味のある論文を自動で検索して投稿してくれるbotを作りたいと思います。

実装したプログラムはここに置いています。
https://github.com/kushanon/oreno-curator/blob/master/arxiv.py
開発環境はAnaconda2-4.3.0を用いています。

類似の機能を提供しているサービスとしては、Google Scholarのアラート機能があり、それを使うと設定したキーワードに関連する論文が投稿されたらメールでアラート送ってきてくれます。

それと比較して、今回提案するやり方の嬉しいところとしては、
  • Slack上のbotなので、botを既存の研究開発関連チャンネルに追加しておくことでスムーズな議論を行うことができる。僕の場合も、チームで研究開発をする際に、開発している内容に関連する情報を適宜教えてくれる用途で使っています。
  • 自分でプログラムを自由に書き換えられるので融通がきく
となっています。

1. arXivのAPIを通して、設定したキーワードに関連する論文を取得

arXivのAPIについての説明は、ここに概要が載っていて、ここに細かい仕様が載っています。
import urllib
url = 'http://export.arxiv.org/api/query?search_query=all:electron&start=0&max_results=1'
data = urllib.urlopen(url).read()
print data
From https://arxiv.org/help/api/index

こんな感じでHTTPのGETやPOSTリクエストを適切なURLに送ることでAPIを利用することができます。
そして、URL中のパラメータを変更することで取得する情報を変更することができます。
詳しい説明は先述のUser Manualを参照していただきたいのですが、このURLのパラメータに取得したい情報を記述します。

search_queryの部分で引っ張ってくる論文の選び方を指定できます。例えばsearch_queryで、ti:Machine\ Learningとうつと、Machine Learningという単語がタイトルに入っている論文を引っ張ってきてくれます。ti以外のprefixも色々と用意されています。例えば、Abstractはabs、catはarXivでのカテゴリーです。arXivでのカテゴリーについてもUser Manualにくわしい記載があります。
また、Boolean演算子やグルーピング演算子も使えるので細かい指定も可能です。

例えば、サンプルプログラムにあるように、
(cat:stat.ML+OR+cat:cs.CV+OR+cs.HC+OR+cs.IR)+AND+((abs:emotion)+OR+(abs:ECG)+OR+(abs:time\ series))のようにうすると、

カテゴリーが、stat.ML、cs.CV、cs.HC、cs.IRのいずれかで、アブストの中にemotion、ECG、time seriesという単語のいずれかが含まれる論文を検索することができます。


2. Incoming Webhooksを通して、対象となる論文をSlackに投稿

https://my.slack.com/services/new/incoming-webhook/にアクセスしてもらうと、

こんな画面が出てくると思います。
①の箇所でbotを追加したいSlackチームを選んで、
②の箇所でbotを追加したいチャンネルを選んで、
③を押します。

すると以下のようなページが出てきます。
④にURLがあるのでそれをメモしてください。

ちなみに、このページに書かれて居るように、botの見かけや、アカウント名を変えたり、表示する文字をカスタマイズできたりします。

PythonでこのURLにポストする場合こんな感じでかけます。

api_urlの部分に先程メモしたURLを貼り付けて実行すると、設定したSlackチームのチャネルにHello!と投稿されます。


以上をまとめたPythonのプログラムは
のようになります。
既にSlackに投稿したものはログをとっておき投稿しないようにし、arxivのstat.ML, cs.CV, cs.HC, cs.IRカテゴリから,アブストの中にemotion, アブストの中にECG, アブストの中にtime seriesが入っている最新の論文から順番に10本ずつSlackに投稿してくれるような仕組みになっています。 これをcronを用いて定期実行できるようにします。

3. cronを用いて定期実行できるようにする。

cronはスクリプトを自動実行できるデーモンプロセスで、Unix系OSではデフォルトで入っています。詳しくはhttp://www.server-memo.net/tips/crontab.htmlなどに書かれています。

注意すべき事項としては、cronではrootからのpathでアクセスされるので、上記プログラムではプログラムを実行する前に、cdをしてプログラムが置いてあるディレクトリに移動する必要があります。また、PyenvやAnacondaなどの環境を用いている場合は、
/home/***/.pyenv/versions/anaconda2-4.3.0/bin//python arxiv.py

のように、Pythonの実行ファイルを指定する必要があります。

実行例

実行するとこんな感じで投稿してくれます。


2017年5月14日日曜日

100万円の女たち

最近Netflixで100万円の女たちというドラマをよく見るのですが、面白いです。
概要は公式サイトよりこのような感じです。


主演は映画「君の名は。」の音楽を担当し、日本アカデミー賞最優秀音楽賞を受賞、幅広い世代に絶大な人気を誇るバンドRADWIMPSのヴォーカルとして、映画『トイレのピエタ』では日本アカデミー賞新人俳優賞受賞するなど役者としても類まれな才能を開花させ続ける野田洋次郎。野田は今回がテレビドラマ初出演&初主演。 野田が演じるのは売れない小説家、道間慎。彼はある日どこからともなくやってきた、まったく素性の知れない5人の美女たちと1つ屋根の下で暮らすことになる。女たちは毎月100万円もの大金を家賃および生活費として支払う。彼女たちは何の目的で慎のもとに集まってきたのか。どんな人間なのか・・・。回を追うごとにひとつ、またひとつと解明されていく謎。そして、女たちとの奇妙な共同生活を通して慎は思いもよらなかった大きな運命に翻弄されていく・・・。謎が謎を呼ぶ、密室ミステリードラマ!!! テレビ東京が深夜ドラマで培ってきたノウハウと『ハウス・オブ・カード』『ストレンジャー・シングス』『火花』など数々の傑作オリジナルドラマを生み出してきたNetflixが手を取り合い、テレビに新たな旋風を巻き起こします!!
作品自体はミステリアスなラブコメといった感じです。
キャストは野田洋次郎を始めとして、女たちでも福島リラや松井玲奈が、主要人物以外でもリリー・フランキー、池田鉄洋など豪華なキャストが演じています。野田洋次郎の売れない小説家を初めとして、女たちも謎が多い感じをうまく演じれており作品としての一体感が高く総じて良いと思います。

ストーリーに関しても、ラブコメは通常途中から予想が容易なストーリーとなり、ぐだぐだ感が出やすいと思うのですが、本作品では謎の共同生活という状況や女たちの謎も多く、次から次へと小さな事件が起きていき、それらが伏線となり大きな展開を生むといった流れで夢中になってしまいます。

映像に関しては、Netflix作品に良くあるように、良い意味で日本のテレビドラマっぽくなく、心象を写した表現をしている印象を受けます。 個人的には、全体的にライトの当て方やカメラワークが映画っぽい感じがします。

また、主題歌はコトリンゴの”漂う感情”なのですが、作品の影のある雰囲気とも合っていて素晴らしいと思います。気に入ったのでiTunesでダウンロードしてしまいました。

感想はこんな感じです。

そういえば、松井玲奈もともとそんなに好きじゃなかったんですが、作中の塚本ひとみの性格、服装が好き過ぎてファンになってしまいそう...

2017年5月2日火曜日

VRエンジニア養成読本を読んでみた

Software Design PlusシリーズのVRエンジニア養成読本が面白そうなので購入して読んでみました。
(From http://gihyo.jp/book/2017/978-4-7741-8894-2) Gihyo Digital Publishingにて、EPUB, PDF同梱版が2180円で売られており、ここからダウンロードできます。 Amazonでも売っていますが、Amazonで売っているのはちょっと高いのとKindleでしか読めないようです。値段は、VR関連書籍としては安い部類かと思います。
内容は、オムニバス形式で各章の担当著者がそれぞれ記事を書いています

目次は技術評論社のホームページに記載されてる通り、
  1. ~VR のしくみと可能性を正しく理解~ 最新ハードで学ぶVR の今とこれから 
  2. ~Unityで作る~ 入門! VR アプリ開発
  3. ~「没入感」を生み出すコンセプト開発と空間設計~ VRアプリデザイン実践入門
  4. ~PCやスマホで手軽に体験できる~360度動画入門
  5.  ~複合現実の世界へようこそ~ HoloLens 入門 
  6. ~3Dプリンター&ジェネラティブアート~ VRで広がる空間技術
のようになっています。

5,6はVR関係無くていらないな...笑と思う一方、1~4はかなり充実しているように思いました。

各章についての感想を以下で述べます。

1. 最新ハードで学ぶVRの今とこれから

VRヘッドセットの仕組みから始まり、製品の分類、よりプレゼンスを出すための仕組みなど、近年の動向を踏まえた多岐にわたる説明がなされていて、読み応えがありました。 ネットを調べていてもわかることが多い印象でしたが、体系的にまとまっており読む価値はあるのかなと思います。 これまでVRについて全く知らない人もこの章を読めば大体の流れは掴めるようになります。

2. 入門! VR アプリ開発

Google Cardboard, Oculus Riftにおける入門アプリの作成方法を図やソースコードを交えてわかりやすく解説してあります。 Google Cardboardでは壁打ちゲーム、Oculus Riftではユニティちゃんが動き回るアプリの作り方が紹介されています。 加えて、頭の動きを使ったインタラクティブなアプリ開発の作り方も書いてあります。 スマホVRであれば、人間が物理的にインタラクションできる情報が頭の動きだけなので、マス向けアプリを作る際かなり有用になる資料なのかなと思います。

3. VRアプリデザイン実践入門

この章が一番秀逸だなと思ったのですが、まず実際の至近距離接近ガールVRというVRアプリを題材にしながら、どのようにアプリを設計していくかが書かれています。 全体のコンセプトから始まり、ビジュアルコンセプト、オーディオコンセプト、そしてそれを実際にどうやって実現するかに至るまで細かく書かれています。 ここまで細かくVRゲームのデザインについて言及し、実際のケースまで紹介してくれるものは初めてです。 次に、VRアプリの空間デザインとして、道に迷いにくい空間設計について認知科学っぽい観点から述べられています。 こちらも、ルームスケールVRアプリを作る際に大いに役に立つかと思います。

4. 360度動画入門

こちらは360度動画の概要が紹介されています。入門向けといった感じであんまり詳しいことは述べられていませんが、初学者には役に立ちそうです。 5,6については割愛します。

まとめ

まとめると、VRの基礎から包括的に説明しており、簡易的なVRアプリの作りかた、VRアプリのデザインの仕方までわかりやすく述べられています。 VR初学者はもとより、Unityも触ったことがない方や、簡単なVRアプリは作ったことがあるけど市販アプリのようなものをどう作れば良いのかわからない方におすすめです。