2020年の振り返りと2021年の抱負

あけましておめでとうございます。表題の通り、2020年の振り返りと2021年の抱負をさくっと書いておこうかなと思います。

ぶっちゃけ自己満以外の何物でもないんですが、将来の自分が見返せるようにしたいので。2021年が終わるときにまた振り返りたいですね。

主にプログラミング関連、英語関連、大学関連、その他、の4つを軸に書きます!

2020年の総括

2020年を映画化にするなら、タイトルは間違いなく、"Work From Home 〜引きこもりが世界を救う?〜"になりますね。

中国で生まれたCOVID-19が全世界にあっという間に広がり、甚大な被害を各地各所にもたらしました。大学生である僕もコロナの影響を受けました

大学が全部オンライン授業になった

僕は早稲田大学の理工学部に通っているんですが、2020年は全ての授業がオンラインでした。6割ぐらいが録画式でいつでも好きな時間に見れて、残り4割がリアルタイムでの課題提出などが求められる授業です。

幸か不幸か、全ての授業がオンラインになったおかげで、まとまった時間が取れるようになりました。

忌々しい1限の授業は、全て授業の録画がオンラインで見られるようになったので、最高です。

僕はインターンに時間を使いたかったので、オンライン授業のおかげで、平日にガッツリシフトを組むことができました。プログラミング力をガッツリとつけることができました。

平日はインターン&リアルタイムでの授業をこなし、休日に残りの授業と課題を片付ける、というフローで一年を乗り越えました。

授業受けて課題やってインターンしたら1年が終わってましたw

Node.js/Reactの会社でインターンをすることになった

2020年の1月から新しい会社でインターンをすることになりました。僕の人生において3社目です。

1社目では、Railsエンジニアとして、何もわからないところからスタートし、2社目では、RailsでAPI開発したり、AWSを運用したりしてました。

Railsに1年 〜 1年半ぐらい関わってきたんですが、ぶっちゃけRailsに飽きましたw

今振り返ると、当時の自分はまじで何もわかってなかったなと。Railsはいい意味でも悪い意味でも、よしなにやってくれることがありすぎで、「こうやったらこう動く」というパターンの暗記になっている感があったんですよ。このままRailsをやっていても、実力が頭打ちになるだろうな、という予感がしていました。

そんなわけで、

  • そろそろ新しい風を入れたいなと思っていたこと
  • JavaScriptが全然書けなかった。モダンフロントがさっぱりだったこと
  • 静的型付けのある言語を触ってみたいなということ

という3つの理由から、今の会社にインターンで入ることになりました。入社して数ヶ月で春休みに突入し、新規プロジェクトにアサインされ、必死こいてコードを書きまくっていたら、けっこう成長しました。

モダンフロントは、Reactをバリバリ使いこなせるようになりました。まじでReactめっちゃ楽しいです。最近は、React Hooksの台頭もあり、進化が著しいですが、そのトレンドのど真ん中のタイミングでReactを始められた自分は運がいいです。

JavaScriptはもちろんですが、TypeScriptも書くようになりました。

ま・じ・で、TypeScriptは最高です。僕はVisual Studio Codeを使っているんですが、TypeScript × Visual Studio Codeの開発体験は控えめに言っても神です。

ExpoでiOS/Androidアプリを作れるようになった。アプリストアで公開した

というわけで、2020年の1月から、ReactでWebアプリケーションのクライアントサイドを開発するようになりました。

Reactを使い始めて数ヶ月立った頃、ふとReact Nativeの存在が頭をよぎりました。そういえば、iOS/Androidアプリが作れるんだよな、と。

思い立ったが吉日、アプリを作ることにしたんですが、ReactとReact Nativeが自分の想像以上に同じ雰囲気で書けるので、意外とあっさりアプリが出来上がりました。

React NativeのフレームワークであるExpoというのを使ってアプリを作ったんですが、公式のドキュメントが死ぬほど手厚く充実していて、あまり詰まるところがなかったです。

そしてアプリを作ったことで、今までにバックエンド、フロントエンド、モバイルアプリ開発、インフラ、の4つの領域を、多少なりとも経験することができました。

おや?、ということは、俺はフルスタックエンジニアなのでは?

もちろんまだ各領域での習熟度はまだまだですが、大学3年にして、これだけの幅広い分野を一通り経験できてハッピーです。

Gatsby.js・Next.jsに入門した(そしてめっちゃ便利だった)

人は初めて触ったプログラミング言語を親だと思いこむ傾向がある

というのは冗談ですが、自分にとってのモダンフロントは、Reactが最初でした。

最初はとっつきにくかったですが、慣れるとめちゃめちゃ快適です。

Reactを触り始めてから半年ぐらい立った頃に、Gatsby.jsでブログを自作してみることにしました。

そしてできあがったのが、今この記事が公開されているブログです。

2020年の秋頃、掛け持ちで受託開発的な案件をやることになりました。

知り合いの紹介です。そこで新規事業開発のリードエンジニアを任されました(というのも、エンジニアが僕一人しかいないからなんですがw)。

要件定義や技術選定のレベルから実装してリリースまで、一気通貫してやることに。

そこで使うことに決めたのがNext.jsです。ぶっちゃけ、Next.jsを使うのは初めてだったんですが、評判は良さそうだし、ドキュメントも非常にしっかりしていて明快だったので、俺なら出来る、という謎の自信で、えいやっ、とNext.jsを使うことにしました。

そんな行き当たりばったりで使うことになったんですが、当時の自分の判断は間違っていませんでした。Next.jsめっちゃいいです。最高です。要件を満たす実装ができましたし、開発効率も非常に高い。

情報源が8割がた英語なんですが、僕は英語が得意なので、そんなに困ることもなく進められました。逆に言うと、英語ができなかったら爆死してたと思います。が、もともとReactも英語圏の情報が大半ですし、今更かなという感じではあります。

というわけで、Gatsby.jsとNext.jsの両方を経験することができたんですが、Next.jsのほうが将来有望かな、と個人的には思いました。

2021年1月1日時点で、

  • Gatsby.js: GitHubのスター数48414
  • Next.js: GitHubのスター数59148

と1万ほど差がありますし、Google Trendで調べた結果でも、Next.jsのほうが圧倒的です。

google trend

コンピューターサイエンスを勉強したら世界が変わった(現在進行系)

夏休みに外資系のエンジニア職の選考を受ける機会がありました。

オンラインテスト(3ステップ)→1次面接→最終面接(1人と面接 × 3回)というフローで、最終面接まで進むことはできたんですが、残念ながら採用には至りませんでした。

めちゃめちゃ悔しかったです。ここで決まっていたら、あとの大学生活はボーナスタイムだったんですけどね...

外資のエンジニア職では、データ構造やアルゴリズムなどを絡めた問題が出題されます。僕もコンピューターサイエンスの学科に所属しているとはいえ、知識が穴だらけだったので、ガッツリと勉強をすることにしました。

ちゃんとコンピューターサイエンス(CS)を勉強してみて、ああ、自分は何もわかっていなかったなぁ、とw

見える世界が激変しました。

大学で学ぶことは役に立たないという意見がインターネット上に転がっています。しかし、コンピューターサイエンスでは、大学で学ぶことが業務に直結します。コスパ良すぎです。

データ構造、アルゴリズム、ネットワーク、OS、構文解析、型システム、などなど、CSがカバーする範囲は膨大です。現代は、便利なライブラリーを組み合わせることで、膨大なCSの知識を習得しなくても、プログラミングをすることは可能ですし、僕も最初はそこからスタートしました。

それである程度の業務はこなせます。

しかし、CSの知識があると、やっぱり理解度の深さとか、新しい技術を使いこなせるようになるスピードが段違いなんですよねー。大学4年でガッツリCSの知識が付けば、その知識は一生使えるんですよ。たとえプログラミングがメインの仕事ではなくても。

Unityをやり始めた。めちゃめちゃおもしろい

Unityというゲームエンジンを使ってみたんですが、これがめちゃめちゃ面白いです。

Unityでは、人工知能を搭載したエージェントを学習させたり、物理シミュレーションを行ったり、はたまた普通にゲームを作ったり、とやれることが無限にあります。

僕は今まで、アプリやwebサイトを作るぐらいしかやってきませんでした。

ゲーム開発とかシミュレーションには無縁だったんですが、CSの基礎があれば、意外と簡単にキャッチアップできる、というのをUnityをやり始めて感じました

Unityの場合は、公式のドキュメント (https://docs.unity3d.com/Manual/index.html)がめちゃめちゃしっかり書かれているので、プログラミングの基礎力があれば、とりあえずドキュメント読みながら試行錯誤すれば、ある程度はできるようになりそうです

僕は、AIとかシミュレーションの分野をやってみたかったので、以下のリポジトリを参考に色々遊んでました。面白い動画を撮ってYouTubeに上げるのもアリですね。

https://github.com/Unity-Technologies/DOTS-training-samples

https://github.com/Unity-Technologies/ml-agents

以下のUdemyのコースも購入して勉強してみたんですが、非常に良かったです。Unityってこんなこともできるんだ!、という可能性に気づける講座です。

https://www.udemy.com/course/ai_with_goap/

https://www.udemy.com/course/artificial-intelligence-in-unity/

海外ドラマ・映画を見まくった。英語と関わるのが日常になった

業務中も7割は英語のドキュメントを読んでますし、息抜きで洋書を読んだり、海外ドラマを見たり、と英語には普通に触れてました。

僕にとってはこれが楽しいことなので、めっちゃコスパいい趣味だなと感じております。

2020年に見た海外ドラマ、洋画をざっくりと上げておくと、

  • How I Met Your Mother シーズン1 ~ 9 (Netflix)
  • サウスパーク シーズン16 ~ 22(Netflix)
  • ブレイキング・バッド シーズン1・2(Netflix)
  • Friends シーズン3 ~ 10(Netflix)
  • Suits シーズン3 ~ 5(Netflix)
  • シリコンバレー シーズン3・4(Amazon Prime)

あたりです。

特におすすめしたいのはHow I Met Your Motherとサウスパークの2つ。

How I Met Your Motherは、これまで見た海外ドラマの中でトップ3に入る面白さです。1シーズン22話ぐらいで、全9シーズンなんですが、2.5週間で全部見てしまいました。面白すぎて。

サウスパークはブラック・コメディのアニメなんですが、現代を風刺したセリフとキャラクターが秀逸すぎて、ニヤニヤ笑えます。下品だし、差別ありまくりなんですが、そこが面白い。

ドナルド・トランプを風刺したり、アメリカの行き過ぎたポリティカル・コレクトネスに対して揶揄するようなエピソードを作ったり、とにかくユーモアのセンスが抜群。アニメ内で中国の批判をして、実際に中国ではサウスパークがBANNされたりするぐらい過激。

こんな感じで、海外ドラマや洋画を楽しんでました。

リーディングやリスニングに関しては、この「息抜き」を続けるだけで、自然とレベルアップしていきそう。

しかし、スピーキングに関しては、「息抜き」だけでは全然ダメだな、と実感する出来事がありました。

2020年の秋に外資の面接があり、英語オンリーだったので、対策のためにスピーキング強化月間を設けました。対策はそれなりにしたんですが、スピーキング楽勝、とまではまったくたどり着かず、どもりまくりのたどたどしさ全開スピーキングでした。

将来英語圏に数年住んでみるとか、英語圏で働くとか、そういうことがやりたいので、スピーキング力の向上は喫緊の課題です。

で、スピーキング力を猛烈に向上させるための一番効率いい方法が、「外資に就職すること」だと思っているので、頑張りたいですね。

GitHub: 2,456 contributions in 2020

2020年はどうやら2456contributionsみたいですね。劇的に多い、というわけではないんですが、個人的にはそれなりに満足しています。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/07705820-2162-4767-b0fc-18907edea803/Untitled.png

ちなみに2019年のcontributionの推移はこんな感じになっていまして、かなり偏っていることがわかります。2019年は2240contributionsなんですが、その9割以上は6月から12月です。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f08f431b-a556-4b13-a5b7-b556998752b2/Untitled.png

2020年は、コードを書くことが非日常ではなくなった年、になりました。もちろんcontributionだけが全てではないし、水増ししようとすればいくらでもできてしまうので、そこまで参考になる指標ではないですが、個人的には結構気に入っている数値です。

プログラミングが日常になったとはいえ、なにか特別な実績ができた、というわけではないのが残念なところです。だからこそ、2021年は人に語れるような「成果」を出すことに注力したいなと思いますね。

2021年の目標

進路を決める(露頭に迷わない)

大学卒業したら速攻で独立する、(在学中からビジネスを立ち上げて、卒業後はそれを本業にする)というパターンもありなんですが、それだと英語使う必要なくなるので、短期的には美味しいとしても、ロングスパンで見ると死ぬな、と。

僕の中では、

  1. 英語

というのが優先順位としてありまして、独立すれば、「金」はいいとしても、「英語」に関しては微妙なんですよね。

英語と金を満たせそうな選択肢を考えると、

  1. 学部卒→外資系のエンジニア職
  2. 海外の大学院→外資系のエンジニア職
  3. 学部卒→国内の大学院→外資系のエンジニア職
  4. 学部卒→日系のエンジニア職→転職で外資エンジニア

ぐらいでしょうか。もちろん、これはエンジニアとして企業で働く、という前提の元のマップなので、実際はもう少しいろいろな要素が関わります。

Twitterでのフォロワー一万人とか、サービスを立ち上げて売却とか、YouTube登録者数5万人とか、そこらへんを達成したら、もう少し自由度が上がりそうです。

英語のスピーキング力を高める

英語が話せるとかっこいいですよね。実利と趣味とかっこよさを兼ね備えたコスパ最強の能力ですよね。

「英語だけ」できても意味はないんですが、専門性と英語をかけ合わせると、人材価値が恐ろしく高まります。グローバルIT企業で活躍するためには、最低限、英語×専門性がないとそもそも仕事にならないなと。

専門性に関しては、僕はこのまま継続するだけです。大学でプログラミングを理論ベースで学び、インターンや受託、個人で開発にて実践する。これをどれだけ濃くやれるか、というだけですね。プログラミングは勉強も実践も楽しいので、こちらはなんとかなる気がします。

問題は英語のほうです。特にスピーキング。スピーキング能力を、残りの大学生活で爆上げさせたい。「英語ペラッペラ」から、「英語ペラペラ」に変わりたい。

ベンチマークとなる人、またペラペラになるための学習法については目処がついています。個人的に目標にしているのは、以下で紹介する方々です。

https://www.youtube.com/watch?v=JuRpkKdBhOQ&t=240s

https://www.youtube.com/watch?v=Afozhv9Ds-Q

https://www.youtube.com/watch?v=ldUUeb6mbzs

https://www.youtube.com/watch?v=3i8Tzmgdq1A

まあ、がんばりますw

時給単価5000円を突破する

無学歴、無職歴、無実力のニートが年収500万円の正社員になる方法

というめちゃめちゃ面白い記事の中で、

しかし、職位が低いときは、給料単価を気にすると、逆に損する。 ここが、いちばん重要なポイントなんだけど、職位が低い間は、「会社からもらっている最大の報酬はスキル」であって、その資産価値に比べれば、「もらっている給料なんて、倍になろうと半分になろうと、誤差」なんですよ。 ひとたび、スキルさえゲットすれば、職位を上げられるし、その会社が出世させてくれなくても、さっさと別の会社に転職して、面白い仕事とおいしい給料をゲットできる。だから、「給料少ないのに、そんなに必死で働いてもしょうがない」ということを言っているバイトちゃんを見るたびに、「こいつら激しく頭悪いな」とよく思う。

という文があります。これに僕も同意です。

正確に言うと、この記事を読んで同意するようになりました。

しかし、同じ仕事に対して、単価を上げる余地があるならば、単価を上げよう、というのもまた正しい、と思っています。

今2つの会社にて働いているんですが、そのうち片方にて、単価を上げられるかもしれないので、色々トライしてみる所存です。

構想中のwebサイト/アプリ/コンテンツを作り、グロースさせる

意外に思われるかも知れませんが、プログラミングを始めた頃は、特に作りたいものがなかったんですよね。自分に何ができるかまだわかっておらず、具体的なビジョンが見えなかった、というのはあると思います。

ところが最近になって、作りたいものが出てくるようになりました。作りたいものを実現するための実力が自分についてきた、という事実が発想の幅を広げたのかもしれません。正直、作りたいものがありすぎて、全く手が回っていない状況です。

残りの大学生活中で、アイディアをとにかく実現させていって、その結果を見届けるつもりです。そのうちの1つでも当たれば、まあニートになってもいいのでねw

論文を読みまくる

大学生活があと一年で終わる、という可能性が50%ほどあるという事実に直面したとき、「もう少しアカデミックな世界に深く浸かりたい。最先端の知識を習得したい」と思いました。

そう考えるようになったきっかけとなったのが、

最新研究からわかる 学習効率の高め方: 英語学習者、受験生、教員、親向け

という本です。

この本はマジでめちゃめちゃ面白くて、リアルの知り合いに勧めまくっているぐらいです。

この本を書いているのが「ふろむだ」というかたで、その人のブログを僕は読んでいるんですが、全部の記事が面白いです。そのふろむださんが出したのが、上述した本です。

「学習効率本」では、純度の低い、論文という名の鉱石を膨大に集め、その中から知見という名の金を生成する過程を目の当たりにすることができます。知識の錬金術とでも呼ぶにふさわしいプロセスを事細かに言語化しているのが「学習効率本」なんですね。

ふろむださんは論文を読んで知識を創造しているわけですが、僕もそんなことがやりたいなぁと思いました。できたらかっこいいだろうなと。ただ単に得られた知見を使ってお金を稼ぐだけじゃなくて、社会にインパクトのある成果が生み出せるんだろうなと。

その第一歩として、論文が読めなければ話になりません。僕が通う早稲田大学では、数々の論文誌と契約をしていることもあって、論文が読み放題です。せっかく高い学費を払っているのですから、そのもとを取りたいなと思います。

最後に

2021年に立てた目標を達成してみせます。乞うご期待!