<y>

Splatoonプレイヤー兼Webエンジニア

自戒

これは完全に思考垂れ流しポエムです。
ここ最近の自分の醜態を記録しておくことで、未来の自分に読んでもらい反面教師にしてもらう作戦です。
ここで言及していることは全て自分に対してです。他の誰かのことは一切言っていません。

SIerからWeb業界に転職してバリバリエンジニアリングしながらレベルアップしたいんじゃなかったんですか??

文系学部卒だがなんとなくITとパソコンが好きという理由でSIerに就職した。
テキトーにプログラミングっぽいことを学んで、配属されて設計とかやってのうのうと過ごしていけばいいやという考えを持って新卒で就職した。
新卒の会社でSplatoonを買った結果、それがいかにダメなのかという気付きと、プログラミングをして動く物を作るのが楽しいという気付きと、時間や場所に縛られない自由な働き方ができるんだという気付きがあり、急いでWeb業界に転職した。
そこらへんの話は長くなるので割愛するが、僕が所属している会社の僕が出ているブログ記事にちょっくら記事があります。
転職後2社目(Web業界での1社目)ではRailsを書いて基礎的なことがある程度分かった(つもり)で、紆余曲折あり今3社目の会社にいる。
すごく働きやすいし、技術力のあるエンジニアも多くとてもいい環境だと思う。
問題はここからで、今の自分はこの環境になってから堕落しすぎており、今後もエンジニアとして食っていくには現状を変えないとダメだと思ったのでこの記事を書くに至った。

最近あなたはどんな技術を身につけて何を作りましたか??

これは自分に問いかけている質問です。
エンジニアとして、新しい技術に対してアンテナを張り、自分の作りたいものや仕事で使うものに必要な技術を習得し、それを利用して物を作り、物を作りながら新しい技術に対してアンテナを張り……といったことをやるのは、生き残っていく上で当然とも言えるべきことだと思う。
最近の自分はこの当然のことができていない。そして、そういう自覚があるのに改善しようとしていなくて(意識だけは改善しようとしているんだけど行動に繋がらないので)こういうクソポエムを書いている。
Railsを学び始めて1年ほど経ったが、自分でゼロからアプリケーションを作り上げてそれを公開したか?していない。作りたいものはないかなと思って案をいくつか出しているのに。もったいない。
で、じゃあWebサイトを作るんだったらJSとかCSSについても学ばなきゃいけないよね、となり、それらを体系的に学習して習得しましたか?と言われたらノーと答えるしかない。JavaScriptとか全然書けないです。作りたいものがあるのにそれに必要な道具の使い方を学ばないでどうやって作るんだ、という話ですね。
純粋な技術に対する興味で習得することももあれば、仕事をしたり物を作る上で必要だから技術を習得するということもあると思う。別にどっちでもいいんだけど、どっちもやってなくない?やってないです。ダメですね。

楽しめてます?

そもそもコードを書くことを「楽しい」と思えているか。これは書くものによりけりになってしまうけど、辛いしか言ってない状態で辛いコードを書いていても身にならないしモチベーションも上がらないしやっていけなくなっていく。
というか、つらいことしかやっていなかった時代があって、そうやって毎日不毛な時間を過ごしたくないよね、と思って転職をした。
楽しいと思えるというよりは、楽しくしていくといったほうが正しいのかもしれない。今こういうことをやっていて、でも意外とつまらない -> じゃあどうやったら面白くなるか。現状から何を学んでどう改善できるか。これを考える力が足りていない、と思う。 趣味の開発とか、自分がやりたいことをやりたいようにやるのは、非常に簡単に「楽しい」気持ちになれる手段だ。ただし今は仕事もある。仕事そのものだけなら「楽しい」というものはそんなに多くないだろう(と思う)。どうすれば楽しくなるのか、自分で考え、それを実践することで、初めて楽しくなるのではないかと思う。

楽しくないことは自分で工夫して楽しくしたり学びを増やしたりしてます?

例えば、今受け持っている案件の一つに、作りはじめてまだそんなに経っていないRailsのプロジェクトがある。そのプロジェクトはRails4.2で作られているが、「Rails5.1.3にリプレースしたい」という気持ちになったし、プロジェクトメンバーに話してみたらいいじゃん!という返事をもらえたし、じゃあやるぞ!となる。でもRailsのバージョンアップの経験なんてないから、どうすればいいのかを調べて知見を貯めて実際に手を動かしてリプレースする。こういうのは知見も貯まるし楽しいと思う(個人の感じ方です)。 例えば、今やっているのはデザイナーさんが作ってくれたデザインをRailsのビューやマニフェストファイルに組み込んでいくという作業をしているが、あまり面白いと感じることができていない。じゃあこれをどうすればいいんだろうとなる。

自動化や改善をすることは面白いのに何故それをやらないんですか?

このままずーっと同じ手法で仕事しても面白くない状態は改善されないし、どうすれば面白くなるのかを考える。面白いと感じないものを面白くするためには、デザイナーとの連携を密に取るとか、マニフェストファイルとかアセットパイプラインの仕組みに詳しくなるとか、そういう「面白い部分を見つけ出してそこを攻めることで結果的に仕事全体を面白くしていく」というのもあるし、やりたくないものに極力手を出さないために、「自動化などの手法を確立して、やりたくないことをやらないようにする」というアプローチもある。デザイナーと連携を密に取り、Railsディレクトリ構造通りにやってもらうとか、そういう工夫をするのは後者のアプローチに入るかなと思う。
それは「エンジニアリングは好きだけどその中でも特にこれが好きでこれが嫌い」とかそういう話で、エンジニアリング全体が嫌いなわけではない。だけど、そのエンジニアリングの中でも嫌いとか不得意な部分の作業をしているときに、「嫌いだしつまんないからやりたくない〜」と言っててもそれが好きになったりはしませんよね。しません。
そのつまらない部分や嫌いな部分を、どうやって手早く終わらせるか。それを考えて実践するのが楽しいはずなのに、最近の自分は脳死していてつらいとしか言ってないよね。それじゃあダメだよね。ダメです。
そういうのを自動化したり、改善して面白くしたりするのは結構頭を使って案をひねり出す面白いことだと思う。それをやらない自分は普段何をやっているんだ……?

自分がどうなりたいか自覚してます?

楽しくないと続かないし楽しくするのも自分の力量のうちだとは思うんだけど、じゃあせめて楽しい部分だけでも何故やらないの?となる。
もはや楽しい楽しくないの問題ではない。やってないから。なんでやらないんだ……。
楽しいことだけやったとしても知見は貯まるし、自分のできることは増えていくし、いいことだらけだと思う。なんでやらないんだ……。
エンジニアって、最初からなんでもできる人はいないと思っていて、勿論適正みたいな話はあるんだろうけど、それを抜きにしても結局「毎日やってきたことの積み重ね」がその人の実力だと思っている。
エンジニアになってから、一夜漬けのテスト勉強みたいなものの意味のなさと、毎日少しずつ積み重ねていくことの大切さを実感した。学生時代は一夜漬けタイプの人間だったので、毎日少しずつタイプになろうと色々やってはいる。色々やってはいるのになんで肝心のエンジニアリングを毎日やらないんだ……。
周りにいる「何かに長けた人」って、一朝一夕でそれに長けているわけじゃないし、毎日毎日積み重ねて長けている状態になっている。エンジニアリングだってそれは同じで、毎日コード書かない人間がコード書けるようにならないのは当然だと思う。
幸いにも優秀なエンジニアが知り合いに何人もいるが、そういう人達は毎日の積み重ねは勿論、毎日積み重ねる量も普通の人より多い気がしている。一日に貯まる知見が自分より多い気がする。
で、そういう人達に僕はなりたいと思っているのに、そういう人達より積み重ねる量が少なくてどうやって追いつけますか?追いつけませんね。追いつけないんですよ。むしろどんどん離れていく。それが分かっているのになんで毎日積み重ねないんだ。

じゃあどうすればいいんでしょうか?

ここまで言っておきながら、解決策は「もうこれは自分次第」としか言えないのが本当にダサいんですけど、自分次第です。
もうちょっと細かいことを言うなら、体力や集中力を鍛えて一日に頭を使う時間を増やそうとか、色んなものを身につけなきゃと考えすぎで、まずは自分のやりたいことに必要なものだけ身につけろよとか、そういう話だろうか。
どこかで、小さい成功体験をたくさん重ねることが大事というのを見た気がする。たぶんそれができていないと思う。もうちょっと、小さいことを確実に完了させるというのを意識すべきかも。
あとはもう、やると決めたことをやり通す力を磨こう。小さい成功体験の話にも繋がるし、その決めたことに必要なものだけを習得するように意識する。あれもやんなきゃ、これもやんなきゃ、とか言ってると破滅して虚無になります。実際なりました。

軽くまとめるとどうなるんでしょうか?

なんか色々言ったけど、プログラマーの三大美徳というやつが足りてないんじゃないかなと自分で書いてて思った。間違いなく足りてない。プログラマーなら美徳を守らねば。
今の自分には色々足りないものがあるので、足りるように頑張っていきましょう。
自分がクソみたいなことを言って何もせずにうだうだしていたら、この記事を僕に叩きつけて「甘えたこと言ってるんじゃねえよ」と言ってやってください。
自分でも定期的に見返して反省しながらやっていこうと思います。

本当はこんなクソポエムを書いていないで自分が作りたいものを作ったり技術的な記事を書いていたかった……。
でも悲しいかな、こういうポエムを書いて気持ちを整理しないといけない自分がいる。もう今後こういうポエムは書きたくないです。

25歳になった。

22日に25歳になった。20台のちょうど真ん中で、ここから先はもう20台前半を経験することができない。
せっかくなのでほんのちょっとだけ振り返って色々書き殴っておこうと思う。

社会人1年目

気付いたら社会人生活も3年目に突入しておりびっくりしている。
初めて社会人になり新卒で入った会社は、でっかいでっかいSIerだった。
社会人1年目は大半が研修期間で、ほぼ大学生のノリで過ごし、何も考えずにただ定時で帰って遊ぶ以外のことを考えていなかった。
研修が終わって配属されると、そんな暇はなく、残業と休日出勤ばかりで全然遊ぶ時間を確保できなくなった。
仕事がめちゃめちゃ楽しくてやみつきになっているのだったらいいのだが、仕事内容は微塵も面白くなかった。SEとして職に就いたが、やっていることは思考停止の手作業で、Excelに何かを書き込むか、スクショを撮って貼るかしかやっていなかった。

研修時代だった2015年の夏、WiiU専用ソフトのSplatoonが発売された。
当時はなんとなく面白そうだなというだけでWiiUごと購入した。面白いようにドハマリして、土日がSplatoonで潰れるなんてこともよくあった。
大学時代の後輩が色々な人と仲良くSplatoonをやっていたので、自分もそこに混ぜてもらったりして、ゲームを通じて色々な知り合いができた。
その中には、技術力の非常に高いエンジニアが多く、そういう方々とも知り合いになれた。この出会いが自分を大きく変えた。
ちょうど配属された頃くらいに、自分の状況を話したり、ゲームコミュニティ内のエンジニアの方々の話を聞いたりして、自分が今どれほど危険な状況にいるのかを把握し、それによって「今の状況をこのままずっと続けたらマズい」という恐怖感と、「早く今の会社を抜け出さなくては」という焦燥感に駆られる日々を過ごし始めることとなった。
そのゲームコミュニティで知り合ったエンジニアの話を聞いているうちに、焦りもそうだが、「自分もこうなりたい」「自分もこういう働き方をしたい」という感情を持ち始めた。恐怖、焦燥と、状況の改善、変化を起こしたい気持ちが大きくなり、そもそも文系出身でプログラミングに関してほぼなんの知識も持っていない自分は無駄にする時間などないと考え、すぐに決意し、転職に踏み切った。
転職先を決める前に退職した。退職の相談のときはスーツの胸ポケットにボイスレコーダーを入れていたし、余っている有給休暇を捨てさせようとしてきた課長をいなして、なんとか有給休暇ほほぼ全て消化することができた。悪とは諦めずに戦うことが大事だと学んだ。

社会人2年目

新卒で入った会社は、社会人2年目になってから2ヶ月くらいで退職し、有給休暇を消化する間に転職活動をした。
未経験でも大丈夫で、自分で手を動かし、手に職をつけながら成長させてくれる企業を探し、運良く企業が見つかり、転職することができた。
そこでは新しいことをたくさん学んだ。今の自分が業務でも利用しているRailsも最初はここで学んだし、未経験なりに無理せずに仕事を振ってくれて、それをこなすことで学び、吸収した。
しかし、入社してある程度経って、自分の甘さが出はじめた。
自分より若くて自分より技術も知識も持っている人間などたくさん存在するというのに、日々知識を吸収することをサボっている時間が多くなった。
それは自分の甘さ以外に環境要因もあるのだが、自分の甘い部分が多くを占めていたと思う。
知識を貪欲に吸収しようという意欲がない技術者は、技術者としては良い部類ではないということは当時既に知っていたはずなのに、それでも怠惰な感情の方が勝っていた。
そういうダメな状況になっている時に、自分と社風があまり合わないことがどんどん分かってきて、毎日出社したくなくなっていき、日々を過ごすのが辛くなってしまった。
結果として精神を病み始めており、このままでは心がダメになってしまうという予感もあったので、早めに手を打とうと思って2017年になって早い段階で休職させてもらった。
色々良くしてもらって社員の方々もとても心配してくれていたのだが、心はもう会社を変えるほうに向かっていた。
転職活動をはじめて、普通に面接を受けたりしている中で、Twitterで知り合ったエンジニアの方(ゲームとはまた別の方)が「転職活動をしているエンジニアがいたらウチはどうかい」というツイートをしていたので、話を聞きたい旨をリプライし、話を聞きに行って、そしてそこに入社が決まった。
他にも内定をもらっていたが、ダントツでそこが良さそうだったので即決した。
2社目は8ヶ月ほど働いた。1社目より少なかった。ただ、得たものは1社目より圧倒的に多かった。

社会人3年目

社会人2年目の終わりから3社目で働き始め、4月から社会人3年目が始まり、今に至る。
自由でとても働きやすく、自分で動けば色々なことをやらせてもらえて、すごく働きやすいし、毎日学びがあってとても良い環境だと思う。
エンジニアとしてより優秀になれるように色々とやっているつもりだが、まだ甘い部分も多く、もっともっと貪欲になりたいと思っている。
コードを書くことは楽しいが、まだまだプロダクトを組み上げて運用するための知識も技術も不足しているので、もっと行動していきたい。

そもそもなんでWebエンジニアになったか

これがなんでだか曖昧だったので、覚えているうちに整理しておくことにした。
本当に大したことのない理由で、とっつきやすいという話を聞いてRailsチュートリアルを始めてから選択肢がそれしかなかったという感じがする。
今思えば、(これは完全に偏見かもしれないが)自分が新卒のときにいたSIerでは、新しい技術や目的に応じた技術をキャッチアップして技術レベルを上げていこうという風土が一切なかったので、もっと新しい技術に興味を持ちキャッチアップしていくという風土を求めていた。それに合う企業が最も多い業界がWeb業界だったのではないかなと思う。
正直に言うとRailsしかスキルセットがない(2社目に転職する前はRailsすらまともに触れなかった)というのもあると思う。
それから、作るものの違いもある。BtoBの基幹系システムにどうしても面白みを見いだせなかった(自分の場合は)ので、BtoCかBtoBtoCのサービスに携わりたいという気持ちが強かったし、今でも強い。システムというよりサービスを作りたいというほうがしっくりくるかも。

現況

社会人3年目にしてようやく色々な物事が落ち着いてきた感じがある。
エンジニアとして働けているし、今後もエンジニアとして働くことを望んでいる。
「努力は必ず報われる」という言葉が嘘だというのはどこかで見たことがある。適切な方向に向かって適切に努力しないと報われない、というような意味だったかと思うが、今の自分の努力の方向は、少なくとも間違ってはいないように思う。あとは量を増やすこと。もっとのめり込むこと。もっと自分が知りたいことを知り続けること。これが足りていないので、今後はもっともっと開発にのめり込んで、色々なことを吸収して、色々なものを作りたい。

目標

自分の甘えを少しでも排除していきたい。
無駄にする時間は一切ないと上述したが、普通に無駄に過ごしている時間もまだまだあるのが事実。
25歳のうちに個人開発をしてWebサービスを作る。それ以外にも個人開発に力を入れていきたい。
エンジニアになって、日々の業務の中で得るものも多いが、やはり自分の好きなものを作ることに全力を注ぐのが一番楽しいはず。
まだ個人としての実績は皆無に等しいので、ばんばん作っていきたい。
あとはRails以外のスキルも身につける。勿論Railsに関してもまだまだ素人の身なので常にキャッチアップを続けていきたい。

その他

nippoをやっててよかったなーと思っているので、別の記事で書きたい。
以下は干し芋のリストです。 http://www.amazon.co.jp/registry/wishlist/HCKAPW8CQIQ8/ref=cm_sw_r_tw_ws_x_61gNzb6Y97GYV

ブラック企業は自分が壊れる前に辞めたほうがいいよね、という話

ここに書く内容はただの一個人の意見であり、特定の集団や組織などの総意や風潮などではない。

自分について

僕自身の特徴としては、

  • メンタルが弱い
    • 辛いことに耐える力がなくてすぐに限界に達する
    • 悩みは長いこと独りで抱え込むタイプで、たまにふと嫌なことを突然思い出して気分が悪くなる
    • つらい状態でも必死になって食い下がってやるという気概が最初からない。怠慢な性格
  • 朝が弱い
    • 単に朝が弱いのに加え、夜に熱中していることがあると睡眠時間を削ってでも楽しもうとする
    • 結果として次の日死ぬ
    • 睡眠時間が不足していると精神的に不健康になりどんどん悪い思考に陥りがちなので睡眠はとにかくしっかりとる、ということを自覚していつつも睡眠時間を削ってしまう
  • 傲慢
    • 自分がつまらないと思うことはとことんやりたくない(ある程度の妥協は勿論必要だけれど)
    • クソみたいな上司はたくさんいると思うしそいつらの言うことなぞ微塵も聞きたくないと思う
  • コミュニケーションに多くのエネルギーを使う
    • コミュニケーションが全然できないというわけではない
    • コミュニケーションをしっかり取ろうとすると多くのエネルギーを消費する
    • 無駄に飲み会やるくらいなら一人でいたい
    • 上司に気を遣うのが昇進に響くというのなら一生昇進しなくていいと思う
    • 上司にゴマすりなんて無理、やってられない

といったように、人間的スペックはかなり低いという自覚がある。
実際自分の周りを見渡しても、辛いと言いつつ一生懸命働いて金を稼いでる奴や、休日に出勤して土曜日の飲み会にスーツで来るような奴もいる中で、自分のダメさは際立つ。

社会に出て厳しい気持ちになるまで自分がこんなに弱いと分からなかった

今は社会人三年目だが、新卒で働き始めたときは「自分が人間としてのレベルが低い」という事実すら理解していなかった。
なんとかやっていけるだろうというソースのない自信があった。新卒時は大きめのSIerに入り、4月から12月までというやけに長い研修期間も相まって、完全に学生の延長として社会人一年目を過ごしていた。
その後配属されてからは見事に社会の荒波に揉まれてどんどん弱っていき、「自分が弱い」という事実を自覚していった。

周囲の人間は自分よりよほど強くしっかりしている

これは大体どんな人にも当てはまる気がするが、自分の周りは結構な割合で「社会人生活がつらい、大変だ」という人間がいる。
周りの社会人を見ていると、上司に理不尽な怒られ方をされたり、毎日夜遅くまで働いてたり、休日に無理やり出勤させられたり、微塵も楽しくないクソみたいな業務をしていたり、聞いているとすごくつらそうだと思うことが多くある。実際会って仕事の愚痴を言ったりする人はたくさんいるし、まあそれは日本社会のありふれた日常的な光景だとは思う。
多くの知り合いから、結構すらすらと職場に関連した愚痴が出てきて、日曜の夜だったりすると「明日からまた仕事だあ〜嫌だあ〜」というフレーズが、決まって自分の耳に入ってくる。
こういう人達の何が凄いかというと、辛く大変だと感じながらも毎日汗水垂らしてしっかりと働いていることである。
「凄い」という言葉に不純な意味はなく、純粋に尊敬の気持ちのみを込めている。自分には到底真似のできない芸当をこなしているのだから、本当に凄いなという思いがあるのみだ。
こういう人達を、本当の社会人と呼ぶのだろうなと思う。

明確な意図があって仕方なくしている我慢なのかを振り返る

大変残念なことに、世の中にはブラック企業という悪しき組織が溢れかえっている。
そして、一口にブラックと言っても、実に様々な種類の悪が存在する。
異常な長時間労働、休日の出勤、あまりにも評価に見合わない低賃金、理不尽な命令、パワハラ。悪の種類を列挙していけば枚挙にいとまがない。
自分が新卒で入社した会社も多様な悪が蔓延る場所だったので、配属されてすぐにくたばってしまった。ただし周囲の人達の話を聞いていると、自分などよりよっぽど過酷な環境に身を置き、必死に耐えつつ毎日働いているのだなということが分かった。自分の置かれていた環境はまだマシだったんだと思うことはよくある。
ただ、耐えられないものは耐えられないし、くたばってすぐに辞めたことは間違いだとは思っていない。正しい選択をしたと思っている。
辛くストレスフルな環境で常に厳しい気持ちで死にそうな思いで我慢して働くことに、得るものを何も見いだせなかった。
何も得るものがないのだ。技術、スキル、人間関係、多くの給料、幸福感、満足感、充足感といったものが、一つも得られなかった。
そのような状況で、耐える必要性などないはずだ。耐えても得るものがないのだから。
毎日辛い状況に必死に耐えているなと思ったらふと考えるべきだ。「今自分がしているこの我慢は、今後自分にとってどんなメリットがあるのか?この我慢によって、自分は何を得ることができるのか?」と、しっかり自分に問いかけてみるべきだと思う。
そして、「得るものが何もない」という答えしか出なかったとしたら、今の辛い環境に耐える必要性はなくなる。

本当に大切で優先すべきことは「壊れないこと」

仕事において大切にすることは、お金や福利厚生ややりがいといったように人それぞれだ。ただし、どんなものよりも大切にすべきものがある。

大学時代に必死に就活して入った会社をすぐに辞めるわけにはいかない、という意見をよく聞いたりする。
しかし、こういう意見を持っている人は、とても大切なことを忘れていることが多い。以下に挙げる事柄は、とても大切なことなので、ぜひ心に刻みつけてほしい。

  • 人間には命がある
    • 人間は命がある限りでしか生活できない
  • 人間は思ったより脆い
    • 物理的な意味でも、精神的な意味でも、人間は簡単に壊れる
  • 人間は一度壊れたら、二度と元には戻らない
    • 一度でも限界を超えたら、もう完全復活はない
    • だからこそ、自分にかける負荷には常に気をつけて、充分に余裕を持っておくべき
    • 「壊れる」ということがいかに深刻かをしっかりと考え、「壊れないこと」を最優先にする

壊れるというのは、物理的な面なら重い怪我や重い病気であり、精神的なものなら鬱病といったものが挙げられる。
上に挙げたことを考えずにブラックな環境に耐えている人をよく見る。
そのブラックな環境に耐え続けた結果が、物理的または精神的に壊れるといった場合は最悪のケースだ。壊れなければいくらでもチャンスは掴めるし、転職できる。壊れてしまったら、もう普通に働くことすら叶わないのだ。それをもっともっと自覚しないと、本当に壊れてしまう。
どんなにブラックな状況でも、転職先が決まるまでは辞めないというような考えをたまに聞く。繰り返すが、壊れないことが最優先なのだから、壊れそうならそんな悠長なことを言っていないで辞めたほうが、長期的に見たら自分のためになるはずだ。
無理して耐えて壊れてしまったら、他にしてきた努力は全て水の泡となる。
長期的な目線を持つことが大事だ。今短期的に耐えて鬱病にでもなったら、長期的に見て大失敗だ。本当に辛いなら今すぐ辞めてしまったほうが、長期的に見て大切ではないか。壊れてしまっては元も子もないのだから。

仕事を辞めること、転職することに対するハードルを下げる

ただ辛い以外の感覚がない場合に、そこに留まる必要性はない。だが、そうなると今度は退職や転職といったイベントが生じる。
職を失うことの恐怖なんて重病になったときに比べれば些細なものだ。
有名企業に勤めていたとしたら、確かに次に得る職で同レベルの企業というのは難しいかもしれない。が、それは些細なことだ。
会社に忠誠なんて尽くさなくていいし、人間的に難のある上司の言いなりになんてならなくていい。
そんなことをしてもただただ辛いだけだし、その辛さは感じなくてもいいものだからだ。
人間は千差万別であり、誰かが辛くないことでも自分は辛い、ということはごく日常的にある。自分が辛いと感じるのなら、それは自分に合わないし向いていないことなのだから、拒絶したって何も悪いことではない。

たまにとても責任感の強い人を見る。「自分がいなきゃこの職場が回らなくなってしまう」という言葉を聞いたこともある。
本当に立派だ。人間できている。だが、責任感だけでは仕事はできない。
健康な身体と健常な精神あって、初めて成果を生産できる。責任感は得てして無理な忍耐を助長する。
しかし、社会に出てたかだか数年の人間の一人分の労力程度のものは、いくらでも代替が効くものだ。自分がいなければ回らないわけではないし、本当に自分しかいなければ回らないのならそれは経営の仕方が悪いのであって、あなたの責任ではない。
あなたが辞めたところで、また別の人が補充されるし、人が足りないのなら適切に増員することが正しい対処法である。
ちっぽけな責任感でブラックな会社を長く続けさせてしまってはいけない。ブラックな企業はとっとと潰れてしまったほうが社会的には有意義な出来事なのだから、とっとと辞めてしまって潰れてくれた方がいいと思う。

良い職場もある

ブラック企業に勤めていると、会社なんてみんなこんなもんだという諦観を覚えている人を見かける。
断言するけど、そんなことはない。しっかり働きやすい環境を整えようとしてくれるいい職場だって存在する。
自分は最初に挙げたようにクズみたいな人間だけど、それでもしっかり働きやすい環境を作ってくれて、自分が興味を持つ仕事を任せてくれるいい会社に転職した。
ブラックな環境に身を置いていると、感覚が狂ってくる。色々なものがどんどんネガティブに見えるようになる。
そんなときはとにかく、自分を肯定してくれる知り合いなり家族なりに話を聞いてもらう。それから、仕事が辛くなさそうで毎日楽しそうにしているな、と思う人に話を聞く、ということをやってみてほしい。
自分がブラック企業に勤めているなという自覚があるのなら、色々な人の話を聞いてみるべきだと思う。世の中にはそんな働きやすい職場があるのか、という発見に繋がる可能性があるし、何より精神的に疲弊している状態では正常な判断ができない。そういう場合は、正常な人の判断を参考にするのが最も得策であるはずだ。

つまり何が言いたいかというと

仕事に自分が壊されるなんてとてももったいないし辛いことなので、自分が壊れないことを最優先に考えてほしい。
自分が壊れたときに迷惑をかける人を思い浮かべてほしい。家族は勿論、多くの知り合いを心配させることになる。
どこの誰かも知らない他人に心配をかけさせないようにするには、まず自分の周囲の人達に心配をかけないことから始めよう。
自分の身近な人達を幸せにできない人間が、それ以外の人間を幸せにできるわけがないと思う。

自分の現況

7月からwebエンジニア始めて、もう半年弱経ったけど今の自分どうなの、というやつ。
年末に見返すことになると思う。

  • 今何が足りないか?
    => 金、精神的余裕、技術力
    • それらはどうしたら足りるようになるか?
      => 金は今すぐは無理で普段の業務をしっかりこなすことで増やすのが現実的。あと実家に戻る(来年本当に戻るかも)。技術力はまず書くコードの量が少なすぎ。精神的余裕は、どうすればいいか分からない。
    • 普段の業務をしっかりこなせているか?
      => no. 作業の遅延、集中力の欠如、その他問題だらけ。
      • その問題を解決しようと努力しているか?
        => 半分yes. 実際に解決できたかは別として取り組んだことはいくつか。
      • 具体的に何に取り組んだ?
        => ブルーライトカットメガネ買う、睡眠時間増やす、定時後の人が少ないときにガッと進める
      • それらは上手くいっているか?
        => 全部は上手くいってない。定時後でも集中切れるし、結局寝るの遅くなる日もまだ多い。今日もこれ書いてるからそうなると思う。
      • どうしたら上手くいく?
        => 意識の問題だけど習慣化できてない。ルーチン化しなきゃいけない。
  • 毎日のルーチンはどんなことをこなしているか?
    => wikihubの日報コミュニティに毎日日報を書くことと腹筋ローラー。
    • どれくらい続けているか?
      => 日報は半年弱くらい毎日、腹筋ローラーはつい最近始めた。
    • 日報はしっかりとした内容か?
      => 正直内容は薄い。毎日書き続けることが最優先だけど、それは出来てきているので、もう一段上のレベルを目指さなくてはと思う。
  • 毎日業務以外でコードを書いているか?
    => 書いていないし、これができていないのはかなり良くないと思う。
    • そもそも業務以外で毎日コードを書くためにはどうすればいいか?
      => 作りたいものを決める、気になる言語やフレームワークチュートリアルをやる、とか色々ある。
      • それを毎日こなすためにはどうすればいいか?
        => これも習慣化だけど、結局習慣化するためにはモチベと強制力が必要。時間は無理やり捻出する。
      • 無理やり捻出する時間をどう作るか?
        => 結局普段の業務の密度を上げて作業時間を減らして早く切り上げるしかない。
      • 普段の業務の密度を上げるには?
        => 睡眠時間、あと分からないところが出てきたら質問する、「分からないこと」のハードルを下げる(自分の分からないという感覚を信用しない)、Twitterばっか見ないで最速で終わらせて業務後に時間作る、そのときにTwitter見ればいい。
  • 普段何かしらの知識や技術をインプット、アウトプットしてるか?
    => インプットはしている日としていない日がある。していない日は当然として、インプットをしている日でもアウトプットはほとんどしていない。
    • アウトプットを増やすためにはどうすればいいか?
      => 無理にアウトプットのことばかり考えるのはいいことかどうかわからないが、現状はしていなさすぎるので、せめて一週間に一回ブログ書くとかする。
    • インプットがない日はどう減らすか?
      => インプットが全くない日は体調悪いとか寝不足とかの日が多い。まずそれをなくすべき。
    • 技術情報を仕入れているか?
      => Qiitaで気になる記事はすぐストックするようにはしている。
      • その記事をしっかり読んで理解しているか?
        => そもそもストックして読んでいない記事がたくさんある。
      • どうやって記事を消化していくか?
        => 一日一記事、と思ったが、記事の内容量には差があるしどうすればいいか検討。
  • そもそもなんでSIerからweb屋に転職したんだっけ?
    => 知り合った強いエンジニアのように自分もなりたいし、コードたくさん書きたいと思ったから。
    • SIer時代に比べて自分は技術的に強くなったか?
      => 少なくとも前職のときよりは強くなった。でも所詮その程度。
    • 知り合った強いエンジニアと比べるとどうか?
      => 足元にも及ばないし、むしろ差が開いている気がする。
  • 何が足りないのか?
    => 習慣化する力と自分を律する力
    • どうすれば力はつくか?
      => 習慣化する力は少しずつついているはず。日報で。ただまだ足りないので、もう一つ、もう二つくらい習慣化する。一つずつ増やす。今は腹筋ローラーだけど、腹筋ローラーはあまり時間を割かなくてもできる。だから、もう一つ、毎日することを決める。
    • 具体的に何をするか?
      => 業務以外のコードを書く、というのが理想だけど。今それをやると挫折する気がする。Rails Tutorialを毎日30分やる、パーフェクトRuby on Railsを毎日10ページ進める、それのどっちかが現実的だと思う。まずRails Tutorialやる。年末を迎える頃にこれを読み返している状況でRails Tutorial終わっていなかったらかなり恥ずかしい。
    • どうすれば自分を律する力が手に入るか?
      => これは本当に自分のやる気次第な気がするが、もっと具体的で現実的ないい案はないものか。
  • その他に今の自分が変えるべきところは?
    => 土日遊ぶのはいいんだけど、予定がないときに何もしていなさすぎ。勿体無い。コード書く絶好のチャンスなのにだらけすぎ。

書いてて情けなくなってきた。だけどこれが現実だし、現実を見ないことには始まらないんだよな。

第五回splathonに参加してきた。

Splatoonが発売してから1年以上が経った今でも、その楽しさが色褪せることはない。
8/27(土)に開催されたsplathonも、それを象徴する楽しいイベントだった。

splathonとは

splathonとは、2015年5月28日に任天堂から発売されたWiiU専用ソフト「Splatoon」と、「marathon」(マラソン)を足した造語だ。
似たような言葉にハッカソン(hack + marathon)という言葉がある。こちらの記事によると、短期間でソフトウェア開発を行い、そのアイデアや技能を競う競技だ。
splathonは、株式会社Speeeさん発祥の言葉で、「数時間から数日間の短い時間、Splatoonに没頭して複数の参加チームで競い合って楽しもう」という、IT企業のSplatoon対抗戦イベントのことである。
詳しくは第四回のSpeeeさんのブログを参照するとよいかも。

参加までのいきさつ

基本的にはsplathonは企業対抗戦のため、企業毎にチームを組んで出場するのだが、今回は知り合いのバースト・インカーさんに誘われて即席チームで出ることになった。splathonは前から名前だけはちょくちょく耳にしており、楽しそうだな〜という印象を受けていたため、バースト・インカーさんが募集していた時にはすぐに飛びついた。
splathonまで残り一週間ちょっとという時期に即席で組まれたチームだが、自分以外ウデマエS+カンストというとんでもないチームになった。ちなみに自分の最高ウデマエはS+74、基本的にチャージャー(特にリッター)しか持てない。
当日までにある程度連携を深めるべく、毎夜タッグマッチや対抗戦を行っていた。毎夜Splatoonに没頭していたこの時点で、もうsplathonは始まっていたのかもしれない。

当日

会場は六本木にあるSpeeeさんのオフィス。非常に綺麗でオシャレ。

また、お菓子や飲み物などとにかく充実していて素晴らしかった。

参加チーム紹介

企業名パワーに圧倒された。相当レベルが高い。
自分は即席チーム「ポッポ」で参戦。なんとなく周囲のイカ界隈が「ポ」という感じだったからこうなった。雑ですまんな。

要注目はイカナカマを開発・運営し、前回のsplathonで大人相手に20キル以上出したという圧倒的戦績を出したスーパー小学生、通称"スパショ"を擁するしくみ製作所の「瀬賀高等学校水槽学部」、そして前回優勝チームKADOKAWAの「K/D2016」だ。

ルール

第五回splathonはイカのようなルール。

  • 全チームによるスイスドロー形式で試合進行。1回のラウンドで2試合行い、2勝なら勝点3、1勝1敗なら勝点1、2敗なら勝点0を得る。
  • ラウンド4か5まで行い、勝点上位4チームが決勝トーナメントに進む。
  • 1試合目は先攻チームがルール(ガチエリア/ガチヤグラ/ガチホコ/ナワバリ)を決め、後攻チームがステージを決める。2試合目は後攻チームがルールを決め、先攻チームがステージを決める。
  • ギアは「逆境強化(アタマ専用)」「インク回復量アップ」「スペシャル減少量ダウン」で固定。サブスロットにはなにもギアパワーがついていない状態。
  • 勝点等の理由で決勝トーナメントに参戦するチーム数が合わなかった場合や、決勝トーナメントで対戦成績が1勝1敗だった場合は、ステージランダムのナワバリバトル一本勝負を行う。

第1ラウンド

VS しくみ製作所

初戦でいきなり要注目チームとの試合が決まった。スパショぶっ潰す、社会の厳しさを教えてやるなどの物騒な発言を聞かなかったことにしつつ、戦いへ。
1試合目、2試合目ともに勝利、勝点3をもぎ取って第2ラウンドを待つ。

この間、他のチームの対戦で回戦トラブルが相次ぐ。

会場にはWiiUが16台もあり、いろいろと難しい模様。

はせがわさんが開発したこの4画面観戦システムで、待機中も楽しい時間が過ごせた。はせがわさんは寝過ごしたり逆方向の電車に乗ってしまったりと災難続きだったようだ。ほんとお疲れ様です。

第1ラウンド終了時点ではこんな感じ。

第2ラウンド

VS KADOKAWA

回線落ちによる再戦が相次ぎ、ポッポチームは第1ラウンドから第2ラウンドまで3時間ほどあった。自分も軽くウトウトしていたが、前回優勝チームとの戦いということで気合いを入れいざ出陣。
しかしまあ、対戦相手が対戦相手ということもあって緊張したのか、結果は2敗。それも結構ボコボコにされた。
マヒマヒエリアはリッターの得意なステージだったんだけど、焦りまくって振りかぶったダイナモを射抜けなかったりなどした。無念。ポ。

関係ないけどこういう素晴らしい環境でイカができて素晴らしかった。

第3ラウンド

VS BookLive!

ルールに少し変更があり、回線落ちによる再戦等で時間が押しているため、第3ラウンドまでの勝点で決勝トーナメント進出チームを選出することに。第2ラウンドで勝点を上げられなかった我がチームはこの試合が重要なポイントとなった。
しかし、決勝トーナメント進出の懸かる重要な試合でも冷静さを欠くことなく2勝。キンメダイホコで出したスコアが自分の第五回splathonにおけるハイライトとなった。

第3ラウンドが終了した時点での順位。

この時点で勝点9のKADOKAWA、勝点6のしくみ製作所と我等ポッポは決勝トーナメント進出が決定。残りの1チームを決めるためにこれから壮絶な戦いが始まる。

  • 勝点4の3チーム(pixiv、楽天、CyberAgent)の代表者がじゃんけんで勝者を1人決める。勝者の所属チームには謎の勝点1が与えられる。
  • 勝点5の3チーム(シャープ、NHN、四社連合)+謎の勝点1付与により勝点5になったチームの計4チームでステージランダムのナワバリ一本勝負のトーナメントを行い、優勝したチームには謎の勝点1が与えられる。
  • 勝点6以上の3チーム+謎の勝点1付与により勝点6になったチームの計4チームで決勝トーナメントを行う。

まずは熱いじゃんけん大会、勝ったのは楽天。続いて熾烈なナワバリバトルを制したのは四社連合だった。

決勝トーナメント1回戦(準決勝)

VS 四社連合

へへへ、repeatedlyさんへの日頃の恨みを晴らしてやるぜ…!(※日頃の恨み等の感情は一切ありません)

1試合目はハコフグエリア、2試合目はキンメダイエリアだった。見事2勝、完全にチームメイトのおかげ。キンメエリアで20k出したロンカス持ちのタイビィくん、ダイナモとスシコラとロンカスとホッカスとハイカスでカンストしてます。いみわからん。いっこわけてほしい。

決勝戦

VS KADOKAWA

決勝の相手は、準決勝で"スパショ"率いるしくみ製作所を倒し、第2ラウンドで我々も辛酸を舐めさせられた因縁の相手KADOKAWA。 1試合目はモンガラキャンプ場ガチヤグラ。自分は普段から使っているリッターを持たなかった。このステージはメガホンレーザーが刺さりやすく、相手にリッターがいない状況(今までのKADOKAWAの試合を観戦して考察)なのでメガホン持ちのスプラスコープワカメを持った。
熱い展開が続く中、自分達がカウントリードを奪った状態で相手がヤグラに乗り試合は延長戦へ。

しかしここでヤグラを止めることができず、カントリードを奪われ逆転負けを喫する。

メガホンレーザーを撃って試合を終わらせに行こうとスペシャルゲージを貯めたものの、メガホンを撃つ前にキルされる始末。おお情けないことよ…!

2試合目はキンメダイホコ。
タイビィくんが空中ホコ直撃を何回か決めていなければ負けていた。タイビィゲーである。いやほんと何も出来なくて申し訳ねえ…KADOKAWAマジ強いんですよ…。
というわけで、なんとか1勝1敗に持ち込んだ。運命はステージランダムのナワバリ一本勝負に託されることに…。

ラストのナワバリのステージはモズク農園に決まった。自分はリッター持ちたい!って言ってリッター持ったけど、正直モズクのような広いステージだったら、もっと塗りブキで来るべきであった。キル重視のスタイルで味方の塗りを促進できれば…と思っていたが、最終的なキルデスは1/0というなんとも貢献できていない感の滲み出るスコアとなった。
このナワバリで勝負あり。優勝はKADOKAWAで、我等ポッポは準優勝となった。

KADOKAWAさんほんとおめでとうございました。

懇親会

splathonにはIT企業所属員のチームのみが参加しているため、凄いエンジニアの方がたくさん来場していたりする。
自分も7月から新米のエンジニアとして働き始めた身なので、色んなエンジニアの方と交流したい!という思いがあった。が、人見知りが盛大に発動して、情けないことにほとんど誰にも話しかけられなかった。非常に勿体なかった。次の機会があれば、色んなエンジニアの方と交流するチャンスを絶対に逃さないようにしたい。

寿司肉ピザで全員優勝。

LTタイム

今回は「スプラトゥーンにおける自分なりの立ち回り」というお題で数名の方がLTするという企画があった。

こんな感じでLTの評価は高く、聞いていて面白かったしとても有意義だった。
LTの資料はイカに貼っておくので、ぜひ見てみてほしい。

speakerdeck.com

speakerdeck.com

speakerdeck.com

閉会

初参加な上に即席というチームだったが、今回は準優勝することができた。 チームメイトの素晴らしい活躍に感謝したいし、もっとチームに貢献できるようなチャージャー使いになりたい。

帰宅してなおSplatoonに勤しむ面々

今回は声優志望の方が実況で場を盛り上げてくれた。実況があると楽しさが増して非常に良かった。 実況してくれた方はこちら。

終わりに

改めて運営してくださった皆さんにお礼を言いたい。
非常に楽しむことができたし、次回があればまた参加したいと強く思えるようなイベントだった。
次こそは優勝するためにもこれから鍛錬を続けていきたい。
本当にありがとうございました。

日報 2016/08/16

今日ちょっと正規表現の沼に足を取られてしまったのでそれを書いていきたい。

やろうとしたこと

Ruby on Railsでアプリケーションを作っていて、「お知らせ」(notification)というモデルを新規に登録する際に起きた話。
「お知らせ」にはタイトルや登録日といったプロパティがあるのだが、今回問題になったのはURLというプロパティ。URLにはwebページのリンクが入るのだが、このURLリンクをユーザーが入力する際のバリデーションをどうするかという話になった。
rails url バリデーション」といった言葉でググると色々出てくるのだが、結論として「こちらがどんなに精密にURLのバリデーションチェックをしようが、ユーザーが存在しないURLを入力したら意味がなくなる。形式的なバリデーションは出来ても、ユーザーの入力によっては無力だ」という話になった。これにはまあ色々な意見があると思うのだが、今回作成しているアプリケーションは、一つの企業の組織内の人間だけが利用するものなので、精緻なバリデーションは不要だろうということになった。

本題

今回のバリデーションの内容は、「全角と半角カタカナのみを禁止にする」というものになった。早速ググッて色々調べたらなにやらよさげな正規表現が。

 /^[ -~。-゜]*$/

正規表現において、^は行頭、$は行末を表す。つまり上記の正規表現は、行頭〜行末の間に、半角の文字が一文字以上入っていれば大丈夫という旨だということ。
なるほど、これなら良さそうだと思い、モデルクラスに

validates :url, format: { with:  /^[ -~。-゜]*$/ }

と記述してサーバーを再起動し、お知らせの新規登録画面に遷移しようとした。 そして表示された画面がこちら。 f:id:yklitter:20160818000454p:plain

エラーなのかと萎えつつエラー内容を読んだら、
「その正規表現は複数行向けのアンカー(^と$)を使っているけど、脆弱性があるよ。\Aと\zって知ってる?それとも:multilineオプションをtrueにするの忘れた?」という内容だった。(英語が苦手なので誤訳があったら大変申し訳ない)
脆弱性?と思い調べてみたら、Ruby正規表現機能はデフォルトで複数行モードになっているとのことだった。
例を挙げると、/^[a-z]*$/という、「半角小文字アルファベットだけで構成された文字列ならおk」という正規表現バリデーションに、

ほげふが全角
hogefuga

という複数行の文字列を通そうとすると、通ってしまう。
これは、半角小文字アルファベットだけで構成された文字列「の行がある」という理由でバリデーションを通過する。「^」はあくまでも行頭であり、行の頭であれば問題無いと判断されるようだ。
これではバリデーションが意味をなさなくなってしまい、セキュリティリスクがある。そのため、^と$の代わりに「\A」と「\z」を使う。「\A」は文字列の先頭、「\z」は文字列の末尾を表すとのことで、なるほどこれなら複数行でも問題なさそうだ。
railsはこのようにセキュリティリスクがある正規表現をArgumentErrorとして表示してくれるのか…と感動してしまうワンシーンだった。

その後

\Aと\zを使って、/\A[ -~。-゜]*\z/に書きなおしたぜ!と意気揚々と「あいう」という全角文字列をURLの入力欄にぶち込んだら、あっさり通過してしまった。あれ…。
全角アルファベットが含まれているとしっかりとエラーメッセージを吐くのだが、日本語のみだとすんなり通る。
マジか…とげんなりしていたところ、どうやらShift_JISの場合のやり方らしい。正規表現沼と文字コード沼はつながっていた…。
で、まだどうするかを模索中。
沼は深い。

参考にしたサイト

Ruby正規表現で全角と半角のチェック(バリデーション)する

正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう | 徳丸浩の日記

qiita.com