あらすじ
僕には憧れの先輩がいました。
彼はCTOでWEB、モバイル、インフラ、どの領域でも対応可能で、使いこなせる言語は10以上、誰の目から見てもスーパーエンジニアでした。
当時の僕はSES営業なので、彼と関わりはなさそうですが、クレーム時のアドバイスやお客さんとの付き合い方など職域の垣根を超えてアドバイスしてくれる良い人でした。
そんな先輩が時々口にするのが「へっぽこ、エンジニアにはなりたいと思わないの?」でした。
口説かれてると思いました。
「エンジニアになったら俺が責任持って最強にしてやる、俺に付いてこい❤️」という隠れたメッセージがあると思ったからです。
確かにエンジニアになるのはありでした。
というのも、当時の僕の営業成績は非の打ち所がなく、毎月トップは当たり前でした。
正直、競う相手がいなくて営業に飽きていたのです。
挑戦が大好きな僕は思い切って社長に頼み込み、エンジニアに転向することに決めました。
大丈夫、先輩がいる僕は無敵だ。
僕は確信してました。
しかし、それは大きな誤算でした。
憧れの先輩は・・
良い人の皮をかぶった😈だったのです
地獄のはじまり
エンジニアになる前日、先輩にSlackをしました。
へっぽこ
Slackは返ってきませんでした。
そのときは忙しかったのかなと思い、気にもとめませんでした。
初日がやってきました。先輩が出社しました。
僕はどんな研修でも耐えれる自信がありました、忍耐力は営業で培ってきたので。
先輩
へっぽこ
SES営業をしていたので、Railsという名前だけは知ってました。
そのときは「よくRailsの人を営業していたな、僕はこれからRailsを学ぶんだ」と感慨深い気持ちになっていました。
僕は当たり前のように言いました。
へっぽこ
しかし、返ってきた返事に顎が外れたのを今でも覚えてます。
先輩
終わらない環境構築
僕はプログラミング経験ゼロでした。
変数ってなんですか?って質問されても答えられないレベルです。
当然、研修は受けられると思ってました。
先輩
一瞬思考が停止しましたが、この会社に入ったときも営業未経験からトップ営業まで登りつめました。
だから、多少困難な道でも気合さえあればなんとかなると思いました。
へっぽこ
先輩
へっぽこ
僕は思いつくワードを手当たりしだいグーグルで検索しました。
最初は順調でした。
VSCode、Rubyのインストール、やればできるじゃんと思いました。
しかし、ここから先は甘くありませんでした。
そもそも「Rails 環境構築」と打つと
「難しい」とサジェスチョンがくるフレームワーク。
初心者が簡単に構築できるはずがなかったのです。
繰り返されるパソコンの初期化
途中まで順調だった僕も、Railsのインストールから手が止まるようになっていきました。
・パスの不通
・Bundlerの競合
・バージョン間の競合
・MySQLなどのgemの固有エラー
・DBの接続
・データのリストア
問題は山積みでした。
しかも悪いことに、知識不足だったためどの情報が正しいかわからず、サイトにのってるコマンドを手当たりしだい打ち込んでいったのです。
そして何が起こったかというと、パソコンのルートパスが狂ったり、使えてはずのLinuxコマンドが効かなくなりました。
もちろん知識ゼロの僕には直し方など到底わかるはずもありませんでした。
僕は会社から買ってもらった新品のMacBookProをわずか数日で初期化しました。
これを環境構築が終わるまでの1ヶ月間、繰り返しました。
10回以上パソコンを初期化しました、控えめに言って地獄でした😨
はじめての実務
やっとの思いで環境構築を終えた僕にはじめてのタスクが振られます。
内容はサイト内の文字修正やレイアウト修正。
VSCodeの検索機能を使って文字を検索し、修正箇所を特定→修正をするだけだったので難なく終わりました。
しかし、この調子でタスクをこなし続けるわけでもなく、すぐ現実がやってきます。
そう、
Railsが絡んだタスクです😈
今まではHTMLとCSSのタスクだったのでなんとかなりましたが、
Railsだとそうはいきません。
ルート・コントローラー・モデル・マイグレーションなどなど。
知識ゼロの僕が調べながら行うには限界がありました。
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
人間ではないと思いました。
少なくとも人間の血は通っていないでしょう。
僕は社内で唯一Railsを少しだけ触ったことのあるY君の助けを借りながら、
意味わからないコードたちと格闘しました。
二ヶ月目
最悪の日々が続きます。
コードを変更しても変更してもエラーが止まらないのです。
さらにその変更が正しいのか正しくないのかさえもわからない始末。
1日中作業をしても成果物が何もでない日々が続きます。
そして自己嫌悪に陥りました。
だって毎月給料でてるのに、何も会社に貢献してないのだから。
僕のストレスはピークに達してました。
しかし、そんな僕に手を差し伸べてくれたのは社内のY君でした。
Y君
へっぽこ
Y君
へっぽこ
Y君
へっぽこ
Y君は答えこそ教えてくれない人でしたが、ヒントをたくさん与えてくれました。
どん詰まりの日々、僕はY君が与えてくれたヒントに藁にもすがる思いで食らいつきました。
そして・・タスクを完遂させることができたのです🎉
さらなる地獄
4ヶ月目、順調にタスクをこなしていた僕に死を告げるSlackがやってきます。
先輩
へっぽこ
先輩
へっぽこ
僕はひとまずElasticsearchについて調べることにしました。
どうやらドキュメントを高速で抽出するオープンソースの検索エンジンのようです。
はじめて触れるワードでしたが、僕には謎の自信がありました。
なぜなら、そのころはいくつもRailsのタスクをこなし、
調べればできるという感覚があったからです。
しかし、それは大きな間違いだったのです。
成果がでない日々再び
僕はさっそく公式ページからElasticsearchをインストールしました。
そして、いきなりここで詰みました。
ElasticsearchをRailsから呼び出す方法がわからないのです。
日本語のドキュメント、英語のドキュメントを片っ端から読んでいき、サンプルアプリを解析しました。
しかし、1日が過ぎ、3日が過ぎ、10日が過ぎても全く調査に進展がないのです。
便りの綱のY君もこれに関してはからっきし。
さすがにこの状況には大きな恐怖を感じました。
へっぽこ
先輩
へっぽこ
〜〜しばらくの沈黙〜〜
へっぽこ
先輩
へっぽこ
なんとあの先輩がライブラリー名を教えてくれたのです。
いつも悪魔に見えていた先輩も天使に見えました。ライブラリー名を教えてくれだけなのに。
僕は立派に調教されてました。
僕はルンルン気分でGitからライブラリーを落とし、調査を開始しました。
滑り出しは順調でした。
検索対象となるデータを設定ファイルに書き込み、Reindexコマンドでデータを取り込む。
しかし・・
どうしてもその先にはいけませんでした。
結局そのあとは成果のない日々が続き・・・気づけばタスク開始から1ヶ月が経過していました。
精神はすでに限界でした。
家の目の前に線路が通っているのですが、「電車にひかれたら楽になれるだろうな」と何回も思いました。
迷った挙げ句、社長に相談しました。
「本当に申し訳ないです。この仕事、できません」
生まれてはじめて言ったセリフでした。
社長は快く受け入れてくれ、Elasticsearch導入のタスクは外注に任せることになりました。
帰ってきた地獄
エンジニアになってから半年が経ちました。
さすがにここまで来ると僕のレベルは上がってました。
なんと・・特定のメールを解析して条件に応じてDBに自動的に保存するバッチシステムを開発できるぐらい成長したのです✨
これで社内ともお別れです、さよなら地獄の日々よ。
というのも僕はある企業との面談に合格し、次週からSESで現場に出ることになっていたのです。
僕の気持ちは高鳴ってました、なぜなら理不尽な指示がなくなるからです🤩
しかし、現実は皮肉なものでした・・
それは夜の8時、一本の電話がきっかけでした。
へっぽこ
Tさん
へっぽこ
Tさん
へっぽこ
Tさん
へっぽこ
デスノートに書かれてないのに心臓発作を起こしました。
僕はTさんの電話を切った後、慌てて社長に電話をかけました。
へっぽこ
社長
へっぽこ
社長
へっぽこ
社長
へっぽこ
社長
へっぽこ
僕は社内には残りたくありませんでしたが、今までたくさんお世話をしてくれた社長の要望は断るわけにはいきません。
仕方なく先輩にプロジェクトの概要を聞くことにしました。
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
この会社はみんな嘘つきでした。
そして待ち受けていたのです・・この一年を締めくくる最後の地獄が・・
君に作って欲しいのは動画プレーヤーだ
ビジネスアプリの開発環境は以下の通りでした。
– | 環境 | 経験 |
1 | Typescript | Javascriptすらやったことない |
2 | React Native | なにそれ、知らない |
3 | React-Redux | 知らないよ・・ |
4 | React Navigation | I have no idea |
5 | iOS/Android | 知らないって言ってるだろ!! |
6 | Ruby on Rails | 僕の唯一の取り柄、君だけは離さない |
ご覧の通り詰んでいます\(^o^)/
環境を見ただけで3日間寝込む自信があります。
しかし弱音を言ってる暇はありません。
環境構築を終えたあと、いくつかのタスクが振られたのです。
僕は夜遅くまで🤮を吐きながらReactNativeとモバイル開発に向き合いました。
そしてなんとか少しずつタスクをこなしていくことができたのです。
しかしあのSlackが来るまで僕は忘れていました。
あの先輩のプロジェクトがこんな生易しいものではないと・・。
先輩
へっぽこ
先輩
先輩
へっぽこ
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
僕は3階建ての家の窓から外を眺め、ElasticSearchのあの日々を思い出していました。
しかし、所詮僕は先輩の🐶ちゃん、従うしかありません。
僕は誓います、この世界に・・いや・・先輩に抗ってみせるんだと。
地獄とさようなら、最後のリベンジマッチ
まずはReactNativeで動画再生できる方法を調べました。
これはあっさり見つかって実現しました
↑動画を再生することができたのです。
次のステップです。
Web上の管理画面から動画をアップロードしたらアプリ側に反映され、再生できる仕組みを作ります。
ここは難所でしたが、なんとかソースコードに食らいついて実装することができました。
喜びのダンスを踊っていると、先輩から実装した箇所に指摘が入りました。
先輩
へっぽこ
先輩
へっぽこ
〜〜〜3日後〜〜〜
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
その後、なんとか2時間以上の4kの動画を200kbpsでも動かせるよう実装することができました。
しかし、道のりはまだあります。
動画プレーヤーのボタンを配置してそれぞれ機能させなくてはいけません。
最後の戦いは間近に迫っていました。
ラストスパート ボタンたちの実装
まずは一番簡単なところから手をつけます。
再生とポーズです。
これは超簡単でした。
動画上にアイコンを載せ、押したら再生・停止するだけです。
次に先送り・巻き戻しボタンと拡大・縮小ボタンです。
先送り・巻き戻しボタンは簡単でした。
ボタンが押されたら特定の秒数を現在の秒数に増減させるだけです。
拡大・縮小ボタンはライブラリで実現できなかったので、
拡大ボタンを押したら動画を横に回転、リサイズして拡大っぽく見せて、縮小ボタンが押されたら元に戻して実現させました。
次はスピードコントロールとバックグラウンド再生です。
スピードコントロールもバックグラウンド再生もライブラリーの力でなんとかなったため、かなりあっさり実装できました。
それでは最後のボス・・シークバーの登場です👹
これがホントにきつかったです。
実装にかかった時間の大半を占めたのがこいつでした。
シークバーを実装するためには、動画の総時間・現在の時間・シーク先の動画時間を取得し、シークバーを動画時間に合わせて動かさなければいけません。
さらに、動画プレーヤーはシークしたら画面もそれに合わせて動くため、高速で動かすと画面がフリーズします。
したがって負荷対策をする必要があるのです。
死ぬ気で実装を行いました。
このころは実装が終わりに近づくにつれ精神も終わりを迎えていました。
家の前の線路を見るたびに
「電車にひかれたら動画プレーヤーを作らなくてOKだよな🥳 」
とばかり考えていました。
完全病んでいる人です。
しかし僕はやり遂げました・・。
ついに・・動画プレーヤーを完成させることができたのです🎉 🎉 🎉 🎉 🎉
完成までに3ヶ月半もかかってしまいました😭
残念ながら完成画像はありませんが、ざっくりこんな感じの画面ができました。
急いで先輩に報告をします。
へっぽこ
先輩
へっぽこ
先輩
へっぽこ
先輩
衝撃でした。
あまりの出来事に脳内で銀河系が広がり、フルスピードで宇宙を駆け回りました。
そのときは社長の誕生日パーティーでした。
バーカウンターでお酒を飲んでいた先輩を横に僕は空を仰ぎました。
「僕の努力はなんだったんだろう・・」
たぶんこんな衝撃、人生で2度と味わうことはないでしょう。
そしていま・・
エンジニアになってから1年半が経ちました。
いまは自社サービス「シゴトサガース(仮称)」のフルリニューアル作業を行っています、もちろんひとりで。
リニューアル内容を決め、それに基づいて画面設計・DB設計、デザイナーを下につけて指示をだしつつ、ひとりで実装を行ってます。
さらに技術選定も僕が行い、環境をイチから構築しました。
– | 環境 | 状態 |
1 | Typescript | New! |
2 | Next.js(React) | New! |
3 | React-Redux | New! |
4 | Material-UI | New! |
5 | ElasticSearch | – |
6 | Ruby on Rails | – |
7 | AWS | – |
8 | Vercel | New! |
1年半前は自分がここまで到達するなんて思いもしませんでした。
しかし、今になってわかります。
これはあの壮絶な1年間があったからできたんだと🔥
新しい技術を調べながら実装するのは僕にとっては呼吸と同じです。
そのノウハウや心構えを1年間で学んだのです。
今思うと、先輩はこれを僕に伝えたかったのかもしれません。
不思議といまは先輩に大きく感謝しています。
今月からは僕に新卒が1名つきます。
これからはマネージメントもしていかなくてはなりません。
残念ながら、まだまだ僕の地獄は続きそうです。
しかし、悲観はしません。
地獄のその先に見たことない景色が広がってるのですから🌈
僕はそこを目指して、今日も進んでいこうと思います。
凄く面白かったです^^ 応援してるので頑張ってくださいね(笑)