この記事は、traP新歓ブログリレー2022 42日目の記事です。
こんにちは! 今学期は体育を取ったので、体がすこぶる健康になる予感がしています(そんなはずはない)、logicaです。
ちなみに今日、4/19が誕生日です。心の中で祝って下さい。その気持ちだけで涙が止まらないほど嬉しいです。
ついに昨日、traPの入部期間が始まりましたね! 興味のある方、入部はお早めに! 待ってます!!
さて、ちょうど先週の今日、4/12はtraP新歓LT会の日でした。
最近技術系の重めのLTしかしてなくて(DockerでProtobufをコンパイルしたりISUCONのベンチマーカーWeb UIを作ったり)、なんか少し胃もたれ気味だったんですよね。ここらで少し軽めのLTがしたいな~と思って、「通学時間が長い人向けのライフハック」で行こうと決めたわけです。
というわけで、今日のブログはtraP新歓LTの内容を文字に起こして読み物にしたものです。
新歓LT会では新入り22Bを含めた僕以外の人がすごく面白いLTをたくさんやってくれているので、もしこの記事で新歓LT会に興味持ったら、traP公式YouTubeからアーカイブを覗いてみて下さい!
目次
家、遠くない?
さて突然ですが皆さん、「家、大学から遠いな~」と思ったことありません?
...「無いよ!」って人は、残念ながらこの記事の対象読者ではないので、ここでブラウザバックしていただいて大丈夫です。
「遠くて辛い!」って人、僕も仲間です! 家が遠いと、対面授業を受けるコンディションに遷移するための活性化エネルギーを、通学の分で上乗せされている感じでなんか損な気分になりますよね。
でも、今日は前向きに考えましょう。せっかく長い通学時間があるなら、どうにかして有効に生かしたいですよね。
通学時間で何をしよう?
僕は以下のようなものが考えつきました。
- 寝て疲れを取る
- 立ってると難しい
- ゲーム
- なんか生産性ない
- ちょっと罪悪感が(個人的な感想)
- 課題・予復習
- 本腰入れないとやる気が出る気がしない
特に、課題の予復習に関してはとても有効な活かし方な気がしますが、僕は勉強がそんなに好きな方ではないので、電車で課題するのって相当エネルギー必要なんですよね...多分そんなことしたら倒れる。
ということで、現実味がある選択肢として、
「興味のある分野に関しての勉強をする」
というのが挙げられます。
勉強できそうな分野(traP基準)
- 競技プログラミング(アルゴリズム班)
- CTF(CTF班)
- ゲーム制作(ゲーム班)
- イラスト・デザイン(グラフィック班)
- 作曲・音楽理論(サウンド班)
- Webエンジニアリング(SysAd班)
traPの班で行われている活動だけでもこんなにありますね!
とりあえず少しでも興味あったら積極的に情報を漁りに行くと楽しいんじゃないかな~と思います。
是非皆さんも興味のある勉強をして楽しい通学時間を過ごしましょう!
...というので終わりでは流石に内容が薄すぎますね。
せっかくなので今日は、普段僕が楽しんで勉強しているWebエンジニアリングについて、その魅力と勉強に使えるツール類を紹介していこうと思います。
Webエンジニアリングとは
突然「Webエンジニアリング」と言われても訳わからないと思うので、とりあえず解説を。
Webエンジニアリングは、「Webアプリケーションの開発・運用に関わる一連の作業」を意味します。
Webアプリケーションは、Twitterなどの、Webサイト上で「動的に」動くアプリケーションです。「動的」は、ユーザーからの入力によって出力が変わるという意味です。
例えば、皆さんよくご存じ、爆速読み込みで有名な阿部寛さんのホームページ。あのページは、僕らがいつどこからどんな風にアクセスしても同じ画面を返します。あれが「静的」なページです。
対してTwitterなら、ユーザーのツイート・自分がフォローしているアカウントによってタイムラインの内容は変わります。このように、ユーザーのコンディションによって表示内容が変わるものがざっくり言った「Webアプリケーション」です。
traPでは、部員向けの様々なWebアプリケーションが開発・運用されていますが、これを行っているのがSysAd班です。
普段皆さんが使っているWebアプリケーションの運営の気持ちが味わえる、かなり貴重な機会です。
進化し続けるWeb
技術は進化し続けます。特にWebエンジニアリングの分野は速いと(個人的には)思います。今急速に需要が高まっている分野ですし、新規エンジニアの参入も盛んです。
どんどん新しい技術的な流行り・脅威が出て来ています。いくつか例を見てみましょう。
Go(プログラミング言語)
Go言語は、traPのすべてのWebアプリケーションで利用されているプログラミング言語です。2012年に正式リリースされたため、まだ10年ほどしか経っていません。
Goが得意とする領域である「サーバーサイド」では、5~10年前まで多くの企業でRubyという言語が全盛期でした。しかし、最近Goが段々シェアを奪い始めています。様々な企業がGoの良さに気づき、今までRubyで感じていた辛さを軽減してくれる、と感じているそうです。
これは、新しいツールが使いやすければどんどんそれに乗り換えていく、所謂「流行り廃り」がエンジニア界隈も存在するということを示しています。
サプライチェーン攻撃
誤解を恐れず言えば、ハッキングの一種です。開発者が使うツールやライブラリに悪性のプログラムを仕込み、それをダウンロードして使っている人のPCのデータを抜き取ったり改ざんしたりします。
半月ほど前、ロシアのウクライナ侵攻への反戦運動として、あるライブラリに「実行時、実行したPCのデスクトップに反戦の意を示したテキストファイルを生成する」機能を組み込んだライブラリ製作者さんがいました。
多くの製品に使用されていたライブラリだったため、大きなところで言えばUnity Hubなどがそれを知らずにその機能をソフトウェアに入れてしまい、この是非をめぐってTwitterやGitHubが炎上してしまいました。
このケースは無害なファイルであり、社会的に間違ったことをしていなかったとはいえ、一歩間違えたらウィルスを仕込むことも可能だったので、多くのライブラリ使用者・そしてライブラリを使ったソフトウェアを使用している人がサプライチェーン攻撃の脅威を再確認した瞬間でした。
このように、時事問題がエンジニア界隈の技術事情に影響することもあるのです。
良いエンジニアになる
良いエンジニアになるためには、良いエンジニアであり続けなければならない
これは当たり前ですね。
一時良いエンジニアだったけど、すぐにそうじゃなくなってしまう人は、本当に良いエンジニアとは言えませんよね。
良いエンジニアであり続けるためには常にトレンドに精通してなければいけない
とても重要な事です。エンジニアが「手に一回職を付けたらあとは人生イージーモード」だと思っている方がいたら今すぐその考え方を捨てたほうが良いです。
上で紹介した通り、技術には常に新しい流行り・廃りがあります。ハッカー・クラッカーとの戦いもいたちごっこの真っ最中です。
今流行りの技術を身に着けたとしても、5年後には使えない人材、特に新規開発ではお荷物になってしまうこともザラにあるんです。そうなったエンジニアは、以前誰かが開発したアプリケーションのバグ修正を永遠にやるだけの、「化石エンジニア」と化してしまうのです。
「エンジニアは一生勉強」
「エンジニアは一生勉強しなければいけない」という言葉、僕は間違いないと思います。最低でも「常に時代の最先端で新しい価値を生み出すエンジニア」になりたいのであれば、確実に必要なことだと思っています。
通学時間を使って、トレンドに追いつく
なぜ通学時間?
Webエンジニアを志すと、PCの前に座ったら反射的に作業体制に移ってしまうことが良くあります。
- アイデアさえあれば作るものは無限にある
- 試したい技術も無限にある
- やる気さえあればやることが尽きない
あたりが原因です。エンジニアリングのバイトなど、〆切のある仕事をしていれば尚更です。
人によって異なるとは思いますが、少なくとも僕は、電車に乗ってる時間が作業のことを考えずに何かに集中できる希少な時間になる、と考えています。
勉強のリソース
勉強するためには、参考にするリソースが必要ですね。
というわけで、おすすめのリソースをステージごとに紹介していきます。
初心者向け
正しく、新しい情報を集めることはとても重要です。ですが、何もわからない初心者の頃は正誤・新旧・その他の判断が難しい傾向にあります。
勉強のリソースを絞ることで、難しい判断を避けることができる可能性があります。
traPブログ
- 学生ブログということもあり、初心者向け記事も結構ある
- 内部でアドバイスやチェックもし合っているので、ある程度質も良い
- 新歓ブログリレーとかオススメ(宣伝)
- 最新記事に特に注目してみましょう
公式ドキュメント
- 最大のメリットは、基本常に更新される & 常に正しいところ
- 興味ある技術の公式ドキュメント・チュートリアルを電車内で読んでみる
- ある程度調べたい技術が固まってないと使えない手段
- Webエンジニアなら、新歓ブログリレーで使ったReact / Goとか?
- 例: A Tour of Go (Goのチュートリアル)
- スマホだとちょっと小っちゃいけど読めるし試せる
YouTube
- エンジニア系YouTuberの動画
- 仕事としてやっている人が少なくないので、最新の情報に合わせたコンテンツが提供されやすい
- できるだけ新しい動画・解説が丁寧なチャンネルを選ぼう
- 「0から~」系やシリーズもののチュートリアルがオススメ
- 全てをくまなく解説してくれる
- 事故が起こりにくい
(Zenn、Qiitaなどの個人技術ブログ)
- 個別のエラー・事故に関する情報の収集材料として
- 集合知、ビッグデータとして活用できる
- 初心者のうちは、上記のようなエラーの解決に絞って使うのが良いと思う(理由は後述)
中~上級者向け
何らかのプログラミング言語を使って何かソフトフェアを作ったとか、何かプロジェクト・課題をクリアしたという経験をいくつか(2~3個ほど?)積むと、だいぶプログラミング言語の扱いにも慣れてくると思います。
自分なりに開発のノウハウが出てきたら、上記のリソースに加えて次のような中~上級者向けのリソースを使用しても良いかもしれません。
本
- 「技術書」と呼ばれるカテゴリー
- Kindleの端末がオススメ
- 技術書、A4で500ページとかあってめっちゃ重くてデカいので持ち運びを考えるとKindle
- 目に優しい(諸説あり)
企業ブログ
- 結構ハイレベルな話が多いことがある
- 「仕事としての開発」に興味がある人にはとてもオススメ
(改めて)Zenn、Qiitaなどの個人技術ブログ
- 質がピンからキリまである
- 精査がない、公開しようとしたらポンと出せる
- 最新技術に追いつくためには、これらのトレンドを見るのが良い手段
- 自分が欲しい情報を、正確性なども判断しながら選んで吸収できるくらいの前提知識がつかないと活用は難しい
- あくまで個人的な意見
- 新技術の紹介など、エラー解決以外の技術の情報の場合は特にそう
- エラー解決も間違った情報はところどころあるが、書かれにくい(体感)
ブログを自分でサーフィンするのが面倒な方に
そんなあなたに
モヒカンSlack
と呼ばれるSlackのワークスペースがおすすめです!
加入方法
技術ブログのRSSリーダー(新着通知的な奴)をカテゴリ別にまとめてくれてるところで、エンジニアの情報収集を楽にするという目的で作られました。
ものすごい量のトピックがあり、興味のあるチャンネルに参加することができます!
トピック例
- 言語・フレームワーク系: Go、TS、React、Vue、Rust、Pythonなど
- インフラ系: Docker、Kubernetes、DBなど
- クラウド系: Firebase、AWS、GCPなど
- その他: 機械学習、Linux、技術イベント開催情報など
ぜひ活用してみて下さいね!
ここまで読んで下さってありがとうございました!
色んなことを言いましたが、要するに
- 通学時間が長いなら、そこで興味ある分野の勉強してみない?
- 良いエンジニアになるためには継続的な情報収集が必要
- 新しく・正確な情報
- 情報収集にオススメの手段を紹介したよ
- ステージによって手段を考えることで、誤情報を鵜吞みにするリスクを減らせる
ということです。
これらのリソースを活用して、エンジニアとしての成長を目指すのも悪くないかもしれませんよ?
明日の新歓ブログリレー、担当はイルネス君です! お楽しみに~