ポエム
ヒアリング
振り返り
エンジニア
メタ思考

異世界に転生しなくてもチートで最強エンジニア

More than 1 year has passed since last update.

ごきげんよう。ex-dwango (元ドワンゴ) のerukitiです。第2のドワンゴ Advent Calendar 2016の12/11です。去年はElectronを探す日常という何かごちうさっぽいものを書いたんですが、今年は異世界転生ラノベっぽい何かです (ラノベじゃないです)。

告知

冬コミ(C91) 2016/12/29 (1日目) 西め18b
東京ラビットハウス
第7開発セクションに居候

10年落ちのFITを高速燃費24km/Lに改善するハックとか、Yoshii9 を1000万円クラスと殴り合えるレベルに音質改善するハックと、プロジェクタの映像品質を改善するハックする本を出します。オカルト?怪しい?それは実際にブースに来てあなたの目で確かめてみてほしいです。

序文

ようこそここは転生部屋、いわゆる異世界転生ラノベで冒頭で描かれる謎の白い空間というヤツだ。かわいい系や美人系の女神様ではなくムサいおっさんだが我慢してくれ。さて、君は転生トラックに撥ねられて死んだわけだが・・・、おっと、なぜ死んだのにまだ生きてる(?)のかだって?君は善良なエンジニアだったのでQiita最高神が君を転生させる事に決定したのだよ。

転生をする時には何らかのチートを与えるのがお約束だ。君は最強のエンジニアになりたいのだろう?くくく、いいだろう。最高のチートを与えよう。俺は太っ腹なのでチート全部入りでいこうと思う。全部だ。

長々やっても仕方ないので早速転生させよう。転生先はどこかって?それは現世だよ。現世の君に生まれ変わるのだよ。君に与えたチート能力に関しては以下の記事で確認してくれたまえ。それでは良いハックを。

本題

Qiitaを小説空間にするのは何事か!!!と怒られそうなので、以後は普通の文体で。

ちまたにあふれている異世界転生チート物だが、実は異世界転生なんてしなくてもチートなんていうのはわりと簡単に身についてしまうし、最強のエンジニアになるためにはチートが必要だというのが今回の記事の内容だ。

異言語理解

まずは軽いネタとして異言語理解というものでいこう。異世界転生でどうしても問題になるのが異世界の言語をしゃべる人とどうやってコンタクトを取るかだ。一部の作品だと、言語を習得するところから始まるようなものもあるが、たいていの場合はご都合主義めいた翻訳魔法・翻訳チートをかけられることが多い。

現代日本においても、英語や中国語、さまざまな異言語と接しているわけだが、異言語を覚えてない人は、そういう言語に接しないという手段を取ることも多いだろう(英語嫌いな人けっこういるよね?)。だが、それはあまりにももったいない。特にソフトウェアエンジニアにおいては重要な情報源をつぶしてしまうことになる。たとえばJavaScriptのような進化の早い言語の場合、言語自体も、ライブラリもフレームワークもツールチェインも進化が早いのでいちいち日本語の情報源を見ていては話にならないのだ。JavaやPHP, Ruby他のあらゆる言語においても海外の情報源は重要だ。

では異言語で書かれた情報源を使いたい場合にどうすればいいのか?お手軽な手段としてはGoogle翻訳だ。最近ではニューラルネット翻訳が実現されて、今までよりもなめらかな翻訳が可能になっている。Google Cloud Translation APIを使えばAPI経由で翻訳をすることも可能だ。これを活用しない手はない。どうせ技術者なら、情報収集も技術を駆使してある程度を自動化しちゃえばいいのだ。RSS/Atomとクラウド翻訳APIを組み合わせれば、最先端のニュースも日本語で読める。英語リソースに全く触れない普通の凡人エンジニアからしたら十分なチートだろう。さらに読み上げ系サービスを使って読み上げをしたり、いっそIoT機器としてPCに向かってなくても簡単に情報収集できる手段を用意しても良いかもしれない。

知識チート

さて、現代の知識をもって、中世ヨーロッパ並みの文化レベルの異世界に行くとどうなるだろうか?答えは知識チートだ。つまり知識そのものがチートとして働くのだ。異世界転生ラノベでは現代の知識を使って火薬を作ったり、銃を作ったり、マヨネーズを作ったり、医療革命を起こしたり、高炉を作ったり、まぁ色々ある。

我々エンジニアにとっての知識チートはどういうものだろうか?たとえばあなたが会計の知識を持っていたとする。大半のエンジニアには会計の知識なんて無いのだから、会計の知識が活きるシステムに携われるチャンスがあれば強い武器になる。同様の物には税金、法律、科学、医学、薬学、物理学、経営学、物流など様々なものがある。

タイムマシン経営というものがある。たとえば日本が欧米に比べて三年遅れていたとする。この時欧米のビジネスモデルを日本で使えば3年未来にいるのと同じ事になる、というものだ。経営におけるタイムマシン経営の是非はさておいて、エンジニアの観点で見ると英語で書かれた各種情報、論文、ソースコード、そういったものは欧米の人間にとって当たり前だが、残念ながら日本のエンジニアは知らないことも多い。他の日本人が知らない情報にこそアクセスすればそれは明らかに強みになる。先ほど説明した異言語理解のチートを駆使すれば良い。もちろん技術情報に限らず異言語を身につければチャンスは莫大に増える。

また何かしら、他のエンジニアが持っていないであろう知識を一つ二つでも身につけておくべきだ。それはしょうもないものでもいい。アニメが好きならアニメに関する知識でも身につけていれば、それを仕事に活かせるタイミングはくるかもしれない。引き出しは多いに越したことはない。仕事一辺倒だと人生の難易度は上がってしまう。色々と趣味に力を注ぐこと、色々な世界を渡り歩くことをお勧めしたい。

リミットブレイクのチート

それでは残り二つ本命のチートを説明していこう。

人は何かしら制約に縛られている。異世界転生ラノベでは、たとえばレベルアップの上限(レベルキャップ)だったりスキル上限だったり、ステータス値の上限だったり、何らかの「これ以上は到達しえないもの」を打ち破るチートが登場することがある。もちろん、現実世界においても人には成長限界というものがある。いや、現実世界においてはたいていの場合は「あると思い込まされている」だけだったりするのだ。成長を妨げる一番の要素は、その人の思い込みだ。思い込みを壊せれば人は簡単に成長できる。そしてこれを始めるのに遅いというものはない。

それでは具体的にはどうやればいいのか?

まずヒアリングが一番の近道で万能なメソッドだ。人に話を聞こう。驚くほど多くのエンジニアは人の話を聞かない。コミュニケーションに恐怖やコストを感じる人が多いのか、聞かずに当て推量をやってしまうのだ。推測が外れた場合手戻りなどを含めて、人に話を聞くのよりもよほど多くの時間を無駄にしてしまうのだ。顧客、チームメンバー、上司、部下、隣のチーム、色々なところから話を聞こう。

とにかくありとあらゆる一次情報を大切にしよう。ヒアリングもそうだが、実際に現場というものに触れる、論文を読む、ソースを読む。最も高い解像度で一次情報に触れるようにしよう。

実はこの二つを徹底するだけで、思い込みを壊すことができるようになる。そうすれば後は成長がたやすくなる。

経験値チート

一部のコンピュータRPGのスキルの中には経験値取得効率や成長効率を向上させるたぐいの物がある。同様に異世界転生のチートでもこの手のチートは花形として扱われる。普通の人よりも早いスピードで成長しなければ描写がダレるからだ。喜んでほしい。経験値効率を上げるチートは、何も異世界転生の専売特許ではなく現世においても使用可能なチートなのだ。今、知識と経験を持ってるけど成長しない人と、知識と経験を持ってないけど成長速度が著しい人がいたら、今はともかく将来的には後者の方が強くなるのは間違いない。経験値チートを覚えれば誰でも後者になれる。

僕がお勧めする最強の経験値チートスキルの一つにメタ思考というものがある。これは思考そのものではなく、思考をどうやって効率的に成し遂げるかを考えるというもの、一段メタ側にいくというものだ。これを身につけると進化速度が段違いになる。あるときに間違った考えを抱いていたとしても、それを修正すればいいだけなのだから、日々進化し続けられる。

ある対象物を直接いじるよりも、一段メタ側にとらえるというのは、プログラミングにおいて重要なスキルでもある。これはどういう事か?直接データをいじるよりもラッピングして抽象化した方がいいとかそういう話だ。泥臭く、いちいちローレベルでデータを操作するよりも、データを間接的に操作する方がよっぽど強い。間接操作のさらに間接操作、のように抽象性の高さを自由に扱えるようになればプログラマとしては高みに到達できる。コンピュータゲームのAIなんかも行動パターンをダイレクトに記述 (Scripted AI) してた初期に比べて、世界の状況のモデリングとそれに対する思考を分離したり、より抽象化してアルゴリズムを組み合わせるというものに進化していっている。ダイレクトに物事をとらえるだけだと大体の場合においてはたいしたことはできない。一段でも二段でもメタ側にシフトする事で爆発的にレベルを上げる事ができるのだ。抽象と具象を自由自在に渡り歩けると強い。そしてこれは万物に応用が効く。

さて、メタ思考の習得方法はひたすら修練するしかない。お手軽チートとは異なりスポ根で申し訳ないが練習あるのみだ。練習方法で一番手っ取り早いのは議事録を取ったり、まとめを書いたり、メモを取りまくるなど、とにかく文章を書くことだ。Qiitaに記事を書く、同人誌を書いて技術書オンリーイベント 技術書典2 (2017/4/9)にサークル参加するのを目標としてもいいだろう。僕は前回の技術書典でElectron本を書きおわった時に自分の中で大きな手応えを感じたものだ。in / out / compute のサイクルをうまく回し続けるようにしよう。

振り返りも有効なメソッドだ。メタ思考というのは思考の方向修正をするのだから、思考を振り返ってみるというのは当然効果的なのだ。タスクの振り返り、プロダクトの振り返り、書いたコードの振り返り、設計の振り返り、様々な段階・タイミングで振り返りをすればいい。振り返りの方法は色々あるだろう。前述のように文章に書き出すというのは二重の意味で良い。別にロジカルにやらなくても、感覚的・直感的に振り返ればいい。それだけでもメタ思考を鍛えるという意味では効果がある。むしろ、感覚的・直感的に自分の行動や思考を見ることができるようになった方が良い。慣れてきたら一人KPTしてみたり、ホワイトボードを使って自分の状況把握と整理をしてみてもいいだろう。家の壁が開いてるならAmazonで1,000円前後売っているホワイトボードシートを壁に貼って、付箋とホワイトボードマーカーで自分を可視化してみよう。

仕組み作りというものがある。手作業でしていた事を仕組みにしてしまえば効率向上と安全性向上・リスク低減などができる。仕組みだけではなく機械化・自動化ができれば圧倒的に労力を減らすことができる。エンジニアの仕事はこの仕組み作りそのものだ。システムを作る、仕事の仕組み作りと自動化で改善する、マネジメントだって仕事や人間関係の仕組み作りが大切だ。

優れたエンジニアの生産性が凡人に比べて圧倒的に高い理由は、物事をメタレベルで扱えるという点にかかっている。メタレベルで物事を扱えない人間の生産性なんてどう頑張っても10倍に到達できないだろう。でもメタレベルで物事を操作できるようになればそんな制約条件をぶっ壊せる。全力で身につけるべきだ。

三行で

  • ヒアリング
  • 一次情報
  • メタ思考

とりあえずこの三つを意識してチートを身につけて明日からあなたも、めざせ最強エンジニア!!

告知

冬コミ(C91) 2016/12/29 (1日目) 西め18b
東京ラビットハウス
第7開発セクションに居候

10年落ちのFITを高速燃費24km/Lに改善するハックとか、Yoshii9 を1000万円クラスと殴り合えるレベルに音質改善するハックと、プロジェクタの映像品質をハックする本を出します。オカルト?怪しい?それは実際にあなたに本を読んでもらって確かめてみてほしい。

おまけ

ここ数日仕事で浜松に滞在してるんですが、RAKU SPA Cafe 浜松(らくスパカフェ)|極楽湯 はこの世の天国です。炭酸泉とジェットバスとジェットバスと養命酒風呂などの温泉も最高なんですが、ヨギボーまみれの休憩スペースとハンモックと秘密基地が人を駄目にしすぎてこの世の極楽なのです。というか今秘密基地で溶けて駄目になりながらこの記事書いてます。漫画読み放題だし、温泉 → ヨギボー → 岩盤浴の無限ループを一日繰り返して1,190円とか意味がわかりません。この世の天国は浜松にあった。

横浜にも店舗あるみたいだし、エンジニア諸兄、raku spa で hack というの考慮してみてはいかがでしょうか?