ふきブログ

fckey's daily impression blog

ロトシリーズの良さからドラクエにハマる2019年

日本男児ならロトシリーズ三部作をやらなければ。30歳になって思い立った。(このブログに辿り着く自分の周りの人達は聡明でサブカルチャーにも詳しいはずなので説明するまでもないと思うがロトシリーズ三部作とは世界観に繋がりのあるドラゴンクエストの1-3作を指す)

結論から言うとDQ1, 2, 3すごい。

最近の3Dフルポリゴンのゲーム、オープンワールドで自由世界の旅が出来るゲーム達と比べるとグラフィックもシステムももちろん見劣りする。しかし、ドラクエ1-3は1986,87,88年に発売されており、すべて自分の生まれる前。 商用のインターネットがアメリカで始まったのが1988年*1。当時はたぶん所謂パソコン通信*2の時代(?)。そんな時代に現代まで通ずるゲームシステム、大人が遊んでも面白い話が既に出来ていた*3

思い返すとゲーム自体は好きだとは思うが、そんなに沢山やったわけでもない。各時代の流行り物はいくつか遊んでおり、小学校の頃にスーパーファミコン*4任天堂64*5、中学になるとPS2は持っていたが、パワプロをプレーすることが多かった。RPGは松野さんの作品が好きで、順番は前後するがオウガバトル64、FFタクティクス獅子戦争、タクティクスオウガをプレーした。スクエニを代表するドラクエは7だけ、FFはリアルタイムで10、かなり遅れて大学生の頃にFF7をクリア*6しただけだった。

映画が好きなこともありRPGのストーリー自体には興味があるがやり込む気はなく*7、そこまで上手くないことや*8、レベル上げが面倒なためプレー動画を追ったり*9シナリオネタバレを読むこともあった*10

最近だと、転職前に任天堂Switchを買い、友人のスプラトゥーンのプライベートゲームグループにも参加していたが気づいたら手を付けなくなっていた*11。しかしながら、最近転職したこともあって気持ちに余裕ができたのだと思う。遅れてきた青春を取り戻すかのようにゲームをする頻度が増えた。ゼルダの伝説 ブレス オブ ザ ワイルド - Switchは素晴らしい。

こんな経緯でふと冒頭の事を思い立った。自分がプレーしたのはスマホ版のドラクエiPadで利用できた。1,2は5百円以下、3も1000円せず安い*12

ドラクエ1はボリュームが小さく、1日もかからずクリアできた。ゲームを始めた瞬間に流れる聞き覚えのある音楽。これを待ってた。最初から最後まで一人旅のRPGをプレーしたのは初めてだった。自分で攻撃して自分で回復。誰も助けてくれない。仕事もプライベートもチームプレー*13で他人に頼ることの多い自分にとっては不安の多い旅。 ソフトウェアエンジニアの端くれとしてプレー中にもゲームシステムの構成を考えて平面でこれくらいの世界なら自分でも作れそうだなと思ったが、これはインターネットもない30年以上前に作られたものだといういことを忘れてはいけない。お姫様を拐ったドラゴンを倒した後に城に帰る前に死ぬとドラゴンが復活し高い経験値を何度も得られるバグをあえて踏みレベルを上げる。フラグをいくつか追加するだけで直すのは簡単そうなこのバグをリメイクしても残しているのはわざとかなと考える。お姫様を連れた状態で宿屋に泊まると言われる「ゆうべはお楽しみでしたね」、竜王に言われる「世界の半分を勇者にやろう」。今まで伝聞でしか知らなかったセリフが実際に使われている。これを見るために限りある大切な時間を使って30年も前のゲームをしていると言っても過言ではない。伝聞でしか知らないものを自分で実際に体験することに喜びがある。

ドラクエ2はシステムがアップグレードされ、3人のパーティーになった。仲間と旅ができ、それぞれ覚える呪文や技が違う。これぞチームプレー。世界は1から100年後。1をクリアした次の日に2を始めたためマップも頭に入っていたが、100年経ったこの世界では多くの街が無くなっていた。世界観の繋がりがあるとやはり面白みが増す。変化から製作者の意図を汲み取れる。

ドラクエ3では職業が追加され、ルイーダの酒場*14ダーマ神殿が追加された。パーティーは勇者、盗賊、魔法使い、僧侶で始めた。ただレベル20にならないと転職はできず、転職後のレベルは1から始まる。転職するには経験が必要で、転職後は戦力にならないひよっこ。現実を思い知らされる。つらい。途中賢者を作ろうと思い、誰が賢者になるべきか迷った。しかしここで戦力ダウンは厳しいと思い結局誰も転職はしないまま進めたが、表世界のラスボスのバラモスが倒せない。レベル25で勇者のホイミ、僧侶のベホイミでは回復が追いつかないため、ここで今回シリーズを始めてから初めてレベル上げを行った。作業的でつまらないレベル上げは本当はしたくなかった。全体のレベルが29あたりになった頃に勇者がベホイミ、僧侶がベホマをつかえるようになりここからの旅は簡単だった。バラモスを倒し、途中主人公の父が火を防げず死ぬのを確認した後*15ゾーマに辿り着いた。ゾーマは歴代魔王の中でも格好良くて好き。「何ゆえもがき 生きるのか? 滅びこそ我が喜び。死にゆく者こそ美しい。 さあ、わが腕の中で息絶えるがよい!」。また聞きたい台詞が聞けた。これぞ大魔王。

プレーしたのはリメイク版で、ゲームバランスは調整されAIバトルも既に導入されているため発売された当時のものとは違うかもしれないがこのシリーズをやってみてよかったと思う。やはりRPGの原点。

1月はこの後に、ロトシリーズの舞台となるアレフガルドを復興する【Switch】ドラゴンクエストビルダーズ アレフガルドを復活せよ、主人公の人生を通して描くドラゴンクエストV 天空の花嫁もやった。ビルダーズは平行世界の話でシナリオも音楽も聞き覚えがありロトシリーズをやったかいがあった。ドラクエ5は花嫁を選んで結婚できることが有名でこれだけでもひとブログ書けてしまいそう。どちらも面白かった。

2019年はロトの世界観とつながりがあるドラクエ11がスイッチでも出るらしい。ドラクエ4,6もやりたい。ドラクエの世界にハマってしまった。

*1:自分と同い年だ

*2:自分は触れたことがない。物心つく頃にはダイアルアップ接続の従量課金制インターネットがあった

*3:著者が十分に成熟していないという話は受け付けていない

*4:星のカービースーパーDXとマリオRPGは名作。リメイクしてほしい

*5:マリオカートはハマった。流行ったスマブラはやっていなかった

*6:チョコボか何かのファンディスクで最強装備を予め持っている

*7:高校までの学生時代は部活の優先度が高く、大学以降は読書や研究、仕事関連の優先順位が高かった

*8:鬼武者は挫折した。負けず嫌いなのか子供の頃はゲームでもとにかく死ぬのが嫌いだった

*9:FF12は動画でストーリーを楽しんだ

*10:バイオハザードシリーズはすべて追っている

*11:参加者は今でも夜な夜なプレーしている。レベルが高過ぎてもう付いていけないと思う

*12:スクエニの回し者ではない

*13:といえば聞こえがいい

*14:六本木に実店舗がある

*15:攻撃は避けまくってたのに火炎攻撃は常に食らっていて強いのか弱いのかわからなかった

節目の年だった2018年

2018年は転職した事もあって自分にとってはとても変化の大きいの年だっので書き留めておこうと思う(あと30代になった)。サルたちの狂宴 上 ーーシリコンバレー修業篇を読んだばかりで文体が引っ張られているかもしれない*1

新卒で入社した投資銀行にはソフトウェアエンジニアとして5年以上勤め、2018年半ばに以前から考えていたITを主軸にした会社に転職をした。新卒の就職活動中に強く興味があった会社が2つあり、片方は新卒で入り今回もう片方に移った形となり縁に恵まれていると感じる。

投資銀行、金融というと外の人からはITは外注しているのだろうとたまに言われるが、自分の居たところは一味違った。社内のほとんどのシステムを内製化しておりITが競争力のエンジンといっても過言ではない環境で、グロバールではエンジニアが約10,000人いた。エンジニアだけでこの人数いるのだから、ある意味IT企業と言ってもおかしくはないレベルの規模だろう。稼ぎは非IT部署に依存していたけど。

ここでは仕事を通してビジネスレベルでの英語、チームでのシステム開発、CI/テスト/プロジェクトマネジメントを含むSDLCなどたくさんのことを学んだ。また、100年以上の歴史を持つ会社で社員の教育にも力を入れており、キャリアデザインやマネージャのマネジメント方法といったトレーニングもあった。世間でもいろいろ騒がれる事が多い会社だが、バランスの取れたキレる人の多い会社だった。

仕事のやりとりは9割は英語で、新卒で入社した頃は旅行で英語を使う程度なら出来るし大丈夫だろうと考えていたが実際仕事となると勝手は全然違い余裕はなかった。インド、イギリスの普段聞き慣れないアクセントの英語が聞き取れないことが少なからずあり、自分の聞き漏らしがチームの損失や自身評価に関わるかもしれないと思うと一人でコールミーティング*2に出るのが億劫だった。このとき一緒にミーティングに加わりフォーローしてくれたチームメイト達には感謝している。1,2年も毎日英語を浴びて働くと早口や独特のアクセントも慣れてきたが、最初からもっと流暢な英語ができていたら新人研修で2ヶ月行ったニューヨーク、ウォールストリートで働いた*3経験ももっと楽しめただろうなと思う*4。 また英語以外にも、とにかくミーティングでは自分の意見を主張する、自分の成果は積極的に主張しないと良い仕事をしていても評価はされないという環境で、謙虚さや慎ましやかさ美徳とされる一般的な日本の文化とは違う価値観の組織であり、英語よりもむしろそちらへの対応に苦労した*5

働き方に対する意識もここではかなり影響を受けた。はじめてのプロジェクトでは、初プロジェクトにも関わらず自分一人がデベロッパー、プロマネにインド人が一人付く*6という体制で正直当初不安が大きかった。働き方の要領がわかっていなかったのもあり結局納期は押しに押し最終的に2ヶ月延び*7、時には23時過ぎまで働く事もあった。 投資銀行というと激務というイメージが強いかもしれないがそれはIBDなどのフロントの話で*8テクノロジー部では20時にもなるとデスク周りからほとんど人が居なくなった*9。当時は大学院生の頃の感覚で遅くまで働いてでも終わらせたらいいんだろうと思っていたが20時以降オフィスに残っている人は正直デキない奴かマネージャーがダメで仕事量のコントロールが出来ていないといった目で周りから見られた。そのため自身も意識改革を行い、後にも先にも20時以降会社に残るのはこのプロジェクトだけだった。 ちなみになぜテクノロジー部門は早く帰れるかというと、基本的に同じシステムをグローバルでみているため問題が長引きそうな場合には次のリージョンに引き継ぐことができるからだ。多くの場合は日本の17時頃にオフィスにやってくるロンドン*10が受け入れ先となる。そのかわり自分のプロジェクトが燃えていたら自分が責任を持って対応しなければならない。 このプロジェクト以降、自分はほぼ毎回19時には飲み会に出られるため友人の中でも本当に仕事をまじめにしているのかという事を度々茶化して言われたが、仕事に慣れたのと、期待値コントロールを覚えて長めの納期を抑えていたからであって*11窓際で仕事がなかったからではない*12

入社当初は主にSDLC周りのキャッチアップに必死で毎日家に帰った後は少なくとも3-4時間は本を読んでいた。やはり学生は一人で開発をすることが多かったためCIを設定することはなく、テストもあまり(まったく)書かずバージョン管理も自分が学生の頃はまだsvnが主流でたまに曖昧なメッセージと共に記録に残す程度の意識だったためとにかく勉強が必要だった*13。最近の学生はそうでもないかもしれない。

以下の本は当時読んだ本の一部で、古いものもあるがソフトウェアエンジニアとして今後長い人生を歩もうと思うなら今でも読む価値があると思えるもので、勉強熱心そうな新人にもオススメしていた。

デザインパターンは学生時代から触れていたが当時はその華麗さに驚いた。その他にもソフトスキルではTeam Geek ―Googleのギークたちはいかにしてチームを作るのかは必読だと思う。内容にとても共感でき、エンジニア上がりのマネージャーがどういう背景でものを考えるという部分は、仮に自分のマネージャはなぜ時にイケてない判断をするのかという疑問が生まれたときに手に取ると心の平穏に役立つ(かもしれない)。また、英語で仕事をするのに慣れない人には英語のお手本――そのままマネしたい「敬語」集を勧めている。普段の仕事で使っているものがそのまま本にかかれていて実用的だ。

もしここまでこのブログを読み進めた物好きな人がいて本に興味があるなら以下の記事も見てみるといいかもしれない。

社内のIT環境については、グローバルで人を厳選して集めているだけあり社内のITの水準はとても高かった。金融分野でミッションクリティカルなシステムが多いこともありbleeding-edge的なリスクは取れないためレガシーなツールやシステムも多く残っていたが、スクリプティングとDBを融合したオリジナルの言語や*14、JIRAやJenkinsとオリジナルのデプロイフレームワークを統合したSDLCのツール、その他にも数々のオリジナルのフレームワークが多々あり、とにかく社内オレオレフレームワークの多い会社だった*15ソースコードのレポジトリはチームごとにわかれていたため車輪の再開発も多く、SDLCの質もチームにより全然違い*16効率的とは言えないが、オリジナルのVCSツールで巨大なコードベースのシングルレポジトリとして管理するGoogleFacebookのような会社と比べたらより他の会社や環境でも適用しやすい一般的な形で模範的な仕組みを学べたのではないかと思う。

このように社員も技術水準もレベルが高く、ワークライフバランスも良い会社で*17働いていてどうして辞めるのかと考えるのが普通かもしれない。理由はいくつかあったが一番大きかったのが個人的には長期的なキャリアを考えるのが難しかった。 中には20年以上働いている人もいて、運が良ければ長く続けられるのだが、やはり外資投資銀行ではレイオフが付き物で数年働いただけでも大きなレイオフの波が何回かあり、またチームをまるごとインドやシンガポールに人を移動するという風潮もあった。 実のところ社員からしたらレイオフは必ずしも悪いものではなく、知る限りすべての人が次の転職先をすぐに見つけており、一定の期間働かなくてもお金が貰えることもあって冗談で早くレイオフになりたいなどと言う人も居る程度のものだ。しかしながら、転職の市況はその時々で違い、レイオフがあるタイミングで良いポジションが空いているとは限らないため*18自分はそのコントロール出来ない部分が好きではなかった。 また、社内独自フレームワークにどっぷり浸かってしまっていた場合には外部からの評価にも不安がある*19。 さらに、入った年次やチームの割当によって昇給や昇進の容易さが違いあからさまに違い、2000年台前半に入社してリーマンショックを乗り切った人たちの中には凄い待遇の人も居たが、自分の考えでは今後業界全体的に成長は見込めず*20、本社レベルも含めて組織に疑問を抱くことが多くなった事が大きい。 それ以外の部分では、結局投資銀行では結局IBDやトレーダー、セールスなどのフロントと呼ばれる人たちが稼いでおり、給料もパワーバランスも彼らが断然上であったため、どうせエンジニアとして第一線で働くのならエンジニアが表立って活躍している企業に行きたいと思ったのもあった*21

現在は転職して数ヶ月経ったが、今の所新しい環境には満足している。 誤解無きよう一言付け加えるが、前職は今でも最高な職場の一つだと今でも思う。新しめのシリコンバレーの会社はマネジメントを控えめにしていたり、社員のリテンションのため過剰に社員の自由を許すところがある。今後職場を変えないとは限らない*22事を考えると、前職は一般的な組織形態をより洗練され合理的な形で運営をしており*23、それを間近で見られたのは貴重な経験だと思うし、今の時代にもう一度就活をするとしても新卒では前職にまずは入りたい感じるほど学んだことが多かった。

今後30代を突き進むにあたり5年後10年後自分が何をしているのか正直なところ読めないが*24、数年は今のポジションで勉強をし、アウトプットの質も高めていきたいと感じる次第だ。

*1:GSを辞め起業した後にFBで働いた人の自伝小説。とても面白い

*2:IP電話をヘッドセットを利用して行うが音質がとても悪い

*3:正確には住所はウォールストリートではないらしい

*4:研修中はお金をもらった人生の夏休みという感じで毎週末ボストン、ワシントンDC、ナイアガラといった主要都市に旅行をした。最近は不景気で2週間まで短縮されたらしく不憫である

*5:私生活でも自己主張が強くなった気がする

*6:イギリスアクセントのしゃれた話し方をしめちゃくちゃ頭の回転が速い。このあとよく一緒に組むようになった

*7:言い訳をするわけではないが唯一UAT環境構築方法を知っているプロマネがUAT直前に2週間のハネムーンを取ったのにはビビった。休みやすいいい会社である

*8:最近は働き方改革でマシにはなっているらしい(表向きは

*9:ロンドン、ニューヨークを相手にするため夜のコールは多く家から働く人は居た

*10:冬は1時間遅い

*11:意外なことに納期の設定は驚くほど緩く、社内プロジェクトのためと思われる。規制当局の案件は結構タイトスケジュールのものが多い

*12:少なくとも自分はそう信じている

*13:社内のVCSツールは2018年で未だにsvnだった

*14:うまくグーグル検索すると情報が出てくる

*15:当時はこんなもの社外で使えないじゃないかと嫌っていた

*16:チームによってはテストカバレッジ90%を着るとビルドが壊れるが、また別のチームは全くカバレッジを見ていないこともある

*17:更に言うと一般的なIT企業よりも給与水準も高い

*18:そもそも大規模レイオフがあるときは市況はだいたい悪い

*19:実際のところ新しい言語やフレームワークもすぐに習得する人が多いためあまり問題ではないと思う

*20:入社以来毎年"昨年は業績が良くなかったためボーナスはこれだけ"というコメントを聞いていた

*21:転職したからといって彼らの給料を越せるわけではないが

*22:自分で作れたら最高だけど

*23:そのため必ずしも社員に優しいとは限らない

*24:実は前職の頃にも一度起業を考えYCombinatorに応募したことがあるが採択されず、技術的にも難しかったため断念した

日記 20180627

本日の出来事

ラウンド振り返り

今日のラウンドは48 (15) - 49 (16)のトータル97 (31)。初見の難し目のコースで激しい風の中100は切れたが友人は90を切っていたので改善の余地あり。短い距離のアプローチはパターのように打つ型から転がす型に戻したらカップをかすめることも2回あり感触が良かったため継続しようと思う。 パッティングも悪くなかった。

改善点は以下。

  • ドライバーの安定
    当たりは悪くなかった。スライスではないが球が右に行く傾向があった。

  • ライの悪いラフに入ったときのリカバリ
    打ちづらい場所に入ったら無理してグリーンを狙わず、短くても良いからフェアウェイに戻す努力が必要。

北海道旅行 20180620-20180622

有給消化期間に北海道旅行へ行ってきた

  • 1日目

  • 2日目

    • アサヒビール北海道工場
      ビールの製造過程を見てきた。途中で原料の大麦を食べたが、ピーナッツみたいな風味で意外と美味しい。 ビールの上手なグラスへの注ぎ方は以下の通りらしい。最初に作った泡がビールの酸化を防ぐ。

      1. グラスを立てて注いで泡を作る
      2. グラスを傾けてビールを注ぐ
      3. グラスを立てながら仕上げる
    • 昼ごはんは回転寿司
      観光客に人気のチェーンらしい。こぼれ系がフォトジェニック。

晩御飯のあとはバーへ。オリジナルカクテルが豊富で面白い。
https://tabelog.com/hokkaido/A0101/A010103/1000001/

  • 3日目
    • この日は朝から余市蒸留所へ。2年ぶりに来たら以前はテイスティングバーで飲めた余市20年や鶴17年がなくなっていた。余市12年や竹鶴21年などを飲んだがやはり余市は抜群に美味しい。

日記 20180614

今日の出来事

  • 晴れ
  • 1日中黙々と読書

興味

scikit-learnとTensorFlowによる実践機械学習の続き

  • Regression
    • Liner Regression
      1時変数のシンプルな回帰。多項式回帰をScikit-learnで使用するにはPolynominalFeatureを使用。
    • Regularized Liner Model
      過学習を緩和するには正規化が良い
      • Ridge
        線形回帰のコスト関数にハイパーパラメータを導入しモデルの分散を下げる。
      • Lasso
        Ridgeと同じようにコスト関数に正規化項を加えるがノルムはl2ではなくl1。重要性の低い特徴量の重みを取り除きやすい。
      • Elastic Net
        RidgeとLassoのハイブリッド。Ridgeは良いデフォルトだが、意味のある特徴量は一部だと思われるときはLasso、インスタンス数より特徴量の数が多い場合にはElastic Netが良い。
    • Gradient Decent
      コスト関数を最小にするためにパラメーターを繰り返し操作する最適化アルゴリズム
      • Batch Gradient Decent
        ここのモデルパラメータについてコスト関数の勾配を偏微分で計算。
      • Stochastic Gradient Decent
        BGDはすべての訓練セットに対し計算を行い時間がかかるため、無作為にひとつのインスタンスを選び出し勾配を計算する手法。学習率を徐々に小さくすると良い。
      • Mini-batch Gradient Decent
        一つのインスタンスではなく無作為に選んだ小さな集合を使う。GPUを使用するとパフォーマンスがあがる。SGDより局所解にハマりやすい。
    • Logistic Regression
      シグモイド関数を用いて確率を算出する。分類器として使用できる。
    • Softmax function 複数クラスへの分類確率を算出するのに使用できる。

以前ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装を読んだ時に勾配法やSoftmax関数が出てきてディープラーニングで活用されているのは理解できたが、結局伝統的な手法からの応用なので基礎、成立ちからキャッチアップしていくべきだと感じた。

日記 20180613

今日の出来事

  • 晴れ
  • 学生時代の先輩と虎ノ門ヒルズで立ち食いそばランチ
  • 友人と六本木で銀だこを食べた後にシーシャバー

興味

  • Classifier - scikit-learnとTensorFlowによる実践機械学習の続き
    • Binary Classifierは Stochastic Gradient Descent (SGD), SVM, Linear classifiersが有名
    • Multiclass ClssifierはRandom Forest, Naive Bayes が有名
    • 分類器のパフォーマンスはConfusion Matrixを主に使う
      • precision = TP/(TP+FP)
      • recall = TP/(TP+FN)
      • F1 score = TP/(TP + (FP+FN)/2)
      • F1 scoreが高いことが必ずしも是ではなく用途によって閾値を設定する
      • バランスを見るのには precision-recall-curveまたはROC curveを使用

日記 20180611

1日の出来事

  • 豚肉、ネギ、卵、の炒め物を調理

興味

今日の本

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

最近でた機械学習系の本の中で一番面白そうなのを買おうとしたがどこも売り切れだった。 Safari Booksで見つけたためとりあえず英語版を読み進めている。

以下新しく分析を始めるときのチェックポイント

  • Frame the problem and look at the big picture.

  • Get the data.

  • Explore the data to gain insights.

  • Prepare the data to better expose the underlying data patterns to Machine Learning algorithms.

  • Explore many different models and short-list the best ones.

  • Fine-tune your models and combine them into a great solution.

  • Present your solution.

  • Launch, monitor, and maintain your system.