ソーシャルゲーム業界から去る事にしたこと。5度の転職で得られた経験とその結果。

何者にもなれないエンジニアこと@teitei_tkです。
会社のAdventCalendarが埋まってしまったので、イジケつつ自分の記事を書こうと思います 。

この記事は転職アドベントカレンダー2016の5日目です。

で、その何者さんは誰よという話ですが、
ソーシャルゲームの開発をしている1エンジニアです。いや、していました。か。
IT業界歴は6年ほどで、3年はWebサービスの会社。
次の3〜4年はソーシャルゲームの主にサーバサイドをしていましたが、
先月からfreee株式会社というところに入社し今ではBtoBのWebサービスを作る仕事をしています。

teitei-tk.hatenablog.com

宣伝ですが、freeeではエンジニアを募集しています。
転職をお考えの方や、遊びに来たいという方はぜひご連絡ください。
jobs.freee.co.jp

2016/12/2 現在業界歴6年で5社目なので、俗に言われるジョブホッパーに入るかなと思います。
で、何を書こうかと悩んだんですが、
自分のキャリアの中では長年勤めていたソーシャルゲーム業界をなぜ去るのかという話と、
ジョブホッピングをしてくれそうな人達にひと押しするような事、あるいは止めるような事を書こうかなと思います。

なぜソーシャルゲーム業界から去ったのか

前の会社に転職する前からソーシャルゲーム業界から去るかを悩んでいた。
その理由というのが、2〜3年ほど前の状況の話になるが、 ある一定以上の会社じゃないとこの先は業界では生き残れないと思っていた。条件としてはこんな感じだろうか。

  1. ある程度の開発資金を持っている。
  2. コンシュマーゲームの開発経験がある人がいる。
  3. ゲームを作ることが出来る組織がある程度出来ているか。

これ以外にもいくつかあるけどざっくりはこんな感じだ。

前職から内定を頂けた際には自分が最低限思っていた条件を持っている会社から内定を頂けたということで、
ソーシャルゲーム業界でまだやっていくかと思ったのと、
前前職でまだやりきれていないという気持ちが大きかったので入社を決めたが、
前職に入社してから今までで色々状況がまた変わったなと思った。

上位ランキングは固定されはじめていて、
どれだけ良いものを作ろうがユーザーに届く確率は年々少なくなってきている。
開発期間は年々伸び続け、
数年前のゲーム1本の開発期間半年〜1年ほどであったものが、今ではゲーム1本の開発期間は数年はザラ。

開発費はもはや家庭用ゲームを超え、1本数億と言った単位。
それでもユーザーに届く確率は大きく見積もっても3割程度。
リリース後に改修していくという選択肢もあるが、商業的に成功していない限り、大きな確率でクローズは免れない。

仕方ないことだし、当たり前の事だと思うし、市場的に健全な事だとは思う。
要は自分の実力が足りなかっただけだろう。

自分としてはゲームという皆が楽しめるサービスでユーザーに価値を届けて行きたかった。
が、関わるゲームタイトルの成長が伸び悩み、
思うように価値を届けられぬままクローズになってしまうと悩みを持っていた。

商業的に成功しているプロダクトに携われれば大規模トラフィックを捌く技術を得ることや、
多数のユーザーに価値を届けられるだろうがそれも中々難しいところかなぁ。
(商業的に成功したプロダクトならではの悩みがあるというのも知ってはいるが。

それだけならどの業界も同じ話だ。競合相手が居ないのは不健全な事だし、
何より多様性は善だと思っている。
それ自体は良いが状況がまた変わってきたかなと思った。

ここ最近はUnityやCocos2d、Unrealと言った俗に言う
クライアントサイドの技術も持っていないと今後は生きていけないなと思った。
実際ゲーム開発はそちらの人材のほうが必要とされており、
自分のようなサーバサイドエンジニアは
クライアントサイドの技術を習得しないと今後数年で食っていけなくなるなと思っていた。
それを習得できないとは思わないし、
実際にUnityやCocos2d-xは書いていた。(正確には触れるレベルだが)

それらを習得しソーシャルゲーム業界で生きていく道も考えたが、
UnityやCocos等を書くよりも、Webの技術を活かしていきたいと考えていた。
元々ソーシャルゲームをやっていたのも
インターネットとゲームを組み合わせて何か価値を届けることができると思ったからだ。
が、ここ最近は上記にも書いたようにインターネットを使った要素というよりも、
3Dやグラフィック、サウンドといったコンシュマゲームに近い物が重視されるようになってきた。

と、ソーシャルゲーム業界Disに近いものを言っているが、ゲームを作ること事態は好きだ。
ソーシャルゲーム(笑)と馬鹿にされることも多いが、
1当事者としては、価値があると判断してくれたら月に500円ほど課金してくれれば良いなと思っている。
それに自分が携わっているゲームを電車の中でやっている人を見ると感無量である。
ユーザーに向けて時間を割いてくれてありがとうと言いたいぐらいだ。
ココらへんの運営とユーザーとの境目はもう少し縮めても良いと思う。(biz側の都合はどうかはさておき。

時間は有限だ。自分の考えと乖離している事を今後やっていくのもどうかと思っていた。

その時にこの台詞を読んで悩んだ事に答えを出したことを覚えている。

「生活するための仕事
やりたくなくてもお金のために割り切ってやる
頑張るのなんて意味のないって言う人もいる
でもそれは周りに失礼でしょ?」

「視聴者にってことですか?」

「熱量をもって奮闘する仲間たちによ」

「画家とか個人戦ならそれでも良いと思う でも膨大なお金・クライアント
たくさんの人を巻き込んでチームでゴールに向けて走る いいものを作りたい
楽しんでもらえるものを作りたい
そう思う人には腹立たしく思う」

「やる気がないならこの場所から早く立ち去ってくれ」

西荻窪ランスルー1巻より。

辛辣な言葉だな。という印象だったがこの台詞をきっかけに転職活動をし始めた。
今後も一生ゲームを作っていける気持ちと自信は無かったからだ。

キャリア的にはソーシャルゲームのキャリアで進んでいったほうが
今後長い目で見た際には良いのだろう。
所詮漫画の世界の台詞だ。世の中は綺麗事では済まないも多い。
いや、済まないことの方が圧倒的だろう。

そして転職活動を始めた。

その際に弊社と出会い、転職を決意しソーシャルゲーム業界から去ることを決めた。

これを読んでいる人からすると逃げたと思われても仕方ないだろうが、
このままダラダラとソーシャルゲーム業界に居るよりも変化する道を選ぶことにした。

生き続けるという事

ITエンジニアなら転職する人が多いだろう。自分も何度も転職した口だ。
ありがたいことに今の会社はとても居心地が良く、
仕事内容も会社のミッションも共感できているので、当分辞めるつもりはない。

が、この世に絶対が無いように、今後何が起こるかは分からない。

基本自分は最悪の事態を想定して人生をコントロールするように心掛けている。
ここでいう最悪の事態とは、キャッシュ(お金)が尽きること。 実家暮らしで良いのなら、キャッシュが尽きても何とかなるだろう。
が、自分のように地方を出て東京で一人暮らしをしている人間には中々難しい。

人間、生きていくことにはお金が必要だ。
そして生きることは欲求を満たしていくことだと自分は思っている。

マズロー先生は言いました。人間には5段階の欲求があると。

詳しい話は下記のリンクに任せる。 欲求段階説 (マズロー) - Wikipedia

簡単に言うと下記の5段階の欲求がある。

  1. 生理的欲求 (Physiological needs)
  2. 安全の欲求 (Safety needs)
  3. 社会的欲求 / 所属と愛の欲求 (Social needs / Love and belonging)
  4. 承認(尊重)の欲求 (Esteem)
  5. 自己実現の欲求 (Self-actualiza)

自分の周りを見渡すかぎり、ほとんどの人が3 ~ 4に属しているのではないかと思っている。
が、キャッシュが無くなると段々と欲求の段階が下がっていくのが感じられた。

自分は一時期鬱で収入が入らない生活が続いていた。
手元のキャッシュは半年分はあるのでそれぐらいは休むことはできるだろうと思っていた。 が、療養して時間が経つたびに欲求の段階が下がっていくのが感じられた。

いつまで休めるのか。 (社会的欲求 / 所属と愛の欲求)

いつ職を失うのか。 (安全の欲求)

いつまで今の部屋で暮らしていけるのか。(生理的欲求)

いつ食事を取り続けられるのか。(生理的欲求)

そしていつまで生きられるのだろうか。(生理的欲求)

と言った感じだ。
人によっては大げさというかもしれない。が、あの時はそんな事を考える余裕すらなかった。

生きていく上でお金が必須だ。金が無くても生きていけると本気で言える人は、 キャッシュが入る見込みがない状態で徐々に減っていく貯金に恐怖し、
夜寝れずに今のままで本当に生きていけるのだろうかという日々を過ごしたことが無いから言えるのであろう。

前置きが長くなってしまったが、とにかくお金は大事という話である。
副業などで他に収入源があれば良いのだろうが、
やはり生活の大半を占める本業でお金が入ってくるの事が割合としては大きいし、そうであってほしいとも思う。
なので会社からいつ切られても良いように
(いつキャッシュが切れても良いように)転職準備はしておくのが大事かなと思う。

フリーランスという選択肢もあるだろうが、自分は経験したことが無いので、他の人の意見に任せるとする。

弊社の人からは、こいつすぐ辞めるんじゃという発想を持たれそうだが、
ありがたいことに今の会社はとても居心地が良く
仕事内容も会社のミッションも共感できているので、当分辞めるつもりはない。(大事なことなので二度目

私が転職した理由

というわけで生き続けるという事を書いた。
生きるという理由以外にも転職活動の準備をしておく理由はある。
それは組織に縛られないためだ。

会社の意思決定や経営者・役員の意見がどうしても受け入れられない時はどうするだろうか。
Twitterで愚痴を書くなり、自分で組織を改善するなりと色々道はあるだろう。
自分ならその組織から抜ける道を選ぶ。

会社で経営者や役員、社内でのステークホルダーに歯向かうことは
その組織での居場所を無くすということに近いと思っている。
その組織に必要な人間であれば生きることが出来るだろう。
組織を運用していく上で切りたくても切れないからだ。
が、自分を含めた大多数の人間はそういう人に成ることは中々難しいと思う。

ありがたいことにエンジニアという職業は勉強し、
そのアウトプットを目に見せておけば自分の価値を見せることが出来る職業だ。

それだけの為にアウトプットを出すわけではないが、
自分というエンジニアの価値を評価してもらうためにアウトプットを出すことは大事だろう。

ここで言うアウトプットとはOSSを書くことやイベントに登壇するだけではない。
もちろん、それらも必要だろうし、求められていることの一つだろう。
が、組織でのアウトプットが出来ていることが前提なのではと思う。
技術も大事だが、それはあくまで手段であり目的ではない。
手段と目的を逆転してはいけないと思っている。

幸いな事に今はどこも人手が足りていない。
腕があればそれで生きていけるだろう。
将来のことは分からないし、30や40に差し掛かるとどうなるかは分からないと言ったリスクを抱えるが。

全て遠き理想郷

5回ほど自分の命(キャリア)を削って理想郷を探してみて思った事は f:id:teitei_tk:20161129213037j:plain

理想郷が無いと悟った自分が出した結論としては、
どれだけ自分の価値観や条件に近い会社を選べるか。という事だと思っている。
自分の場合で言うと、

  1. サービスを運営できるほどのキャッシュ(命)を持っている
  2. その業界でトップシェア或いはそれを狙える
  3. (技術的 | ビジネス的)に優秀な人が居る
  4. インターネットを使っているビジネスをしている
  5. 小さすぎず、大きすぎない規模
  6. その会社のビジョン(理想)に共感できる

と言ったところだろうか。
それ以外の事は対して問わない。
例えば書く言語がPHPだろうがRubyだろうがGoだろうがはたいした問題ではない。
そこは自分にとって選ぶ際の本質的な価値ではない。

お金が好きな人は儲かっている会社に行けばいいと思うし、
社内政治が好きな人は政治的な会社に行けばいいと思う。
自分は皆で何かを作っていけるエンジニアになりたいので今の会社にした。

5度の転職で得られた経験とその結果

というわけで人生を生き急いだ人間が転職をする理由を2つとその結果何を得たかを書いてみた。
両方共言えることは生き続け、変化し続けたことだ。
これは別に転職に限った話ではない。
他人に頼らず生き続け、変化するというのは必要だろうという事は常々思っている。

自分も今後どうなるかは分からない。世の中最悪な事を考えても当たることは1割も無いという。 が、それに備えるというのが自分の出した結論だ。

転職は面倒だ。比較的慣れたであろう自分でさえそう思う。
30や40になったときに自分のこのキャリアがどう判断されるかはわからない。
が、先のことを考えるより今を生き続ける道を選んだ。

そしてこの言葉で〆ようと思う。

http://taizooo.tumblr.com/post/26495464
taizooo.tumblr.com

auからIIJmioに乗り換えて1週間が経った。

いい加減携帯キャリアの殿様っぷりについていけなくなったので、
iPhone7 Plusを購入した際にSimFreeモデルを選び、重い腰を上げMVNO(いわゆる格安sim)のIIjmioに乗り換えた。

結論から言えば、早く乗り換えるべきだった。

なぜIIJmio

キャリアから抜けるのは決めていたが、MVNOの転出先をどこにするかは決めかねていた。
DMM Mobile、IIJmio、LINE Mobile、Mineoで悩んだが、
最終的には情報開示が早く、早くからMVNOをやっており信頼性で勝るIIJmioにすることにした。

月額の比較

  • au

    • 内訳は覚えていないが、月額およそ10000円ほど。
    • いわゆる実質無料で購入していたので毎月端末費が+されているので、終わったら少しは安くなるかもしれない。
  • IIJmio

    • 6GBモデルで月額1520円 + 音声通話で700円で2220円
    • キャリアの時と比較して1Gほど使用回線が足りないので、ひょっとしたら+回線使用料を申請するかもしれない。

回線速度について

MVNOと言えば、回線速度どうなの?という点があると思う。
MVNOを実行に移す人はある程度コンピュータリテラシーが高いと思っているので、自分でいろいろ調べるだろう。
が、回線速度だけは実際に使ってみないと体感が分からない。
乗り換えた結果だが、自分の下記の使い方レベルでは十二分に使えた。

  • 自宅と会社に居るときはWi-Fi
  • 外出時はLINEやTwitterFacebookなどのSNS閲覧がメイン。
  • AppleMusicのストリーミングを使用。
  • 動画はWi-Fi以外では見ない。
  • 外で一番回線を圧迫するのはKindleの新刊をダウンロードぐらい。
  • 電話はほぼ使用しない。利用したとしてもLineのIP電話ぐらい。

全て同じ場所で測った訳では無いので厳密な比較にはなりませんが、ある程度の比較は出来そうなので載せてみる。
杉並付近に住みたそうにしているのは見なかったことにしてください。

切り替える前のauの回線速度がこれほど

IIJmioがこれぐらい

16時の比較的空いている時間

帰宅ラッシュ付近

帰宅後付近

出社ラッシュ付近

デメリット

やはりというか、回線速度は違う。
が、現段階では問題にはならないレベルではある。 回線速度は上記に記載したが、繋がりやすさでいえばキャリアには大きく劣っている。
特に通勤・退勤ラッシュやお昼時などはキャリアの時と比べてかなり繋がりにくい。
自分は回線費との引き換えとして目を瞑っているが、
常時繋がっていないと落ち着かない人や、普段からヘヴィーに使っている人には厳しいかもしれない。
MVNOでは回線速度ばかりが気になっている人も居ると思うが、繋がりやすさによるスマートフォンの体験が変わるというのも考えた方が良いだろう。

所感

外で動画を見ている人や、ゲームをバリバリやっていきたいという人、他社のサポートがほしい人には向かないと思うが、上記にあげた事程度しかやらない人はMVNOで良いと思う。
今後、キャリアの殿様商売が見直され通信料が安くなる日が来るかは分からないが、当分はMVNOでやっていく。

転職ドラフトを通じて、freee株式会社に入社しました。

こういう事を考えていましたが、自重しました。

freee株式会社にjoinした

こういった記事は書かないつもりだったんですが、前の記事をエゴサーチして書いてみることにしました。
掲題の件につきまして、転職ドラフトを通じてfreee株式会社へ転職することにした。
およそ1年強での転職、26歳にしてこれで通算5社目ということで、ジョブホッパーとして成長していることを実感しています。

転職ドラフトについて

転職ドラフトの第2シーズンがあるという事を知って、今後のキャリアで悩みが合った事と自分の市場価値ってどれほどあるのかと知りたくなり、気軽な気持ちでやってみた。
その結果、ありがたいことに15社ほどから指名を頂けた。あまり良い話でも無いかもしれないが、提示年収も今よりそれなりに上がっていた。
オファーを頂いた会社の中には自分が憧れていた会社も複数あり、一度実力を試してみたいという気もあり色々活動したところ、
何社かからオファーを頂けたが、最終的にfreeeにjoinする事にした。

キャリア云々に関しては来月にある転職AdventCalendarで書こうと思う。 qiita.com

freeeについて

なぜfreeeにJoinを決めたのかというと、正直なところ最初は気軽にお話を聞きに行くかというぐらいのスタンスだった。
自分としてはX2Cの会社に携わりたいと思っていたが、話を聞いていくうちにB2Bならではの楽しさや、freee独自の魅力に惹かれていた。
自分としてもバックオフィスの面倒さを経験し、エンジニアリングでどうにか出来るのではという考えを持っていたのものあった。
あとはもう当分ジョブホッピングをしたくないという意図もある。 ここ数年転職者が0だったり、面談の際にReactiveCocoaや、PHPの事で盛り上がったり
社員のエンジニアはもちろん、役員の方もエンジニアへの理解が深いというのも決め手の一つであった。
技術的にも最先端に近いものを取り入れており、ここ最近なまっていた技術力を取り戻す絶好のチャンスかなと思った。
考えをまとめた結果、ここなら当分居ることが出来るかなぁと思い入社することにした。

最後に

転職ドラフトに関しては何だか一時期燃えていましたが、自分は良いサービスだと思います。
また(当分は利用したくないですが)利用する機会があれば利用したいです。
転職ドラフトのやりとりについてもっと詳しい話を聞いてみたいという稀有な方がいれば@teitei_tkまでMentionをくれれば反応します。
というわけでGREE株式会社を退職し、freee株式会社に入社しましたエントリーでした。
例のアレです。よろしくお願いします。

https://www.amazon.co.jp/gp/registry/ref=cm_reg_rd-upd?ie=UTF8&id=1KY1Q9M8EAIA5&type=wishlist

きっと何者にもなれない自分というエンジニアとしての生存戦略

2016/10/26 現在26歳で業界歴は6年ほど。
まあ、若いと言えば若いであろう。実際色んな人と話をして年齢の話になると若いねとよく言われる。
が、もうそこまで若いとは言えないだろう。
あと3ヶ月も立つと自分も27になる。新卒の子や学生からしてみると、もはやおっさんであろう。
とまあ自分レベルの人間が自分をおっさんと言うと色んな人に怒られると思うので、おっさん予備軍とでも呼称するか。
で、そのおっさん予備軍として今後若く優秀なエンジニアと対抗する際に何が出来るのかと振り返ってみたが、何も残せていない。
例えば、

  • OSSで何か作っているか
  • 有名OSSにContributeしているか
  • CxOや役員などの経営者経験をしているのか

OSSは趣味で作ったものをGithubで公開はしてはいるが、Star数が0のところを見ると利用されてるとは言えないだろう。
そんな感じで若く優秀な人からすると引っ込んでろよパンピーという感じの人間ですが、
自分もご飯を食べてアニメやゲームなどのコンテンツを消費して生きていかないといけないので、自分が何が出来るか・何が貢献出来るかを考えてみた。

きっと何者にもなれないエンジニアの生存戦略

業界の有名人や、業界に友人がたくさんいて、なおかつ優秀ならば縁故で紹介してもらえるのかもしれないが、
自分は引き篭もりコミュ障の糞野郎なので、自分からアクションを起こさないといけない。
それで何が出来るか考えてみた。

  1. 有名OSSにContributeする。 一番手っ取り早いのかもしれない。 レールに乗るのが嫌で社長になる人も居るらしいが、1から作るより既存のレールに乗るのは手っ取り早い。
    パッと思いつくのはRailsDjango、Laravelなどのフレームワークだろうか。
    その言語での有名フレームワークにContributeしているのであれば、その言語を採用している会社への採用されやすくなるかもしれない。

  2. 起業する。 ハイリスク・ハイリターン。何かVCから融資を受けられるようなアイディアと度胸があれば良いのかも。

  3. CxOとしてJoinする。 少し前に流行った?っぽいC(T|x)Oになるパターン。
    起業したい人とマッチ出来たり、CTOを探している会社にいき、Exitで生きるという戦略だろうか。

  4. 副業として顧問になる。 最近は技術顧問が流行りなんですかね?よくわからないです。
    週何日か顧問としてその企業に貢献するスタイル。顧問という立場で色んな人に教えてましたという事であれば今後も生きやすくなるのかもしれない。

  5. サービスを立ち上げる。 何かしらサービスを立ち上げ、それをポートフォリオとしてやっていく。
    アダルトサイトなら作って売却したという話を聞いたことがあるので小遣い稼ぎには良いのかもしれない。

他にもあるのかもしれませんが、自分の稚拙な脳みそでは他にパッと良いのは思い浮かばないです。

自分の生存戦略

上記でいろいろと上げてみたが、自分は上記のパターンには当てはまらない方向で行こうかなと思った。
他人と比較して、ものすごい技術力を持っているわけではないし、経営知識が有るわけでもない。
起業するにしても何かしらVCから融資されるほどのアイディアも、人脈もないし。

で、そんな何者にもなれないお前が何が出来るのか?と考えてみたが1人では何も出来ないので、皆で何かを作れる様なエンジニアになりたいと思った。

皆で何かを作れる様なエンジニアとは

自分はものすごい技術力があるわけではない。例えばRailsのSprocketsが鬱陶しいのでWebpackに置き換えようとしたが、
結局Webの記事に頼らざるを得なかった。技術力があればそこら辺も自分で出来るのだろう。

なのでエンジニアだけでなく、デザイナーやプランナーも含めて何かを作れるような人間になりたい。
ここで言う何かを作れるような人間とは企画やUI・UX実装時に技術力による制限をかけないようなエンジニアである。
そのためなら何でもやるぐらいのスタンスである。
例えば管理画面のtemplate1行修正だったり、画像ファイルをrepoにコミットするような地道な仕事から、
新機能実装時にレスポンスをコンマ数秒でも早くするようなことまで。
自分一人ではキラーアプリなんて作れるとは到底思えないので集合知を駆使して作ろうということである。

ここだけ聞くと情けない。ゴミエンジニアが。エンジニアなら技術力で全てを殴り倒して見せろというところだろうが、
エンジニアのパワーが強すぎて逆にエンジニアリングとしてイケてないから企画に制限をかけることが多々あった経験からである。
エンジニアリングとしてイケてないのは確かにそうかもしれないが、それをどうにかするのが仕事だと思っている。
それはイケてないから企画・UI/UXをやり直せ・作り直せなど言ったら負けかなと思っている。
結局餅は餅屋で、プランナーやデザイナーはエンジニアリングの事はわからないだろう。逆もまた然り。
ならば、自分の領域の仕事ならどんな事でもやるぐらいのスタンスでやるべきじゃないのかなと思う。 もちろん出来ないことはあるだろうからそこは代替案などを出すべきで、出来ないとだけ突っぱねるのは違う。

ココらへんはid:serihiroさんの下記の記事から感銘を受けた。 serihiro.hatenablog.com

きっと何者にもなれない自分というエンジニアの生存戦略

何だかうまくまとまらないが、結局はこの一言なんだろう
企画やUI・UX実装時に技術力による制限をかけないようなエンジニアとして生きる事
CTOや技術顧問など、上記に上げた生存戦略はキラキラしていて羨ましいが、キラキラしているからといってそれだけの理由でそこに行くのは違う。
あくまでエンジニアとしてエンジニアリングを全うするようなエンジニアでありたい。

というわけで最近は算数すら怪しいがDeepLearningを勉強したりもしている。
理由としてはそれで技術力による制限をかけないようにしたい。それでいて自分から提案も出来るようなエンジニアになっていければなぁ。

なぜこの道に進むのかというと、自分のメンタルモデルとなっている人が全く同じ道を通っているから。
その人はもう50に近い歳だが、若く優秀な人顔負けなほどAWSを使いこなし、周りの人からの信頼も勝ち取っている。
それで成功していることもしっているので自分もこの道を進んで、みんなで何かを作れるようなエンジニアになっていきたいと思う。

新しいエディタを探して、ひとまずAtomに乗り換えた話

今までコードを書く際にはVimを使っていたが、いい加減老害感が出てきたのと、気分転換を兼ねてエディタを乗り換えた。

結論から言うと、メインはAtomにしてサブエディタとしてIntelliJ Ultimate(+ Language Plugin)を使うようにした。
Atomに乗り換えて1〜2ヶ月ほど経ち、ひとまず落ち着いたので記事にすることにした。

Vimから乗り換える必要があるか論

個人的にはバグが無く生産性が高いものを作れるなら、VimでもEmacsでもメモ帳でもIDEでも何でも好きなもので書けば良いのではという意見。
なぜ自分がVimから乗り換えたかと言われれば、冒頭にも書いた気分転換もあるが、自分のVim力に限界を感じたのが原因だった。

自分のVim力の限界

きっかけはNeobundle.vimから、dein.vimに乗り換える事だった。
ShougoさんのNeobundleには大変お世話になっており、dein.vimの紹介記事が出た際に乗り換えようとした際になぜかVimの起動が遅くなってしまった。
まあ、またかとvim hoge.txt --startuptimeを使って原因を探す事や、dein.vimの新しい構文を覚えるのが面倒だなぁと思ってしまった。

Vim力が高い人であればソースコードを飛んでパパっと調べることが出来たりする事ができたと思うが、
個人的にはVimScriptは覚える気がないので毎回この手のトラブルのたびにVimScriptの文法を調べることが面倒になってしまった。
覚えれば解決するのではという気もするが、VimScriptかぁ・・・という謎の嫌悪感があるのと、
今までは業務で書いているコードはPHPPythonの様なLLからJavaC#等の本来IDEで書いた方がメリットが高い言語でもVimで書いていたが、
仕事でJetBrains製品をオススメされ、実際に使ってみた結果もうそこまでVimに労力をかけなくても良いかなぁと思ってしまったという事も大きい。

メインのエディタとしての選択肢

ということで試しに乗り換えてみるかーぐらいの気軽な気持ちで色々と選択肢を漁ってみた。
条件としては主に下記。

  1. VimKeyBindが使える。
    • もう8年ほどはVimKeyBindで過ごしてきたので今更変えると移行コストが辛い。
  2. Pluginで拡張が出来る。
    • Vimで色々とカスタマイズをしているので近しいことが出来ないのは辛い。

というわけで調べてみた。(個人の感想です。

  • Emacs

    • Vimと同じく老害感が出るのが・・・。
    • Evilという選択肢もあるが、違うコレジャナイ感が凄い。
  • Eclips

    • 重い。ただただ重い。
    • 過去に使っていて苦い思い出が・・・。
    • 昔はIDEといえばEclipsだった感があるが、最近はAndroid StudioよろしくJetBrainsが台頭している感があるし、Eclipsは良いかなと判断。
  • Atom

    • 初期に触れた程度だったが、思った以上にPluginが増えていた。
    • 重い・遅いと言っている人が多かった印象だが触ってみた感じはそこまでだった。
      • 最近のPCの進化の賜物かもしれない。
      • ある一定以上のファイルサイズを読み込む際の重さ、エディタ立ち上げの遅さは気になる。
    • Vimほどではないがカスタマイズ出来る事が豊富。
    • 設定ファイルもcson、cofee、lessなどある程度親しみやすい。
    • Github製かつOSSという特定の団体からの大人の事情による圧力は無いだろうという安心感。
      • まあ、Atom is Deadになる可能性も無くはないが。
  • Xcode

    • Mac以外でコードを書くことはほぼほぼ無いのでありかもなーと思った。
    • Apple製でほぼ1年おきに使っていた機能がカジュアルに変わるのは辛い。
  • Visual Studio Code

    • リリース当初に触れただけだったが、触ってみるとかなり良かった。
    • Extensionsの数がちょっと少ないかなという感。
      • 自分で作れば良いのではという突っ込みは無しで。
    • MSが信用できない。
      • あくまで個人の感想
      • 最近はOSS活動に精を出していることは知っているが、過去の出来事(ハロウィン文書)やIEに苦しめられた記憶が残っていてMSに対する心象が悪い。
  • IntelliJ Ultimate(+ Language Plugin)

    • もはや説明する必要は無いだろうがほぼ何もカスタマイズしなくても使い勝手はかなり良い。
    • LLでもかなりのコード補完が聞くし、とにかく賢い。
    • Pluginもボチボチある。
    • あえてケチを付けるなら
      • 有料かつOSSでは無いので何かあったときに原因を特定し辛い。
      • 細かなカスタマイズがやり辛いのがイマイチといえばイマイチ。

と他にも調べたが省略。

選択

もはや面倒になってJetBrainsで良いかなぁと思ったが、下記の理由でメインにするのは止めて、詳細なコードレビューやリファクタリングの時だけ使うようにした。

  1. カスタマイズがし辛い
    • GUIによるカスタマイズ。
      • 慣れれば良いのではという感じではあるが、やはりCUIでやりたい。
  2. 他端末への設定の共有
    • GithubでDotfilesを管理しているので、それで共有出来る仕組みが無いのは辛い。
      • Dotfilesで共有出来るのであればぜひ教えてもらいたい。

というわけで下記の2つに絞った。

  1. Atom
  2. Visual Studio Code

どっちもElectron製でなおかつ各種カスタマイズも出来るしで悩んだが、心象の差でAtomにした。
とはいえMSに対する心象も過去よりは良くなっているので本当に微妙な差ではあった。

Atomはコードを書くとき・レビュー時などのメイン作業。
IntelliJ Ultimate(+ Language Plugin)は詳細なコードレビューやリファクタリングの時だけ使うようにした。

詳細なコードレビューやリファクタリングの為に金を掛けるのかという意見もあるかもしれないが、
金で良いプロダクトを作れるのであればいくらでも払って構わないかなという気持ちはある。

冒頭にも書いたが1〜2ヶ月ほどこのスタイルで進めてみてうまく行っているのでまあまあ良かったのではと思っている。
Atom Pluginの紹介しろという意見があるかもしれないので紹介しておくとお使いのブラウザから、(ctrl | ⌘) + l -> Atom プラグイン と打つと出てきます。

けつろん

自分の責任で好きなことを好きなもので作れ。