ところてん

日記


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

日記とか、電波とかそんな感じ。
Howitzerサポートページ

情報処理とは何か あとbigdataとか



2012年の夏に一橋大学の文系の一年生向けの情報処理の講義で、外部講師を勤めさせていただきました。
会社の許可をとって、当時の資料を一般向けに焼きなおして公開しました。
http://www.slideshare.net/TokorotenNakayama/ss-20807678

この資料は、僕が大学生のときに、本当に受けたかった情報処理の講義は何だったんだろう?ということを考えて作りました。
僕の大学での情報処理の講義はバブルソートで終わっています(電子工学科出身)。
そして、情報の講義も、いきなり2進数がどうとか、ifで分岐が~、forとwhileが~といったものでした。

一橋大学で講義をする前に「今講義でどのようなことを教えていますか?」と聞いたところ「google spreadsheetsで表計算を教えている」というモノだった。
表計算が情報処理だと勘違いしている人が多いが、あれは情報処理なんかじゃない。
人間が手を動かさないと結果が出ないものなんてのは情報処理ではない。
社会人になってから思うのは、単なる事務作業を情報処理と呼ぶ輩があまりにも多いことだ。

Twitterで「情報処理」で検索すると、情報処理の講義を受ける高校生や大学生がおおく引っかかるが、彼らの言動を追っても、コンピュータを使った作業の勉強以上のモノではなかった。


正しく情報処理とは何かについて、安心したい人はこの辺を読みましょう。
http://lecture.ecc.u-tokyo.ac.jp/~tamai/josho/josho05/05-01/node1.html
(さすが東大、ちゃんと本質を教えている、とはいえ講義でこれが教えられているかは分からない)

情報処理ってのは、世界を情報の視点において見ることだと、私は考えている。
そしてこれは科学(厳密には工学)の基本的な考えかたでもある。

日本全国どこに行っても投入口のある赤い箱が郵便ポストとして機能するのは、僕らの中に郵便ポストのモデルが存在するからだ。
世界にはひとつとして同じポストが無いにもかかわらず、どのポストも僕らには同じものように見える。

僕らはどこのコンビニに行ってもモノが買える。コンビニの店員さんの名前も知らないのに、初めて会った人なのにモノが買える。
これは僕らの中にコンビニに置いてモノを買うプロトコル(=モデル)が存在するからだ。
ひとつとして同じコミュニケーションは存在しないのに、抽象化されたモデルの世界で現実を操作することが出来る。

人間はモデリングというモノを無意識のうちにやってのける。それはポストであったり、コンビニの店員であったり、亀の甲羅のひび割れから吉凶を予測したりする。
それゆえにモデリングが必要である、モデリングを形式化する必要があるということに関して、多くの人は気づいていない。

人間は自己の中にあるモデルに対して仮想的な処理を行って、それで結果がよければ現実に反映する。
簡単な言葉でいうと「それをするとどうなるかを考えてから実行に移す」というやつである。

そしてこれは実はどんな学問でも一緒で、スライドの中にあるような特許や法律、経済学、物理学、全部おんなじだ。
「それをするとどうなるかを考えてから実行に移す、考えた結果と実行結果が異なれば、モデルを修正する」
実は普段僕らが無意識のうちにやってることは、学問となんら変わらない。

そして情報処理が唯一他の学問と異なるのは、実行に移すのが人間ではないということだ。
人間が実行するわけではないから、人間が一生かかっても無理だったことが1秒で出来るようになる。
これが情報処理の本質だ。

だから、Excelを手作業で操作している限り、それは情報処理ではない。それは単なる事務作業だ。
本当の情報処理は、事象を適切なモデルに人間が変換して、適切なモデルをコンピュータが処理することで、人間では無しえなかった速度で現実世界を書きかえることだ。

今回のスライドでは情報処理の例として、情報処理によって現実世界を書き変えているモノを積極的に取り上げた。
ちなみに、スライドのなかで車の進化の歴史はアクセルの抽象化の歴史という話があるが、実際はこれには続きがある。

  1. 最初期は機械的なトリガーによる燃料噴射バルブの開放量
  2. エンジンの回転数の上昇のために、コンピュータによる燃料噴射量、スパークプラグのタイミングの調整
  3. 速度のコントロールのために、コンピュータによるターボチャージャの制御、ギアの制御

車の真の目的は、燃料噴射量を増やすことでも、エンジンの回転数をあげることで、速度をあげることでもない。
目的地に着くことが車の真の目的である。

この次にあるのは、目的地を入力してアクセルペダルを踏んだら、目的地に着く世界がくる。
ハンドルなんてモノはコンピュータが操作すればよい。
人間は目的地に行きたいという意思をコンピュータに伝えればよい。
これがアクセルの本来の意味となる。

あと、後半のクラウド関連は前職を辞めた動機を綺麗な言葉で書いていたりする。
http://www16.atwiki.jp/tokoroten/pages/1256.html

#1週間くらい仕事サボって資料作ってたら、上司から怒られたでござるの巻
#うちの大学で話してくれーって先生がいらっしゃったら、ぜひともお声がけください


カテゴリ: [日記] - TrackBack(0) - 2013年05月09日 23:22:11
  • ご指名を受けたので(笑)。表計算部分は14×90分のうちで、30分ぐらいやりました。ほんとごめんなさい。その後、GoogleAppsフォームで情報入力して、Webサービス呼び出して形態素解析してシートに記録するGoogleAppsScript書いてます。 -- 名無しさん (2013-05-10 06:55:34)
  • ご指名を受けたので(笑)。半期のうちで30分ぐらい表計算やりました。本当にごめんなさい。GoogleAppsフォームで文章を相互に入力し、形態素解析Webサービス呼び出して書き戻すAppsScriptを書くので、基礎もいるだろうと。いい話をまとめてするには「なんか違う雰囲気」が必要なので、ぜひ今期もよろしく! -- katsuaki (2013-05-10 07:02:46)
  • 途中改行のつもりでShift+Enter押して、消えた!と思って2つ書いてしまいました。失礼しました。 -- katsuaki (2013-05-10 07:11:19)
名前: コメント:

CROSS2013で話してきた



CROSS2013継続的サービス改善のゲンバというセッションで、パネルセッションをしてきたような気がします。
ビール飲んでたような気がするので、よく覚えていませんが。

あわせて読みたい


とりあえず適当に喋ったような気がすることを箇条書き

売り上げから異常を見つけて改善を回す。

エンジニアが売り上げのデータを扱うことが金に汚いと感じるなら、さっさと会社を辞めてNPOにでも行くべきだ。あなたの給料はどこから出ているのだ?
売り上げの異常を元に、売り上げを構成する要素をブレイクダウンして調査することによって、本当の異常を探り当てる。
レスポンスタイムが悪くなったからといって、安易に改善をしていては、それこそ開発リソースの無駄遣いである。
はたしてそこのレスポンスタイムの悪化は、売り上げに影響がある箇所だったのだろうか?
それは床屋の満足じゃないのか?
改善したい箇所はいくらでもある、しかしリソースは有限である。
だからこそ、売り上げに結びつくものは何かを洗い出して改善を行わなければならない。

ユーザのクレームを真に受けてはいけない

ユーザは「私が困っている」ということを「皆が困っている、私はその代弁者だ」というように伝えてくる。
自己の問題を社会正義風にすることで物事を押し通そうとする。

これは日本の教育の大変良くない部分だと思っている。
読書感想文や作文コンクールを見てみろ、そんな内容が金賞を取ってる。

クレームは自分がどのように困っているかをちゃんと書けば、正しく個別対応できる。
代弁者になられては、事実確認や対応検討に時間を要して、結果的にサポート効率が悪化する。
代弁者に対しては、何をしたらサポートが行えたことになるのか?

「もし顧客に、彼らの望むものを聞いていたら、彼らは『もっと速い馬が欲しい』と答えていただろう。」 ヘンリー・フォード

ユーザクレームの分析を行う場合、ユーザが物事を過剰に大ごとにしている分をさっぴいて検討しなくちゃいけない。

データ分析の業務を回すには、チームに信頼される必要がある

データ分析屋に必要な能力はおおよそ以下。
  • ドメイン知識
  • ログ出力、データ抽出、加工
  • データ分析
  • 提言、企画

ドメイン知識とデータ分析ができたところで、エンジニアにログ出力を依頼し、ディレクターに提言を行わなくちゃならない。
人を動かさないと仕事が回らない。
そのためには現場との信頼関係の構築が必須。

私の部署にはデータ分析チーム用の席があるけど、私はここ半年間、自分の机に座った覚えは数度しかない。
ディレクターの真横に座り、エンジニアのデバッグを手伝い、ディレクターがほしいデータを提供し、現時点で出ているデータを元にデータ分析を行い結果を共有する。
一ヶ月ほど雑用をしながらドメイン知識を獲得し、裏でデータ取得のコードを埋め込み、データ分析の基盤を構築する。
こうして信頼関係とインフラを作って初めてデータ分析の業務サイクルを回すことが可能になる。

ゲーム内のコミュニケーションの自然言語処理

不幸にしてバグに出会ったユーザが1000人とすると、ゲーム内で発言するのが100人、2chやコミュニティに書くのが10人、サポートに連絡してくるのが1人。
サポートは同じようなチケットが何件か溜まると集約してエンジニアにアラートを挙げる。そのため精度は高いがディレイがある。また土日や深夜はサポートが機能していない。
そのため、エンジニアがサポートから連絡を受け取るよりも、ゲーム内のコミュニケーションを自然言語処理していたほうが、バグの対応が迅速になる。

改善がうまくいかなかったとき

ごめんなさい、と謝る。
なぜ駄目だったかを検討する。
現場にいればデータはいくらでも手に入るし、データが読めるので、いくらでも失敗を認められ、反省できる。
データが手に入らない人、データが読めない人は失敗を認められず反省ができない。


まとめ

やっぱりエビスよりも、プレミアムモルツのほうが好みだ。
おしまい姉妹には勝てない。
こんないい話はたぶんしていない。
登壇者用の机がベトついていて不快だったのと、ビール飲みすぎてトイレ行きたかった記憶しかない。


カテゴリ: [日記] - TrackBack(0) - 2013年01月20日 23:37:21
名前: コメント:

ここのところやったプレゼン他



夏ごろ:一橋大学で講義をしてたような気がする。



ソーシャルゲームにレコメンドエンジンを導入した話
http://www.slideshare.net/TokorotenNakayama/ss-15111004

なんとか社のデータ分析環境の話
http://www.slideshare.net/TokorotenNakayama/iodrive

自作ゲームがPlayismさんで配信がはじまったり
http://www.playism-games.com/games/howitzer/
http://www.playism.jp/games/howitzer/

明治大学で講義してたり。
http://togetter.com/li/425949

世界最強のタッチパネルディスプレイを買って、ゲームを作ってみた
http://www.nicovideo.jp/watch/sm19736358
http://www.youtube.com/watch?v=9ItrDVsfvsM
http://www.atmarkit.co.jp/ait/articles/1212/14/news017_3.html

冬コミ:社畜グッズつくった
http://please.shachiku.me/post/38232484718/100-3-36a

予定:CROSS2013ってので何か話すらしいよ。
http://www.cross-party.com/programs/?p=141

だいたいそんな感じ


カテゴリ: [日記] - TrackBack(0) - 2013年01月02日 23:36:42
名前: コメント:

ここのところやったプレゼンとか





ArgosっていうQEMU改造エミュレータの紹介
http://www.slideshare.net/TokorotenNakayama/argos-x86study


生きてます。


カテゴリ: [日記] - TrackBack(0) - 2012年06月10日 22:02:50
名前: コメント:

大手通信会社の研究所を辞めて、ソーシャルゲーム屋さんに行きます。



さて、そんなわけで2012年1月31日付けで大手通信会社の研究所を辞めました。

辞めることに関しては色々あったわけだけど、入社からの経緯を書いてみようと思う。

元々大学では電子透かしの画像処理とか、自然言語処理を使ったフィッシング詐欺の検知とか、上のレイヤーのセキュリティをやっていた。
就職活動で通信会社の研究所を選んだのは、フィッシング詐欺の検知や上位レイヤーのセキュリティをやっていたからだった。
いざ研究所に配属になると、L8のセキュリティをやっていた部署は、僕の入社する直前に解散になっていて、私はマルウェア解析の部署に配属になった。
人事に「何でこの部署になったんですか?もっと上のレイヤーのセキュリティがいいんですが」と聞いたら「うちの会社はファイバーとか建物のL0からやってるから、L3は上位レイヤーだよ」という謎の説得をされた。

まぁそれでもいいかと思い、ひたすらにマルウェアを逆アセンブルして読んでいた。
セキュリティホールを突く攻撃の検知とか、L3のセキュリティをやってた。
IE6に対して俺俺セキュリティパッチを書いたり、ハニーポット作ったりしていた。
仮想マシンを拡張して、アプリの挙動を解析するコードを書いていたときはきつくもあり、そして楽しかった。

セキュリティの部署に二年ほど居て、色々やってたわけだけど、セキュリティの研究って三ヶ月くらいで賞味期限が切れちゃうんだよね。
その部署は個人がセキュリティのノウハウをためる分には一生モノのスキルが身に着くのだけど、研究成果は三ヶ月で賞味期限が切れちゃう。
でも僕らの研究成果を事業に導入するには、二年間の開発が必須。
研究所内で一年の開発、その後事業会社で一年の開発で、ようやく事業導入が出来る。
研究所では大昔の設備開発と同じようなノリでアプリケーションの開発を未だに続けていた。
だから、セキュリティの部署ではどうやっても成果を世の中に出せないということを確信して、クラウド部隊への部署変更を願いでた。

クラウド部隊に移動したら、ちょっと子会社に行って修行してきて、と言われて、半年ほど子会社で検索エンジンのクローラを書いていた。
Cで書かれた検索エンジンのプログラムをカリカリにチューンするのは楽しかった。
とはいえ、CでマルチスレッドでSocket直叩きで自家製HTMLパーサとかもう書きたくないよ。
この環境で得られた教訓としては、運用部隊が隣に居ることで、開発しながら生の情報が手にはいるという環境がいかににすばらしいかを痛感した。

その後研究所に戻って、PFIさんと一緒にビッグデータ系のOSS開発をさせてもらった。
PFIさんと一緒にやるのはすっごく楽しかった。
その中で私はOSSを使ったアプリケーション設計、提案、とかをやらせてもらった。

だけど、研究所におけるビッグデータ研究のためのアプローチが全力で間違っていた。
ビッグデータの研究は次のような流れになる。
  • RやSQLを使った小規模なデータ解析を行い、データを様々な角度から眺め、仮説構築をする。
  • 得られた仮説をhadoopなどを使った大規模環境で検証する。
  • 仮説をもとにしたバッチのシステム反映や、オンライン機械学習などを利用した本番投入をする。

研究所は外面からビッグデータに見えればよいという姿勢で、hadoopのクラスタを持ってることをアピールしたり、PFIさんと一緒にOSS開発をしているというアピールをしていた。
小規模なデータ解析や仮説構築に関して完全に手を抜いていた。
その結果、僕の手元に生データが何もなく、生データがないにも関わらず、新しいアプリケーションを開発しろという無茶なオーダーが降ってきた。
そして、研究所内では小規模データ解析用のサーバさえ調達することが出来なかった。
新しいサーバを購入することは禁じられ、研究所内の社内クラウドを借りるにもリードタイム一ヶ月、運用部隊からデータを貰おうにも、運用部隊は孫会社や外注がやってるからデータを貰うのにもひと苦労。
事業会社と共同研究しようにも、大昔の装置を作ってた頃のスキームが未だに生き残っていて、どのような成果が出るかを明らかにしないと一緒にやらせてもらえない。
データマイニングって、どのような結果が出るか分かってからやるもんだったっけ?
さらには、事業会社と一緒にやりましょうとなっても、当の運用部隊にやる気がない(余計な仕事が降ってきたという認識)。
こんな状態でどうやって研究をしろと?

このような状態になると、上司が事業会社の微妙な部署から案件を引っ張ってきて僕らに押し付けてくる。
僕らからするとこの案件はSIであり、研究要素を組み込める箇所なんてかけらもない。
3ヶ月ほどクソつまんないSIやりますけどそれでいいですか?
上司「君たちが仕事をしたことが研究結果だよ。特許も書いてね」
え?プロジェクトの成功ではなく、プロジェクトの存続が目的になっていませんか?そんなのに従う気はないですよ。


運用がデータを生み出し、データを解析することで新しい価値を生み出す。
運用と研究が遠い組織では、ビッグデータを本気で扱うには無理だ。
運用部隊の真横でデータ解析をしていない会社はこの先生きのこることは出来ない。

そんなわけで私は研究ができない研究所を辞めることにしました。
マルウェア解析技術を叩きこんでくれた先輩方、CでのLinux低レイヤープログラミングを叩きこんでくれ、実運用の現場で動いているプログラムの過酷さを教えてくれた事業会社の皆様、一緒にOSS開発をしたPFIと研究所の皆様には大変感謝しております。
皆様を裏切るようで申し訳ありませんが、このたび研究所を辞めさせていただきます。

次の仕事はソーシャルゲーム屋さんです。2/1からすでに働いています。
データが私の手元にないのなら、私がデータの元に行きます。
ソーシャルゲーム屋さんで自ら運用を行いながら、百万人規模の生データをゴリゴリ解析して収益改善、企画提案を行う予定です。
もうしばらくすると、私の作ったものが世に出るかと思います。
またよろしくお願いします。


カテゴリ: [日記] - TrackBack(0) - 2012年02月09日 00:17:13
  • ご活躍なにより! -- 中川 (2012-02-16 12:54:53)
名前: コメント:

更新履歴

取得中です。