WolframAlphaという計算機科学について

計算機科学専用の検索エンジンWolframAlphaをご存知だろうか。私はこのWolframAlphaという存在を、2017年のSXSWでどこかのセッションで登壇者の方が説明しているときに知ったが、その時は何に使うんだろーと思っていた。それ以来忘れていたが、つい最近日本語版が公開されたという情報を偶然目にして、少し興味を持って調べてみた。

一体何者か

WolframAlphaは数学関連の問い合わせに対して、計算結果を表示してくれるエンジンのようだ。Googleで検索するときと同じ感じで自然言語に対応した検索が可能だが、検索に引っかかったドキュメントやページを返すわけではなく、検索内容を数学的に解釈してその結果を返す仕組みとなっている。例えば、「8回目のトスで3回目の表が出る確率」と検索ボックスに入力すると、その文章を解釈して結果を出力する。

スクリーンショット 2019-03-01 15.18.40.png

解釈できない質問だとエラーが出る。Siriみたいに。

スクリーンショット 2019-03-01 15.20.46.png

かなり的を絞った感じで使わないとあまり使い所がないが、ホームページを見てみると数学以外のジャンルにも対応しているようだ。例えば「Arts & Media」というジャンルで、スターウォーズの著者と監督を調べるクエリを入力してみると、結果が表示される。

スクリーンショット 2019-03-01 15.23.45.png

全くもって使い方のイメージがわかないが、幾何学模様などを表示したり、パラメータを変更しながら確認していくには役に立ちそうだ。sin波を使った図形を描くときに、自分でコードを書いていくよりもこちらで確認しながらパラメータを調整すると良さそうだ。思わぬ形も出現するかもしれない。 ちなみにWolfram言語という独自の言語でクエリを作成することができる。ただし、覚える気はないので、メモ程度に押さえておく。

Apple Storeへ申請してリジェクトされた内容

短縮URLの入手方法

App Store公開前にアプリURLを知る方法を参考にして 公開前にアプリURLを取得しようとしたけど、APP情報の追加情報に「App Storeで表示」というボタンが表示されず、公開した後に「Appで表示」というボタンが現れました。

現在はAppleID(アプリ用に自動生成される)を使って以下のURL規則でアクセスできるようです。このAppleIDはiTunes ConnectのApp情報で確認できます。

スクリーンショット 2019-02-13 12.02.08.png

https://itunes.apple.com/国コード(jpやenなど)/app/idAppleID

私の場合のURL https://itunes.apple.com/jp/app/id1451475254

2回目のアップデート申請でリジェクトされる

1度アップルストアに申請が通れば、アップデートは割と早く公開されるという勝手な偏見があったんですが、見事にリジェクトされました。1回目の申請の時とほとんど変更を加えておらず、変更したのはデザインの更新と少しの不具合修正程度。Appleから以下の内容のメールが届いていました。

We noticed that your app requires users to register with personal information that is not directly relevant to your app’s core functionality. Specifically, the following fields are required but do not appear to be directly relevant to your app’s core functionality:

Age Gender

Next Steps

To resolve this issue, please either remove all required fields that are not relevant to the app or make those fields optional. Information requested during registration must be relevant to the features the app provides.

Please see attached screenshot for details.

アンケートフォームに年齢と性別の入力欄があるのですが、これを選択しないと次に進めないように変更したのが原因のようです。1回目の申請では未入力でも先に進めるようにしていたため、申請が通ったのでしょう。性差別やプライバシーを考慮してのことだと思います。選択をオプショナルにしてからアップデート申請したら無事に通りました。

今はApple Storeの審査も早くなっていて今回の審査も初回もアップデート申請もだいたい12時間程で結果が返ってきてますね。

宣伝

ということで宣伝ですが、今回申請したアプリは文化庁メディア芸術祭「飛鳥・橿原展」専用のアプリで、現地で直接ご利用頂くアプリとなっています。展示作品の前で発光しているオブジェクト「光るキャプション」に端末を近づけると、展示作品の詳細な情報を得ることができます。この技術は、現在私が勤めている株式会社GOCCO.が独自開発した「LITシステム」がベースとなっています。 ぜひアプリをインストールしてお立ち寄りください。

2019年2月18日 ~ 3月3日まで。

About "How Google Works"

I found that some person recommend How Google Works in their blogs. This book describe the way to work in Google. My cheap verb about Google is like a god. If they are in the same line by some competition, I would definitely drop out to fight them and proceed my project before launching it. That is to say, their huge power sufficiently prevent me (maybe anybody else) from challenging any technology. But what made Google so great? In fact I never know how Google became a famous company what they are today. This book led me to an answer with details.

How Google Works (English Edition)

How Google Works (English Edition)

Google Searching Engine on foundation

A foundational technology in Google is searching ability as well-known. I was surprised the participation of the browsing field was much more later than among other companies. Especially Microsoft was sitting on the king of seat in those days. This is remarkable point for me because I regarded Google as the initial committer in all services. Substantially Google was also one of the challenger to web service field. Larry Page who is one of executive in Google had a confidence that accuracy of searching result save us to earn profit. The more accurate the searching ability was, the more worldwide Google became. Finally Google defeated Microsoft in 2010 and Internet Explore which was most aggressively site among browsers. This giant killing calls "Browser wars" later.

OpenPoseを試してみた

Alternative Kinect

OpenPoseはweb cameraだけで人体の骨格や表情を認識することができる技術だ。今後注目すべき技術になると思う。今はマシンパワーが少し必要であるが、2015年モデルのMac book Proでビルドして試してみても、まぁまぁな速度で動作する。でも実際に仕事の案件などで使用するなら、少し物足りない気がした。また、オープンソースであるが、商用利用にはライセンス費を支払う必要がある。1年で$2,5000とかなりお高め。ただし、オリジナルのOpenPoseから派生したプロジェクトもいくつかあり、こちらはApache 2.0ライセンスなので、商用利用できるようだ。

 

github.com

 

インストール方法

本家のOpenPoseのインストール方法を記載する。本家のOpenPoseはMacのインストールはCPUビルドのみサポートしているようだ。また、CPUバージョンは8GBのRAMと少なくても最新のCPU8コアが強く推奨されている。 ちなみに私の環境はMacbook Pro 15 inchの2015年モデルで、4コアでRAMは16GBだ。

$git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
$cd openpose
  • cmakeをインストール (cmake guiも同時にインストールされる)
$brew cask install cmake
$bash 3rdparty/osx/install_deps.sh
  • cmake経由でインストールされたcaffeを削除して、再インストールする
$brew uninstall caffe
$brew install caffe
  • cmake-guiコマンドでcmakeするためのGUIを開く
$cmake-gui
  • ソースコードパスとbuildフォルダパスを指定する
    buildフォルダは空のフォルダを生成しておく
Where is the source code: /path/to/openpose
Where to the binaries: /path/to/build

f:id:o2mitsu:20180922124419p:plain * Add Entryボタンを押して、以下の追加情報を設定する

Name : BUILD_CAFFE
Type   : bool
Value  : false (チェックボックスのチェックを外す)
Name : Caffe_INCLUDE_DIRS
Type   : PATH
Value  : /usr/local/include/caffe
Name : Caffe_LIBS
Type   : PATH
Value  : /usr/local/lib/libcaffe.dylib
  • Configureボタンで設定を反映
    ここでエラーとして赤いラインが表示されても、問題なかった
  • Generateボタンでバイナリを生成
    buildフォルダにexampleなどのフォルダが生成されていれば成功
  • buildフォルダに移動して、makeする
    (このステップは必要ないかもしれない)
$cd build/
$make -j`nproc`
$sudo make install
Quick Start

exampleフォルダにあるvideoファイルから、人物認識をするデモが実行できる。

$./build/examples/openpose/openpose.bin --video examples/media/video.avi

f:id:o2mitsu:20180922130052p:plain

webカメラを使う場合は、--videoオプションではなく--cameraオプションを使えば良い

$./build/examples/openpose/openpose.bin --camera 0

また、fpsの調整で一番簡単な方法が、--net_resolustionのサイズを小さくすることらしい。ただし、サイズを小さくするとその分認識精度は落ちる。
--net_resolutionは16の倍数で設定する必要がある。net__resolutionはTensorflowによって作られた学習モデルに渡す画像サイズのようだ。

$./build/examples/openpose/openpose.bin --net_resolution 656x368 --camera 0

ゼロ - 何もない自分に小さなイチを足していく -

堀江貴文の「ゼロ - 何もない自分に小さなイチを足していく」を読んだ。ライブドアの元社長で、当時は時代の寵児と言われていたことは記憶している。その時は確か楽天三木谷社長のことを強烈にバッシングしていて、ラフな格好の起業家ホリエモンと、ビシッとしたスーツ姿の起業家三木谷という構図だったと思う。もう10数年くらい前だったと思うけど、その時はホリエモンに好感は持っていたけど、特にその人物像にまでは注視していなかった。この「ゼロ」を読んだきっかけは、書店でホリエモン著の「多動力」という書籍が並んでいて、ふと手にとって読んでみたら、じわじわと心に刺さるような考え方や共感できる内容が書かれていて、それ以降ホリエモンの考え方に興味を持つようになった。「ゼロ」にも共通して書かれていることだが、基本的な彼の思想は、とにかく情報収拾と行動力に尽きる。やりたいことは「全部やれ!」精神だ。

 

 

ゼロ―――なにもない自分に小さなイチを足していく

ゼロ―――なにもない自分に小さなイチを足していく

 
多動力 (NewsPicks Book)

多動力 (NewsPicks Book)

 

 

自分は天才ではない

堀江氏は専門を極めるようなエキスパート、あるいは自分が天才ではないと正面から受け入れていて、だからこそ会社を作って優秀な人材を募り、自分の欠けた部分を補ってもらっている。この考え方はエンジニアの私にも共通するところがある。私は工学系出身のプログラマーではないため、エンジニアとしては純粋培養ではない。その点はコンプレックスでもあるが、だからこそエンジニアとディレクターの狭間で上手く立ち振る舞おうとしている。

 

ゼロをイチにするたった一つの方法

ゼロの状態からイチを作り上げる、つまり何もない自分に小さな「イチ」を足すためには、自分を知ることである。そして自信を持つこと。ここで重要なのは掛け算をしないこと。ゼロに何をかけてもゼロだからだ。この掛け算と足し算の違いは、焦りだと思う。誰しも結果が早く欲しいし目に見えた成果をすぐに手に入れたいものだ。だからすぐに応用へと走るが、大事なのは「基礎」だ、ということに気付かされた。基礎が固まれば、小さな成功体験を得ることができる。例えば、プログラムでボタンを押して行くたびに数字がカウントアップされ、10になると画面の色が変わるといった程度のほんの小さなことだと思う。ただ、このボタンのカウントアップで色が変わるまでには、変数の定義や関数の定義など基礎が土台となっているはずだ。見栄えなんか気にしない。ゼロより格段にマシである。そうして「やるじゃん!オレ!」という小さな成功体験を積み重ねていくと、自信に変わる。ただ、面白いのが、堀江氏が会社を立ち上げたばかりの頃は、強気にハッタリをかまして、技術的に可能か分からない案件まで引き受けてきて、受注してから書店に走ってリサーチしていた点だ。現代のスタートアップも実は同じ状況だろう。

気取った英語学習者

気取った英語学習者とは、国際交流好きで私英語ができるんですよ!アピールをする人のことである。ムシズが走るくらいに感じが悪い。国際交流をするような場に行くと、必ずそういう人たちがいて、日本人は話しかけてくるなオーラを出してくる。

 

誰もキミに話しかけませんから!!

 

まぁ国際交流の場だから、積極的に外国人とコミュニケーションを取りたい気持ちはわかる。ただ、それが露骨すぎなのだ。そして、そういう人は、私が英語で外国人に頑張って話そうとしたり、外国人の英語を必死にヒアリングしている時に、「これはこういう意味だよ」って感じで私英語聞き取れてますアピールをしてくる。

 

いや、それ余計なお節介ですから!!

 

これは海外に行っても同じ。私は大学生の頃にオランダに7ヶ月ほど留学したことがあるが、その時にも気取った英語学習者に出会った。留学している私はすごくイケてる!と勘違いしていて、海外にいるということだけで満足してしまっている。と言いつつも、自分も当時は(たぶん今も)同じように海外で生活することは人生のステータスに感じていた。

 

もちろんこの皮肉は気取った英語学習者へのジェラシーでしかない。ただ、英語が話せると言うだけでマウントをとったかのような態度をされるが気に入らないのだ。

「How Google Works」を読んで

ブログをチェックしていると、「How Google Works」という本がおすすめという方がチラホラいたので試しに読んでみた。私の勝手なGoogle像は、陳腐な言い方をすると神様みたいな存在である。そして、Googleが同じ競争相手として横に並んでいたら、スタートをきる前に諦めてしまう。それ卑怯やんって感じで。でも、赤子がいつの間にか立って歩いているのと同じ感じで、いつの間にかGoogleが席巻しているので、実はなぜGoogleが生まれて今日に至るまでに成長したのか、などが分かっていなかった。この本では、Googleでの働き方や優秀な人材の雇用方法、サービス提供までの内部事情などが記載されており、Googleの実態を垣間見ることができる。

  

 

 

Googleのコアは検索技術にある 

Googleのコアは検索技術にある。本を読んで驚いたが、Google検索はかなり後発の方で、当時はマイクロソフトがWeb業界を席巻していた時代だ。なので、当然だがGoogleが全てを創造した訳ではない。この点は私の中でかなり大きなポイントであった。すべてのサービスに対して創造主であると思い込んでいたGoogleも、実は新参者として業界に殴り込んで行った企業の一つであったということだ。ただ、創業者のラリーペイジは「検索の精度」をあげることが収益につながるという強い確信があったようだ。そして、検索の精度が上がるにつれて徐々にGoogleの認知度も上がって行った。2010年あたりまでは強い勢力を誇っていたマイクロソフトインターネットエクスプローラーGoogle Chromeの登場で王座から陥落した。このGoogleが起こしたジャイアントキリングは、のちにブラウザ戦争とまで言われるようになっている。

 

ラーニングアニマルを採用する

この言葉を聞いてすっかり気に入ってしまったが、Googleが喉から手が欲しい人材は、なんでもできるスーパーハッカーではない(そんなハッカーはきっと人の下につかずに起業してるだろう)。変化を恐れず学習を続けるマインドを持った人材だ。そして、学習を楽しむ力を持っている奴、失敗を恐れない奴を総じてラーニングアニマルと呼ぶらしい。会社の命令ではない勉強会や研修会にいそいそと参加している人、そしてそれが楽しくて仕方がない人はラーニングアニマルだろう。最新技術にキャッチアップできない!と焦っている人や、同僚を出し抜きたいとか打算的に考えている人はただのスノッブアニマルだ。もう勉強が好きで好きでたまらなくて、休日出勤したり同僚から「お前そんなに仕事が大変なのか?」と心配されるくらい深夜まで事務所にこもって勉強漬けになってる奴はGoogleから寵愛を受けるだろう。

 

OKRというプロジェクトマネジメント手法

このOKR(Objective Key and Result)という言葉も初めて知った。要は目標値を設定して、結果にどれくらいコミットしたかということだが、Google流の目標設定方法は測定可能性の高い内容にすることである(以下に例として引用する)。

 

ジュピターではW個の新システムによって、X個の大規模サービスの大量の大量のトラフィックを処理し、稼働率Y%の時にレイテンシーZマイクロ秒以下を達成する。

 

 つまり、曖昧な設定にしないということだ。そしてもう一つ目標設定で条件がある。それは達成できるかどうか分からないくらいに発想を大きく、難易度を高く設定することだ。OKRで算出した達成度がどのプロジェクトも100%だと、そのプロジェクトは何の野心もないことを意味する。達成度が70%くらいがちょうど良いらしい。

 

Googleだって失敗してるし、どの企業とも同じように他企業と差をつけようと試行錯誤している。ただし高次元で。でもそう考えると、Googleも一つの企業であるということがこの本から透けて見えてくる。