ある研究者の手記

セキュリティとかゲームとかプログラミングとかそのへん

Web系企業に転職して最高だったという話をしたい

11月にSI企業からCookpadにセキュリティエンジニアとして転職して1ヶ月たったのですが、いろいろ感銘をうけたのでその気持を忘れぬうちに文章に残しておきたいと思います。

disclaimer

  • 個人の主観であり、客観的にSI企業が悪いとかWeb系が良いとか言っているわけではありません。
  • かなり前職disな話っぽくなってしまっていますが、そこは企業としての性質の違いだとご理解いただければ幸いです。
  • 当該企業からはお金を頂いています。予めあしからずご了承ください。

しがらみが少ない

CookpadはWeb系の中でもかなり規模が大きい方だとは思うのですが、それでも前職のグローバル含めた規模のおそらく1/1000ぐらいであり、自分にとってはとても風通しの良い体質に思えます。

新しく何かを始めようとするときも、関係する人と立ち話で「こんな感じにしようと思うんだけどどうですかね」みたいなところをざっと決めて作りながら物事を進めていく…というやり方だと感じています。Rough Consensus and Running Codeという世界ですね。もちろんこの1ヶ月の間に細かい手戻りも何度かあったりしたのですが、ちゃんと合意を取りながらすすめると言ったやりかたを超えるスピード感で仕事をするのが重要と感じています。(もちろんこれは対象の規模などにもよりますが)

また、サービスなどに直結するような内容でも素早く動いていくことを重視しているように感じています。前職では何かしようとするとだいたい2〜3つ以上の力学というか外圧のようなものがあり、それをまずどうにかしないといけませんでした。グループ内部ではわりと好きにやらせてもらっていたのですが、その外に出ようとした瞬間に壁を突破したり調整したりが必要でそこで疲弊してしまうことが少なくありませんでした。現職では担当者同士ですぐ話をして次のステップへ進めるというサイクルが短く回っているため、むしろ振り落とされないよう頑張ってついていかねばと思う場面も少なくありません。

強いエンジニアが多い

とりあえず、右を見ても左を見ても豪傑ばかりという印象です。

前職でも研究所に学術的研究に秀でた方は多くいらっしゃいましたが、正直なところエンジニアリングが得意という人は全体でもかなり少なかったです。本当はエンジニアリングも得意だけど、そういうのが仕事の内容的に見えてこないというだけだったかもしれませんが、全体としてエンジニアリングにあまり積極的でない空気感を感じていました。

当然ながら現職ではエンジニアリングは非常に重要な位置づけとなっており、これを蔑ろにすると(多分)人権を失います。象徴的なイベントとして、入社後にちょうど社内ISUCONが開催され私も参加させてもらったのですが、出張や休暇などでいない人を除いて全技術職が参加必須というのに驚きました。技術職と言っても様々な分野の方(インフラ、サーバサイド、フロントエンド、モバイルアプリ、研究職)がいらっしゃるわけですが、皆さんほぼ基本的な技術は一通りできるのは当たり前で、その上で自分の得意分野を活かして競技に参加していました。

また、CTOが「今日一日業務が止まるのはとても手痛いが、それでもやる価値がある」と言っていたのがとても印象的で、ちゃんとエンジニアの育成に力を入れているんだなと思いました。

セキュリティの分野についても入り組んだ攻撃や防御の話に通じている人はあまりいませんが、実践のサービス開発と運用の部分については長年の蓄積を持つ人が多く、学ばせてもらうところが多くあります。そういった環境に身を置けるというのはエンジニアとしてありがたいことだと思います。

当事者意識があり、サービス・環境の改善にとても前向き

自分たちが作っている・使っている環境を常に良くしていこうという文化を強く感じます。前職の場合、基本的には本社なり別部署が決めたものを(それがどんなに使いづらいものでも)言われるがままに使うというのが基本でした。規模の大きさを考えると仕組みや使うものを決める人と使う人を分けたほうが仕事が明確になって良いのでしょうが、使いづらさやだめなところがいつまでも改善されないというフラストレーションがありました。

現職場では自分達が使うものを自分たちで選び、時には作るといったことをするため、常に「どうすると良くなるか?」といった方向を見ているなと感じています。これは今あるものを良くするためにも重要なことだし、その良くなったものをベースにまた次の新しいことを始めるのにも活きてきます。また、そうするべきかという議論や検討はもちろん必要ですが、ソフトウェアであれば自分で作ってしまっても良いわけで、ものづくりが好きな自分としてはそれも魅力の一つになっています。

自由にオープンソースにコミットできる

正直、これが一番強烈だったかもしれせん。

入社する前から外部に対してアウトプットしていくことは評価にも含まれており望ましいという話は聞いていたのですが、実際にとても自由な状況でした。OSSに関するポリシーを見てみると "従業員は自分の良識に基づいて、業務時間中に開発したソフトウェアをOSSで公開できる" という説明を見つけ、あまりの神々しさに見た瞬間目が潰れるかと思いました。目がーっ!

前職では知財やそれに準じる成果物が非常に厳しく管理されており、私的時間に書いたコードですらOSSとして公開あるいはcontributeするのに内部レビューと承認が必要でした。おかげでOSS的活動が好きな自分としては少なからずストレスではあったのですが、それが完全に開放され翼を授かった気持ちです。というかむしろ、前職との違いに頭がクラクラしています。

おかげで、これまでgithub上でPRを送るというOSS活動に縁がなかったのですが、先日始めてPRを送りmergeされてました。実に大したことじゃないんですが、ささやかながら嬉しい気持ちになっています。今後は自分で書いているOSSだけでなく、他のOSSにも積極的に貢献していきたいと考えてます。

f:id:mztnex:20171203114238j:plain

その他

あまり本質ではないのですが、その他感動したことなどをいくつか。

いわゆる今時の仕組みを使った開発・運用

社内で動いているシステムやフレームワークを見て「おお、これが噂に聞いたgitでconfigのバージョン管理をして自動デプロイされるというあれか…!」と感動していました。github eterpriseまでは前職でも使っていたのですが、普通にコードのバージョン管理をするだけで(それでも社内ではかなり珍しい感じでしたが)そういった今時っぽい使い方はしていませんでした。まあがっつり運用というほどではなかったので、そこまでする必要がなかったと言えばそうなんですがね…。

開発マシンなど

マシン自体は前職もそこまで悪くなかったですが、現職ではさらにもう一回り上のスペックになっています(MacBookPro メモリ16GB)。基本、全員が4Kディスプレイを使っています。

キーボードやマウスについても、自分は最近 RealforceLogicool G900 がベストな組み合わせなので「ちょいと値は張るけど新しく職場用に自分で買うかー」と思っていました。が、この話をしたら「いや、普通に発注してくださいよw」と言われするっと申請したらしゅっと支給されてとても感動しました。

無限のコーヒーやスナックがある

まったく本質ではないし、前職にいたときもコーヒー買うお金をケチったことなどないのですが、やはり無料で供給されると思うと気分が全く違いますね。ここしばらくカフェインをコードに変換する仕事をしていました。

おわりに

まだ転職してからたかだか1ヶ月なのでこれから見えてくる大変なことや苦労も色々あるとは思うのですが、今のところ職務内容も含めて、転職してよかったと思える生活をしています。

この記事は別にリクルート目的というわけではないので特にリンクなどは貼りませんが、現職ではセキュリティエンジニアだけでなくいろんな職種を募集しているので、興味のある方は気軽に声をかけてもらえればと思います。

追記

コメントとか見てたら「給与や労働時間の話がないのは闇」って書かれていて、みんなよく訓練されてるなぁと感心してしまいました。気になる方も多いと思うので一応追記しておきます。

  • 給与は前職で「独身一人暮らしが雑に出費しても貯金できる程度」もらってると書きましたが、そこからちょい上乗せするくらいもらっています。転職時にあんまり給与交渉しなかったので場合によってはもっとあがっていたかもしれません。
  • 勤務時間は基本1日8時間となっていてフレックスタイム制です。残業時間は先月で確か20時間ちょいぐらいだったと記憶していますが、これは働きはじめでいろいろ慣れていなかったこともあり、効率的にやればもっと短縮できそうではあります。

情報セキュリティ関連の求人

先日転職したわけですが、転職活動序盤に「そもそも情報セキュリティ関連の求人ってどういうのがあるんだろう?」と思ってばーっといろいろな職種を見渡していました。その結果、概ねこういうカテゴリの募集があるのか、という知見を得たのでまとめてみます。これから情報セキュリティ関連の職種への就職・転職を考えている人の参考になれば幸いです。

なお、筆者の個人的嗜好によってバイアスがかかっている可能性は多分にあり、まったくもって網羅性を保証するものではありません。

脆弱性診断

自社で開発するプロダクトやサービスを検査し、脆弱性を発見する仕事。また開発物のチェックだけでなく、セキュアな開発のガイドラインを作成するというような仕事が付け加えられている場合もある。プロダクトやサービスに直接関連する開発の知識・経験が求められる。

SOCオペレータ

サーバやネットワークを監視してセキュリティインシデントを発見・対応する仕事。非常に規模が大きい自社サービスを抱えているところでは自社内だけを対応するケース(プライベートSOC)もあるが、おおむね契約したお客さんの環境を監視するManaged Security Serivceの要員を募集している場合が多い。監視機器の環境構築・導入・保守も担当する。インシデントを発見した場合に報告するだけなのか、インシデント対応をサポートするのかなどは会社によって異なる。

社内全体のリスク管理

個別のプロダクトやサービスの脆弱性を検査するだけでなく、社内全体のリスク評価の実施して改善案をだしたり、インシデント発生時の演習のとりまとめをやったりする。CSIRT (Computer Security Incident Response Team) に近い業務を求められるものもある模様。かなり上級職で給与レンジも高いが、幅広く深い知識と経験が要求される感じがした。

ITシステム部門(セキュリティ担当)

大手日系企業などに多い。社内のIT利用を統括するIT部門においてセキュリティ関連の業務を担う。社内でIT機器を使う際のセキュリティ関連ガイドラインを作成したり、ISMSなどのレギュレーション対応、セキュリティベンダへの発注、監査対応など諸々を対応する模様。自分で手を動かしてテクニカルなことをやる場面は少なそう。

インフラエンジニア

IT部門とやや似ているが、どちらかというと自社サービスのアプリケーション、ミドルウェア以外の部分(OS、ネットワーク、サーバ管理など)を担当し、その中でセキュリティ業務も担当すると言った感じ。どちらかというとセキュリティはおまけ要素っぽさがある。

セキュリティプロダクトベンダのテクニカルセールスやサポート

外資系ベンダに多い。日本でプロダクトを売る時に導入や運用において起こる技術的な課題を解決する。またはプロダクトを導入後の問題に対して対応するようなポジション。外資系だとおそらく上司が海外にいるとか普通にあるっぽいので求人で英語力必須とある。

コンサルタント

お客さんのセキュリティ上の課題を洗い出し、ソリューションまでの道筋を示したりする。観測した範囲だとセキュリティ専門にやるというよりはITコンサルの中の一部の業務という感じっぽい。ここまでくるとあんまりエンジニアという枠ではないかも。

その他

  • リサーチャー:脅威分析などを専門にやるポジション。募集要項を見る限り学会などでの発表を目指すような研究者ではない(トーマツ等)
  • セキュリティプロダクトベンダの開発エンジニア:国内で募集している例はかなり少ない(トレンドマイクロぐらい?)
  • インシデントレスポンスチーム:まれに見かけた。自社内のインシデント対応を担当

退職します

2017年10月31日をもって,6年7ヶ月お世話になった日本IBMを退職します.

何やってたの?

最初に入社したときは研究部門(東京基礎研究所)につとめていてIBMクラウド上のログ管理のシステムやSIEM関連の開発をやっていました.2015年4月から1年半ほどIBM Tokyo SOC (Security Operation Center) で働かせていただいたのですが,いろいろな力学によって2016年9月ごろにはまた研究部門に戻っていました.

研究所では,自分はどちらかというと開発よりのプロジェクトをやることが多く,実験したり論文書いたりというようなアカデミックな活動はあまりできていません.ただ,やはりまわりは一流の研究者というか超人のような人たちが多く,色々刺激されたり勉強させてもらいました.特に学生時代の研究は我流で突き進んでいたところが少なからずあったので,改めて研究のやりかたについて学べたのはありがたかったです.

もともと学生時代にIDS(侵入検知システム)まわりをやっていたこともあり,SOCではその経験を活かしつつ, 実際の現場ではどのようになっているかということを肌感覚として大いに学ばせてもらいました. 最初の頃は純粋にアナリスト業務をやっていましたが、途中から業務効率化や分析の方が面白くなってしまい、後半はそういったツールの開発に取り組んでいました。Tokyo SOCレポート*1もほそぼそと執筆を続けさせてもらい楽しかったです.

現職どうだった?

素直に書いてみたいと思います.

  • 研究所は完全裁量労働で働く時間は相当な自由が効きましたが,一方で海外勢と一緒にやるプロジェクトだったりすると夜中の電話会議もそれなりの頻度でありました.
  • 個人的には給与に不満はありませんでした.独身一人暮らしが雑に出費しても貯金できる程度にもらっていました.
  • (少なくとも自分の周りは)仕事に対しては真摯で筋の通った方が多く,直接の人間関係で困ったことなどはほぼありませんでした.
  • 非常に古く大きい企業(創業から106年,全世界で社員数40万人弱*2 )であるため,そういった組織特有のしがらみというか壁を感じる場面は少なくなかったです.

何で辞めるの?

新しい経験を積みたくなった,というのが最も大きな理由です.

開発に従事するのもSOCで監視をするのもそれぞれ楽しさはありますが,情報セキュリティという視点でみると それぞれ局所的になってしまっているなと感じていました.一口に情報セキュリティといっても, 現実にやならければいけないことは多岐にわたりそれぞれが密に連携している...と思っています. 今後,何か一つの技術や活動に注力するとしても,一度全体を見渡して情報セキュリティの設計・実装・運用に携わってみたいと思うようになりました.

そのためには現在の会社だとどうしても「BtoBのベンダ」という立ち位置になって局所的な話になりがちになってしまうため, もっと自分が全体に責任をもって取り組めるユーザ企業でセキュリティに取り組んでみたいと思って退職を決めました.

どこに行くの?

11月1日よりCookpad社にてセキュリティエンジニアとしてお世話になる予定です.セキュリティ界隈でまたしばらく活動させて頂くことになるかと思いますし,アカデミック方面にもできれば関わり続けたいと思っております.本職の開発の方々には及ぶべくもありませんが,開発自体は割りと好きな方なのでセキュリティ関連で面白いものを作っていくということもやりたいですね.

ということで,今後共何卒よろしくお願いいたします.

ZIP SIM使ってみた@ニューヨーク

TL;DR

とりあえず次回も使ってもいいかな,という印象

使ってみたもの・環境など

出張で1週間ほどUSに行くことになり,せっかくSIM free版のiPhoneを持っているのでなるべく安く済ませてみようということで日本で買えるprepaid SIMにチャレンジしてみました

www.amazon.co.jp

  • 機種: iPhone SE (SIM free版)
  • 使った場所: NewYorkCity および White Plains周辺
  • 使ってた期間: 1週間

良かった点

  • 地下鉄やトンネル内などではさすがに電波がとどかなかったが,それ以外の屋外ではほぼ問題なく使えた
  • 通信速度はとても速いとは思わないまでも,過剰なストレスを感じるほどではない.普通
  • ホテルのWiFiと組み合わせて使ったところ,通信量は7日間でおよそ300MB強だったので容量も問題なし
    • ただし平日はほとんど仕事でつかっておらず,日中もフルで使ったのは土日だけなので1週間観光であちこち行くとかだと若干心もとないかも
    • 追加容量プラン("top up")もあるので必要に応じて追加金できる

良くなかった点

  • このSIMに限った話ではないのかもしれないが,屋内が比較的弱い.例えばJFK空港内とかはかろうじて通信できるが不安定
  • 「SIMを指してから5分以内にSMSでUSの郵便番号(ZIP code)を送るとその地域の電話番号が割り振られる」という説明だったのに,指した瞬間にSMSが飛んできて勝手に番号が割り当てられた.まあ通話使わないのでそんなに困らなかったけど・・

tips

  • APNの設定を変更する必要がある
    • 普段IIJ mioを使っているのだがちゃんとプロファイルを削除しないと競合して上手く動かない
    • APNの設定をしたあと一度iPhoneを再起動したらデータ通信できるようになった

悪意のあるドメイン名のブラックリストをまとめて取得・管理するツール mdstore を公開しました

悪意のあるドメイン名のブラックリストを取得・管理する mdstore というツールを作って公開しました。

github.com

世の中にはフィッシング詐欺マルウェアによる攻撃に使われるドメイン名のブラックリストを公開しているサービスがいくつかあります(参考)。近年はDGA(Domain Generation Algorithm)を利用したマルウェアもあるためブラックリスト化だけでは追いつかない場合もありますが、それでも既知の攻撃に利用されるドメイン名の名前解決を発見もしくは防止できれば、水際で攻撃による被害を食い止められる可能性があります。

ただ、このようなブラックリストは提供しているサイトによってカバーしている領域などが違うため、ブラックリストごとに違うドメインが扱われています。多くのドメインを網羅しようとすると複数のサイトからデータを取得する必要がありますが、フォーマットが異なるなどの理由から一手間必要です。

このツールは複数のブラックリストをローカルにダウンロードし、DBに投げ入れて管理・利用することで、この一手間を簡略化しようというものです。2017年1月7日現在、以下の3サイトからデータを取得します。

注意:ブラックリストを提供している各サイトの利用規約では基本的にinternalな利用は認めているようですが、特に商用利用などをする場合には詳細をご自身でよく確認してください。

使い方

セットアップ

本ツールはnodeで動作し、redisにデータを格納します。動作を確認しているバージョンは以下のとおりです。

  • node: v7.2.1, v6.0, v6.1
  • redis: v3.2.6

インストールは環境に合わせてよしなにやってください。その後、npmを使ってmdstoreをインストールします。

$ npm install -g mdstore

パスを通すのが面倒でなければカレントディレクトリへのインストール(上記コマンドから-g を抜く)でも問題ありません。

さらにツール利用前にredis-serverが動作していることを確認してください。

  1. install mdstore by npm npm install -g mdstore
  2. start redis server, e.g. redis-server &

またデフォルトのredis server接続先 (localhost, port 6379, db 0) 以外を使いたい場合はオプションで指定できます。

  • -s or --host: redis server host
  • -p or --port: redis server port
  • -d or --db: redis server db

ブラックリストの更新

update コマンドを使うことで各サイトのブラックリストをダウンロードし、DBへの格納までを実施します。すでに対象のドメイン名が存在する場合は、取得したという履歴が追記されます。現在サポートしているサイトは3サイトだけですが、hpHostsが特に件数が多いため完了までに2〜3分かかります。

$ mdstore update
update: OK

ドメインを探す

get コマンドを使うことであるドメイン名が存在するかどうかを調べることができます。下記では例として 151.ru というドメイン名が存在しているかどうかをクエリしています。

% mdstore get 151.ru
2017-01-06T14:44:05.347Z { source: 'hphosts', ts: 1483713845.347 }

左のカラムが対象となるブラックリストをダウンロードした時刻になります。右側のtsのフィールドがタイムスタンプでこれをDateに変換したものです。ドメイン名がブラックリストに追加された時刻ではない点に注意してもらえればと思います。sourceはブラックリストの取得元を表しており、hphostsdnsbhmvpsのように表示されます。

その他、データの取得元で掲載されている項目に応じて追加のメタ情報が表示されます。

/etc/hosts の生成

ローカルのredisに保存してあるデータをもとに、悪意のあるドメイン名を 127.0.0.1 に強制的に変換する /etc/hosts を生成します。これを /etc/hosts と置き換えることで悪意のあるサーバと通信する可能性を低減させることができます。

$ mdstore hosts > hosts.txt
$ head hosts.txt
127.0.0.1       localhost
::1     localhost
127.0.0.1       www.wwsupport.net
127.0.0.1       www.memdesign.co.uk
127.0.0.1       www.titanweb.net
127.0.0.1       www.livingston.rs
127.0.0.1       iphonesupport.co.uk
127.0.0.1       up1702.info
127.0.0.1       dcstest.wtlive.com
127.0.0.1       ad.doubleclick.net.34325.9225.302br.net
$ sudo cp hosts.txt /etc/hosts         # Linuxの場合
$ sudo cp hosts.txt /private/etc/hosts # macOSの場合

データへのアクセス

CLIでアクセスする以外には、ローカルのredisに格納したデータはmdstoreのライブラリを使って参照することができます。以下のようなnodeのコードでアクセスできます。DNSの問い合わせログを持っている場合、自分でコードを書くことで不審なサイトへのアクセスがなかったかを確認できます。

var mdstore = new (require('mdstore')).Redis();
mdstore.update((err) => {
  // synced
        mdstore.get('is.the.domain.malicious.com', (err, res) => {
          if (res.length > 0) {
                  console.log('yes, the domain name is malicious');
          } else {
                  console.log('no, this is benign');
                }
        });
});

また、当然ですがredis serverに直接クエリすることも可能です。ただし、履歴データはMessagePackでエンコードされているので直接人間が読むのはちょっと難しいです。一応、以下のような1 linerで表示させることはできます。

$ redis-cli --raw lindex 151.ru 0 | node -e "process.stdin.pipe(require('msgpack-lite').createDecodeStream()).on('data', console.log);"

Oculus Riftはいいぞ。最高だ

f:id:mztnex:20160502221750j:plain

1月ごろ事前予約開始したのを偶然知り、9万円以上という値段に一瞬たじろぎながらも完全にノリと勢いだけで注文したOculus Riftがついに先週自宅に届いたのですが、この一週間毎日遊んだ感想をまとめておきたいと思います。ひとことで言うと、自分がこの十年の間に触ったガジェットの中では最高に興奮しました。やばい。Oculus Riftやばい。

ご存じない方のために念のため説明しておくと、Oculus RiftHMD(ヘッドマウントディスプレイ)の一種です。これまでのHMDは頭を動かすと自分の頭についているHMD本体も一緒に動くため、映像も一緒に動いてしまうので単純に「頭に普通のディスプレイをくっつけているだけ」に等しい状態でした。しかしOculus Riftは内部・外部にセンサーがあり「頭を動かすと見えている映像も追随して動く」という機能を実現しています。このような製品は総称してVR(バーチャルリアリティHMDなどと呼ばれており、HTC VivePlayStation VRもその仲間です。どういうことが起きるのかの雰囲気は以下の動画からどうぞ。

www.youtube.com

まず総評

自分の語彙のなさが歯がゆいのですが、とにかくまず言えることは没入感が半端なくすごいです。センサーで頭の動きを追跡して映像を追随させる、と言われると「どうせ微妙に位置がずれたり反応がぶれたりするんでしょう?」と思うかもしれません。というか、自分自身がそう思っていたのですが、使ってみると完璧と言って差し支えないほどの精度で映像が動くという点に驚愕しました。格ゲーをやりこんでいるような人だとフレームレートの違いが認識できるらしいので、そのレベルになるとひょっとしたら違和感を感じるのかもしれませんが、私のような一般人にしてみると映像の動きはリアルと全く変わらないと感じました。一人称視点の映像だと完全にその世界に入りこんで「どこだここ!?」みたいになります。

もう一つすごいと思ったのはコンテンツの可能性の幅の広さです(コンテンツそのものの量はまだそれほど多くない)。今までVRはゲームに使うものだよね的な議論が多かったような気がしていますが、思った以上にいろいろな分野で応用できるのではないかと感じました。ゲームも一人称視点のものに限られるかと考えていたのですが、三人称視点のゲームとかシムシティのようなシミュレーションゲーム、あるいはリアルタイム戦略ゲーム(RTS)にも応用できる可能性があります。詳しくは後述。

とにかくこればかりはいくら言葉で語っても伝わらないかもしれないので、ひとりでも多くの人に体験してもらえればと思う次第です。

やってみたコンテンツ

ここからは実際に自分がさわってみたゲームと感想をつらつらと載せていきます。

EVE: Valkyrie

www.youtube.com

一人称視点のシューティングゲームです。有名どころで言うとエースコンバットみたいな感じですね。ゲームとしては昔からあるようなものなのですが、Oculus Riftによる没入感で「俺、パイロットになってる!!」感が味わえます。最初に発進で射出される場面などは思わず「うわあああああ」って声がもれてしまうような迫力ですし、右や左、さらには後ろをみても宇宙空間が広がっており、完全に気分はマクロスとか宇宙戦艦ヤマトの戦闘機です。これでロボットだったらガンダムだったんだが、、、と思うところではありますが、間違いなく近々ロボット版をどこかが開発・発売すると確信できるほどロボットものとVRは相性がいいと思わせてくれるゲームでもあります。グラフィックスも綺麗なので、迫力があって楽しいです。

ゲームとしては3次元空間を飛び回って敵を撃墜したりしていくのですが、プレイとしての大きな違いは視野の大きさと視点移動の概念が大きく変わった点でしょう。Oculus Riftは視野角が100〜110度あるらしいので、格段に目でとらえることができる範囲が広がっています。さらには視点も現実と同じ感覚で動かせるので、レーダーだけに頼らず360度敵を目で追いながら戦うということができます。レーダー機能ももちろなるのですが、近距離で高速旋回する相手のユニットを目で追いながら戦えるだけで全然違う体験でした。

単純にゲーム性としてはだいぶ難しくてまだ撃墜されるばかりなのですが、毎日こつこつやっています。全体的にみるとこれまでプレイした中で一番完成度が高いゲームだと感じています。

Lucky's Tale

www.youtube.com

3D空間でキャラクターを動かしてステージをクリアしていく、いわゆるNINTENDO 64ゲームキューブのマリオに近いゲームです。三人称視点なんだから別にこんなHMDつけてやらなくても、と思うかもしれませんが、自分の目の前にそのフィールドそのものがあるというのは想像以上の新鮮さを与えてくれました。いってみれば、自分の机の上に箱庭があって、そこでキャラクターを動かしているような感じでプレイができます。ゲーム性でみても単純にキャラクターを動かしてステージをクリアしていくだけなんですが、これがVR視点になったとたん思った以上に楽しい。マリオなどの視点移動もかなりよく出来ていたとは思いますが、これをプレイすると今まで3Dの三人称視点のゲームでどれだけ視点移動・調整にストレスを感じていたのか気付かされます。

あと、これはゲームやコンテンツによって違うので一概には言えないようですが、このゲームではいわゆる「覗き込み」ができます。つまり体を乗り出すことによって建物の裏側にあるアイテムが見えたり、体を動かして少し先にあるステージの状況が見えたりします。なので自分が動きながら「何かを探す」というアクションができ、ゲームの幅が広がるなと感じました。このあたりは本来は広い空間を動きまわることを想定したHTC Viveの方が強いのかもしれませんが、Oculus Riftでも十分に仮想空間を感じ取れました。

また、このような「箱庭のようなものを三人称視点で見ながらゲーム」というコンテンツがVRで成り立つとすると、かなりいろいろなジャンルに応用ができるのではと思います。例えばシムシティのようなシミュレーションであっても、自分が作った街を上空から覗き込みながらプレイするというやりかただと違った楽しみ方が生まれると思います。さらにVR HMDと組み合わせて使うVR用グローブも開発中のようなので、シムシティでも模型を置いたり取り除いたりするような感覚で街を作る、というようなインターフェースも実現できると考えられます。他にもリアルタイム戦略シミュレーション(RTSエイジ・オブ・エンパイア シリーズStarCraftシリーズなど)も、これまではマウスを使ってユニットや建造物の操作をしていましたが、例えばイメージとしては動くミニチュアを手で操作しながら戦わせる、というようなインターフェースも考えられると思います。さらにはオンラインのカードゲーム(HearthStoneなど)であっても、本当に対戦相手と対峙しているかのような空間でプレイでき、FaceRigのような技術と組み合わせれば「対面にいるのはゲームキャラクターなんだけどちゃんと対戦相手の表情が伝わってくる」というようなゲーム空間が作り出せます。(それでプレイヤーが楽しくなるかキレやすくなるかは難しいところですが 苦笑)

www.youtube.com

なにはともあれ、そういった観点から新鮮な驚きを与えてくれるゲームでした。

Windlands

www.youtube.com

こちらは一人称視点で飛んだり跳ねたりしてステージを進んでいくタイプのアクションゲームです。ワイヤーのようなものを木に引っ掛けながら飛び回るのが特徴です。古い人間なんでゼルダの伝説のフックショットみたいなもの、というのをまず連想したのですが、スパイダーマンの蜘蛛の糸や進撃の巨人にでてくる立体機動装置をつかって飛び回る…といったほうがイメージとして近いかもしれません。このゲームはHTC Viveだと両手でそれぞれ持つ専用インターフェースを使ってプレイするようなのですが、Oculus RiftでもXbox用のコントローラで普通にプレイできます。

一人称視点のアクションゲームであり、(ちょいグラフックは雑な感じがするものの)世界を冒険するみたいな感じのプレイ内容になっており、まさにVRの本懐!といったようなゲームなのですが、実際のところ個人的にはこれが一番激しく酔って辛かったです。VRに限らずこの手のアクションゲームではよくあることですが、プレーヤーに人間離れした跳躍力があるため激しく飛んで激しく落ちていきます。ゲーム性の点からは別に不自然でもなんでもないのですが、リアルな映像として脳に入ってくると「視覚は動いていると言っているのに、体は動いてない(加速度を感じない)よ?」ということになり、お脳が混乱します。万人が同じ感想を持つかわかりませんが、夢のなかで落下しているという状況に近い気持ち悪さがあります。また、EVE: Valkyrieのような広い空間を高速に移動するのではなく、床や壁などがかなり近くにあり、「視覚が移動している」ということを強烈に認識しやすいことも原因だと思います。ひっとしたらジェットコースターとかが好きな人だとわりと大丈夫なのかもしれません(自分はジェットコースター駄目派です)。あと、飛ぶだけではなく落下を繰り返すということもあって緊張しているのか、このゲームだけめちゃくちゃ手汗をかきました。

ということで、体験としてはなかなかおもしろいのですが圧倒的に消耗が激しく、自分は1日あたり20分くらいのプレイが限界でした。でも刺激的です。

動画再生・デスクトップ表示アプリ

このあたりを試してみました。

www.youtube.com

Windowsのデスクトップそのものやただの動画をVR上の空間に投影するだけのアプリケーションなのですが、これもまたいろいろと可能性を感じます。これまで、VRではないHMDを使った動画再生は映画館のような迫力があると言われつつも、頭を動かすと画像も動いてしまう違和感があり微妙と言われてきた気がします。これらのアプリケーションはデスクトップや動画を仮想空間にうかぶ空中ディスプレイのように表示したり、仮想空間上の壁面に投影したりします。例えばCINEVEOは映画館での上映を模したVR空間に動画をスクリーン投影しますが、Oculus Riftの没入感に加えてわざわざ映像の光が壁に反射するのを再現していたり、当然ながら頭を動かせば他のお客さんが見える、といった演出から本当に映画館にいるような錯覚を覚えます。

f:id:mztnex:20160503121719p:plain http://www.mindprobelabs.com/cineveo_themes.htmlより

CINEVEOはmp4などの動画ファイルを用意する必要がありますが、BigScreenはデスクトップの映像をそのまま表示するので、直接VRに対応していないWeb系のストリーミングサービス(ニコ動、バンダイチャンネル、AbemaTVなど)でも映画館のような環境で再生可能です。また、Whirligigは魚眼レンズ x 2で撮影したような動画を擬似的な3DとしてOculus RIftで見ることができます(この場合、映像の範囲は前方180度に限られていました)

空中ディスプレイにデスクトップが移るので、攻殻機動隊の電脳世界のようにこれで作業できたらカッコいいのに…!と思ったのですが、解像度があまりよくないという問題(後述します)があるため、例えば空中ディスプレイ上でコードを書くというのは現状かなり厳しいのではという状況です。ただ、先述したVRグローブ等と組み合わせることで新しいユーザインターフェースが期待できるため、あるいは現在マウスでやっているようなアプリケーションの作業をVRに置き換えるという時代は来るかもしれません。

その他

その他に以下のようなゲームを試してみました。

InCell VR

InMind VR

www.youtube.com

それぞれVRのサンプルのような位置づけのコンテンツです。ゲーム性は大してないのですが「VRで仮想空間を高速移動する」という体験ができます。

MIND Path

www.youtube.com

あまりのホラー感に開始3分で音を上げました(お化け屋敷ダメです)これは別にホラーというわけではないのですが、あまりに没入感すごいので、暗い屋敷みたいな空間でいきなりゾンビとかが脅かしにでてきたら心臓が止まる自信があります。今後も自分はホラー系をプレイしないですが、逆に好きな人には最高だと思います。

www.youtube.com

MocuMocuDance

MMDのモデルを表示するソフト。まじかで見る等身大ミクさんかわいいです。 Leap motionと組み合わせてボーンの操作ができるようで、はやくも手の動きをセンスするインターフェースとの組み合わせの良さを見せてくれています。

Oculus Riftの課題

さて、散々持ち上げた後でなんですが…ぶっちゃけ結構いろいろな課題があると思います。

お値段

非常に高価だと思います。まず本体が送料込みで94,600円、さらに接続先のPCの最低推奨スペックとしてCPU i5-4590+Graphci Card: NVIDIA GTX970以上を要求してくるので、コアPCゲーマでもないかぎりは少なく見積もっても10万強のPCに買い換える必要があります。よって現状では合計20万円以上の初期投資が必要であり、なかなかハードルが高いというのは否めません。

画質がいまいち

没入感すごい!という話をさせてもらったのですが、よくよく画面をじーっと見つめると結構粗が目立つ解像度として見えます。screen-door effect(網戸効果)というらしいのですが、そもそもディスプレイ部分に眼球が近すぎるため本来の解像度より粗く見えてしまうようです。そういう意味ではふと画像の粗さに気づいて「あ、仮想空間なんだな」と時々思い出すレベルになっています。逆に高い解像度で見えるようになったら現実より現実っぽい仮想空間ができあがるのではと思うので、今後の技術の向上に期待です。

メガネ

当方完全にメガネ野郎なので結構深刻な問題です。構造的には顔に密着するようになっているため、持っているメガネを無理やり装着しようとするとすべからくフレームがへしゃげそうになり、そのまま使うのを断念しました。結局どうしたかというと、ひとまずは昔のメガネを分解してレンズの前におき、無理くり対応しています。いろいろな対応策が考えられてはいるようですが、個人的には生まれて初めてコンタクトレンズの購入を検討しているところです。

f:id:mztnex:20160503000921j:plain こんな感じ。意外と置いただけでもまあまあなんとかなる。

酔う

正直なところ、これが最大の問題だと思います。Windlandsの解説でも書いた通り、そもそも移動がともなうコンテンツだと「視覚情報では加速度がかかっているはずの状態なのに体は加速度を感じていない」というミスマッチが必ずおきるので、体に負担?がかかっているような気がしてきます。ここ数年乗り物酔いや普通のディスプレイでFPSとかのゲームをやって一切酔ったことがない自分でも、ものによっては1時間ぐらいでちょっとキツくなってきます。これはもう人類が進化して三半規管とかがそういう視覚情報と体感加速度のギャップとかに対応するとかしないといけないのかもしれませんが、どうにか解消してくれないかなぁと思う点ではあります。

まとめ

買いか買いじゃないか、と聞かれたらまだ普及期には至っていない、というのが正直な感想です。お値段+諸問題と得られる効果を考えるとちょっと面白そう、というノリで買えるおもちゃではないと思います。しかし、個人的には十分なインパクトがありVRの可能性を大いに実感できる製品だったことは間違いありません。例えるなら、1980年代に給料一月分ぐらいするようなコンピュータを一部のマニア層だけが買って、可能性を感じながらもほそぼそといじっていた黎明期に近いと思います。このOculus Riftが現行の値段・性能でそのまま普及するとは自分も思いませんが、5年後、あるいは10年後にVRというものがなんらかの形で社会の一部で使われているだろう、ということは確信できます。

ということで、Oculus RiftにかぎらずHTC ViveでもPlayStation VRでもいいのですが、ぜひこれらの製品に触れられる機会があれば一度体験することをお勧めします!

『見て覚えろ』の後ろには屍の山がある

www.recomtank.com

ちょうど職場でも新しいメンバーの教育問題がいろいろ議論されているところで、この記事を見て思ったこともいくらかあったのでつらつら書きなぐってみます。

上の人がみんな「俺は見て覚えた」というのは生存者バイアス(の可能性が高い)

どことは言いませんが、マニュアル化された教育法がない世界では確かに「自分は先輩を見て覚えた。だからお前もそうしろ」という言説をよく見かけます。できる上の人達はみんな口をそろえて言うため、それに従えば自分もできる人になれるのか、と思ったり思い込んだりしてします。しかしそれは「上を目指していた人たちが全員そのように上へあがっていた」のではなく「そのような教育方法でも生き残った人たち」なのであり、ただの生存者バイアスに過ぎません。そのやり方についていけなかった人たちがその組織・業界を去っていった結果、残った人たちなのであって、その後ろには屍の山が築かれています。個人的な経験の中でもそういった人たちをいろいろな場面で見てきました。

育てたい人物像をイメージ出来ているか

『最初から教えてばかりだと、考える能力が身につかない』という論もあり、この言葉が完全に間違いではないと思います。ただ、まずこれは程度問題であり、育てたい人物像と設定するハードルの高さのバランスを考える必要があると思います。

例えば本当の超少数精鋭を育てたいのであれば、ほぼ突き放してついてこれた人だけがその組織・業界に残る、ということもあり得ると思います。ただし先程も書いた通り、その後ろには山のような屍が築かれ、その道を志した100人に1人とか、もっとひどければ10000人に1人しか残らない、みたいな話もありえると思います。HxHのハンター試験みたいなものです。貪欲に自分で学習し、人のスキルなどを盗んでいく超逸材だけが残っていくことでしょう。ただし、このモデルは本当に人数を増やす必要が無い場合か、それだけ厳しい道でも志願する人が後を絶たない、といったような状況でなければ成立しないでしょう。

一方で超逸材がいなくてもいいが(いてもいいけど)仕事として100点満点中80点をちゃんととれる人が増えてほしい、という場合だと、全て「自分で勝手に学べ」モデルは非常に相性が悪いと思われます。一般的な企業や組織はほとんどがこちらに該当すると思われます。特に事業などの規模を拡大させたい場合は100人雇って1人しかものになりませんでした、では話になりません。こういった場合は先のブログで書かれていた通り、マニュアル化された作業手順や教育方法があってしかるべきだと考えます。

そもそも「マニュアル化できない」とはどういうことなのか

ちょっと自分のいる業界に偏ってしまいますが、基本的にマニュアル化できない仕事というのは、人によって過程や結果が異なることを許容する 仕事だと考えられます。以下、その例をあげてみます。

  1. 何かを自ら創造するような仕事(システム・ソフトウェア設計、新しい企画の立案)
  2. 前提条件の想定が難しく条件の組み合わせも複雑であり、条件の網羅が困難なもの(トラブルシューティング、インシデントレスポンス)
  3. 試行錯誤しながら進めないといけないもの(新しい機器の検証、探索的データ分析)

確かに上記のような仕事について全てマニュアル化するのはかなり難しいとは思います。しかし、全てをマニュアル化するのは難しいとしても、部分的にはいろいろマニュアル化(ないしは定型的な教育によって身につけた手順によってできるもの)できそうではないでしょうか? 例えばソフトウェアの設計などはどのような道筋でやるべきかという教本はいろいろありますし、トラブルシューティングでもまずはこれをチェックしろ、みたいな初動のマニュアルは作成できそうです。

最終的に人間が考え、発想し、創造する必要のある仕事は確実にあると思います。しかしそのためには、どこからが機械的に作業して(あるいはもう機械に作業させてもいいわけで)どこからが人間の判断の力を発揮しなければいけないか、という線引をすることが重要なのではと思います。

あと、基礎力の必要性などについてもちょっと書きたかったですが、夜更かしが過ぎてきたのでこの辺で。