RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

脱初級ITエンジニアまでの学習方法

こんにちは。
株式会社ラクスで先行技術検証をしたり、ビジネス部門向けに技術情報を提供する取り組みを行っている「技術推進課」という部署に所属している鈴木(@moomooya)です。

今回は毎年春先の社内ビアバッシュで新人向けに「一歩目の学習方法」として発表している話をしようと思います。

学習とは

[名](スル)

1 学問・技術などをまなびならうこと。「学習の手引」「学習会」

2 学校で系統的・計画的にまなぶこと。「英語を学習する」

3 人間も含めて動物が、生後に経験を通じて知識や環境に適応する態度・行動などを身につけていくこと。不安や嫌悪など好ましくないものの体得も含まれる。

人工知能(AI)がデータを読み込み、基準や規則性を見つけ出すこと→機械学習

 

出典: デジタル大辞泉小学館

誤解を恐れず、噛み砕いて言うとすれば「昨日よりもなにか一つうまくやれるようになること」です。

(4の語義は今っぽいですね)

この記事の対象

若手エンジニアに向けたスライドが元ネタになっています。 想定としては今後のITエンジニアとして成長していくための長期的な観点で書いています。短期的な成果1につながるような考え方ではありません、というか短期的な成果は現場の仕事を覚えるという一点に収束するので特に触れません。

あと「脱初級」の定義って誰が定めてるんだよ、と思われるかもしれませんが、ターゲットとしている若手エンジニアに関しては「そんな定義気にせず知識と経験をため込む」段階なので定義とか気にしてる段階じゃないです。たぶん本記事の内容が「そんなの日常生活じゃね?」ってなってたら世間的に見ても技術的には多分もう初級じゃないです2

また、経験ある人たちは学習習慣ついていると思うので勝手に高みを目指してください。

学習に対する向き合い方

おそらく学習についての記事を書くと「そんな知識いまさら使うのか?」「もっとこういう部分から学んだほうがいい」「効率悪そう」「タイムパフォーマンスがどうこう……」とかそういう話が出てくると思いますが3、長期的に考えたときに最初から使いそうな知識だけ身につけることは不可能です。無駄知識を持っていない凄腕エンジニア4なんて会ったことありません。

経験を積むことで、今後のキャリアのために必要な内容を取捨選択する、ということはあると思います。しかし最初は気にせず知識を取り込んでいくでいいと思います。いつどんな経験が役に立つかわかりませんしね5

私も仕事としてITエンジニアをし始めたときは「仕事に使う知識を身につける」というスタンスでしたが、全然学習が捗りませんでした。しばらくしてから「仕事とか気にせずに気になったものや興味を持ったものは全部調べる」というスタンスに切り替えてからは無駄な知識も多いですが、学習が捗るようになりました。

まず最初は

とはいえ若手エンジニアの皆様に置かれましては目の前の業務を遂行できるように頑張ってもらうのが最優先かな、と思っています。

一方で目の前の業務しかやらないと出来ることが増えないです。IT業界は規格化された部分は多くありますが、ローカルルール6などもたくさんあります。

なので、長期的なキャリアのためには業務だけではなく、職場以外を情報源とした学習も並行して行うことをおすすめします。

学習作戦その1「ちょい足し学習」

とはいえ「業務で忙しくて他のことができない」というのは容易に予想できる状況です7

そんな方は業務でやっていることにちょい足しする「ちょい足し学習」から始めてみましょう。

日常の業務ではわからないことが多く、調査に時間を使うことも多いと思います。また手順書が整備されていて、指示通りに手を動かすだけの整備された環境でも手順書の指示内容が「なぜ正しいのか」理解しきれていないこともあると思います。そんなときに日々の業務に必要な知識を裏付ける知識をちょい足しするのです。

例)HTTPメソッドを扱ったとき

GET/POST、次いでPUT/DELETEあたりは触る機会が多いと思いますが、HTTPメソッドはこれだけではありません。

  • 使わなかったけど仕様として定義されている他のメソッドを調べてみる
  • リクエストやレスポンスのデータ構成を調べてみる
  • ヘッダに設定可能なパラメータを調べてみる
  • テキスト以外のデータの扱いを調べてみる
  • そもそも誰が仕様を定義しているのか

など派生的に学べる内容はたくさんあります。


ちょい足し学習した後は必ず何かしらにアウトプットするようにしましょう。ブログでもなんでもいいです。検索して見つかるような場所に記録しておくと良いと思います。1年後には学習内容をすっかり忘れて調べ直しているはずです。そのときに自分が調べた内容の記事が見つかれば、すぐに知識を思い出すことが出来るでしょう。

学習作戦その2「外から情報を仕入れる」

興味の幅を広くして、いろいろな情報源に自然と触れる環境を作っておくと頑張らなくて良くなるので継続しやすいです。

基本的に触れる情報は多ければ多いほどよいです。ノイズが増えることを恐れるよりは、多い情報から必要なものを取捨選択する能力を鍛えることを考えたほうがいいです。

よくある情報源

技術書

体系的にまとまっているため新しい領域の知識を身につけるのにおすすめ。昔から読み続けられている、いわゆる古典と言われている技術書も普遍的な内容が多いため読んでおくと良いと思います。

古典技術書の名著については過去に記事を書いています。

tech-blog.rakus.co.jp

お金に余裕があるならO'reilly Online Learning(年額$4998)の利用も強くおすすめします。

情報学の学位持っていない方は情報科学の本を1冊くらい通読しておくと良いと思います。例えばこういうのとか。

https://amzn.to/4975XBV

amzn.asia

ボリューム的に結構大変だと思うのでゆっくり読めばいいと思う。最初から読んでもいいけど、スキルアップが行き詰まった感を覚えたときに立ち戻ったりするのが良いかも。点と点を繋いでくれたり、応用力がついたり、概念を誤って理解することを減らしたりする助けになるかもしれないです。

技術同人誌

年々賑わってきている印象があります。 コミケなどでも扱われますが、技術書オンリーイベントとしては年2回行われている技術書典が国内最大のイベントです。

techbookfest.org

技術同人誌は商業誌で扱われないようなピンポイントなテーマでまとめられた本が期待できます 欲しいテーマで書かれたものが存在するかどうかは運次第なところもあるので、オンラインで指名買いするよりはオフラインでイベント会場を散策して気になる本を買うほうが楽しいと思います。

また情報のアウトプットの場としても有用です。だいたいしっかりした技術ブログ記事数本分の文量9があれば薄めの本が1冊作れるかと思います。 執筆時はRe:VIEWという組版システムが使いやすいです。

github.com

ウェブサイト

基本的に一次情報である公式サイトを参考にするようにしましょう。公式サイトはほとんどが英語サイトとなりますが、なんとか読みましょう。Google翻訳を使ってもいいと思います。

他には企業ブログや個人ブログ、各種ニュースサイトなど、気になるものはチェックするようにしましょう。RSSリーダーを活用してもいいし、ブックマークから直接訪問しても良いと思います。

はてなブックマークのテクノロジーカテゴリをウォッチするのも良いと思います10

b.hatena.ne.jp

勉強会

コロナ禍を通して状況が色々変わってきていると思いますが、オフラインでの勉強会も有用です。オンラインでも参加しないよりはしたほうがいいのですが、オフラインでの強みは発表コンテンツの後の懇親会にあります。

似たような技術コンテンツに集まっている人たちは似たような課題にぶつかっている人も多く、いろいろな試行錯誤の情報を共有することができます。発表スライドには乗せにくい情報なども懇親会では議論できたりするので、個人的には可能ならオフラインでの勉強会への参加をおすすめしたいです。

コツとしてはコンプライアンス違反にならない範囲で自分が抱えている課題や、過去の泥臭い解決策なんかを開示しつつみんなで共有していく感じです。外向きのキラキラした話とは別に泥臭い実態の話が聞ければ値千金です11

正直勉強会への参加は地域格差が大きいとは思いますが、現実として東京(やその他大きな都市)のエンジニアにとっては大きなアドバンテージなので活用してみてほしいです。

イベント探しは今やConnpass一強だと思うので、Connpassで探しておけばいいと思います。

参加するテーマとしてはこれから取り組むような領域の勉強会に参加してコミュニティの雰囲気とか知るために行くのがおすすめです。

connpass.com

SNS

これもこの数年でだいぶ状況が変わってきました。 以前は「Twitterアカウントはエンジニアの名刺だから必ずアカウントを作りましょう」と言っていましたが正直現状のTwitter(現X)だとそこまで言い切れない……。

Blueskyが招待制を脱したり、ThreadsもFacebookInstagramからの導線を強化してユーザーが増えているようですが、Twitter(現X)を置き換える程にはなっていないです。Misskeyはエンジニア向けって感じでもないですし、エンジニアがどこに腰を落ち付けることになるかは先数年様子を見ることになりそうです。個人的にはBlueskyあたりに移住するのがいいとは思っていますが……(所有ドメインで身分証明とか出来るし)。

現状ではまだTwitter(現X)で発信しているエンジニアがまだ多いので、一旦はTwitter(現X)アカウントを作って気になるエンジニアを片っ端からフォローしましょう、という感じです。自動的に情報が流れ込んでくる状態を作れるので情報収集が楽になります。

他にもYoutubeではカンファレンスや勉強会のアーカイブが公開されていたりするので、気になるチャンネルを登録しておくのも良いと思います。

もっと小規模なところで行くとVRChat内でもITエンジニア向けのコミュニティがあったりするので、自分がよく使っているSNSでエンジニアまたはコミュニティをフォローして、日常的に発信された情報が目に入る状態にしておくのが良いと思います。

飲み会

エンジニア同士が飲みに行けば、技術の話に花が咲くってものです。

普段一緒に働いているチームでもいいですが、普段仕事で接していない人と話すと新鮮な話が聞けて楽しいと思います。 大学時代の友人だったり、配属が違う同期であったり、前職の同僚であったり、趣味で知り合った人であったり、探すといろいろいるものです。 飲み会と書いてはいますが、酒を飲まなくても食事だけでも会話をする場が作れればいいと思います。

ただし、チーム外の人と話す際には機密事項には注意して話すようにしましょう。 社名とか製品名とか固有名詞をそのまま発言しないのは大人の嗜みです12

GitHub

GitHubSNSだと言われそうですが、やはりこれは別枠で。

大量のソースコードが読み放題です。新しめのフレームワークとかで「ディレクトリ構造どうしたらいい?」「この処理の実装セオリーはどんなコード?」と悩むことはないでしょうか。そんなときにもオープンソースは役立ちます。同じフレームワークで書かれたソースコードを探して、いくつか読んでセオリーを見いだせます。

当然、利用しているOSSライブラリの挙動調査もできますし、気になる所があればプルリク投げて貢献してもいいです13ソースコードの修正だけではなく、ドキュメントの翻訳や修正も感謝されると思います。

脱初級者

手を動かす(検証と実践)

やはり動くものを作ってみるのがもっとも学びになります。

色々聞いてわかった気になっても実際に実装していくとわからない部分や、うまくいかない部分が見えてきます。 そういった部分を一つずつ解消していくことが確実に力になっていくと思います14

自由にできるサーバーを用意する

私はWebアプリケーションエンジニアなので、学習の際にはアプリケーションを動かすためのサーバーが欲しくなります。

昔はサーバーを1台用意するのは結構お金がかかったので大変だったのですが、今15だと3万円くらいから購入できる低価格ミニPCがあるのでこれをサーバーにするのが簡単な方法かと思います。3万円台でIntel N100(第7世代Core i5、第9世代Core i3くらいの性能16)だったり、2.5GbEポートが複数ついてたりするのでネットワークの勉強にも使えそうです。 物理マシンを用意する方法は色々融通が効くので私は好んでいます。

もう少し頑張ってみるとすると、Proxmox VEなどを使って仮想ホストサーバー(≒プライベートクラウド)を構築してもいいかもしれません。大量にインスタンスを建てなければそれほどのスペックも必要ないはずです。上述の低価格ミニPCでも出来るし、2~3台購入してクラスタリングしてもいいし。

www.proxmox.com

もうちょっと安く……という方にはVPSの利用が良いと思います。(上述の低価格ミニPCよりも)低スペックなサーバーになりますが、月額$4とか600円とかで国内に配置されているサーバーを利用することができます。 海外業者だとDigital OceanとかVultrとか、国内業者だとさくらインターネットとかConoHa VPSが有名かと思います。

ちなみにVPSの利用はウェブサイトを公開する場合にも便利です。実害が出るかどうかは別として、ウェブサイトを公開するともれなくクラック対象として攻撃にさらされます。万が一侵入されたときにも自宅サーバーではなく、VPS(や後述のパブリッククラウドなど)であれば被害を限定することができるので多少安心できます。

もっと安く、できれば無料で……という方には大手パブリッククラウドの無料枠を用いるとか、フロントエンドだけを試すなら静的ホスティングサイト(NetlifyとかVercelとか)が無料枠内でも結構使えます。 個人的には最初からマネージドサービスを使うとハマりどころが多い印象があるので、多少ハードルは上がるかもしれませんが今なら出回っている情報も多いのでなんとかなるかと思います。

www.digitalocean.com

vps.sakura.ad.jp

www.conoha.jp

www.netlify.com

vercel.com

情報発信

学習したら発信することで更に定着させましょう。

「手を動かす」でも書きましたが、学んだ内容を文章に書き起こしてみると、自分の理解が不足している部分がわかってきます。 不足を埋めるように調べて、調べた内容が正しいか試してみて、文章を補足していくということを繰り返すと確かな知識が身についていきます。

発信する場はどこでもいいと思います。多くの人の目に触れる場所の方が承認欲求が満たされてモチベーションを維持しやすいというのはありますが、逆にプレッシャーに感じてしまう人はパブリックな場所であればどこでもいいと思います。

例えば私の身の回りだと……

  • テックブログに記事を書く
  • 社内ビアバッシュでLTする
  • 個人ブログとかQiita、Zenn的なところに記事を書く
  • 社外勉強会で発表(LT含む)する

みたいな方法が身近な方法です。 ちなみに発信を続けていくと「社外勉強会で登壇依頼される」みたいなパターンもあるかもしれません、ありがたい話ですね。

記事を書くのか、人前で発表するのかは個人の好みもあると思うので好きな方法を取ればよいと思います。 ただ社外勉強会に参加するときはLTでもいいので登壇すると、懇親会での話のタネができてコミュ力が低くても交流しやすいのでおすすめです。

ちなみにLTについては手前味噌ですがこちらの記事もどうぞ。

qiita.com

無理に全部やらなくていい

本記事に書いた内容を「すべてやらなきゃ」となると多分続かないです、大変すぎる……。

ただ、興味を覚えたものについてはどれかやっている状態を続けるといいと思います。「ここ最近は技術書読みがマイブーム」とか「無償にコードを書きたい/読みたい」とか「勉強会めぐりしたい気分」とか。「ITポエム書きたい」でもいいかもしれない17

そんな生活を数年続けていたらいつの間にか初級者とは見られなくなっていくと思います。『一万時間の法則』の一万時間にはあまり意味がないらしいけど、日常生活に組み込まれるレベルで努力を続けた人は一流になっていくというのはあるかと思います18

エンジニアにとっての勉強

社内のエンジニアと話していてかっこいいセリフがあったのでこれを引用して締めとします。

「勉強とは意識してない。ただの日常生活の一環です」


  1. とはいえ短期的に業界内の認知度向上というか個人ブランディングみたいな方法はあるにはあります。たとえば特定のフレームワークなどの技術要素に徹底的に特化して学習することで、特定領域の第一人者になる方法があります。ただこの業界は特定の技術はいつか必ず廃れるので、長期的に食べていくためにはあまり特化しすぎるのも考えものかな、と思っています。もっとも第一人者になると人脈なども自然と形成されるので、そこから知識を横に広げていくというは全然ありでしょうけれどね。
  2. ビジネスという意味ではまた別ですが。
  3. どうせはてブコメントとかにもそういう言う事書かれると思う。
  4. むしろ膨大な「無駄知識」が凄腕エンジニアを凄腕たらしめているとすら思えます。
  5. 電子工作(記憶装置を取り付けないと電源オフで状態が破棄されるのが当たり前の世界)と、マイクロサービスやコンテナ化の文脈で頻出するステートレスの感覚が似ていたりとか。
  6. 自社でしか通じない言葉や、過去のしがらみなどに基づく固有のやり方、予算や製品特性などの制限上セオリーから外れた最適解など。こういうのは無くせるに越したことはないけれど「仕事(≒ビジネス)が出来るエンジニア」になるためには適切に接していく必要があると思います。
  7. そうでないなら恵まれた環境にあると言えます。十分な学習時間を確保しましょう。
  8. 個人利用であればO'reilly Online Learningの年会費はACM会員になることで合計$174(ACM会員費$99 + 優待金額$75)で利用することもできます。
  9. 本記事くらいの文量で3記事分くらいあれば40ページ前後の薄い本が出来ると思います。
  10. 私ははてなアカウント自体ははてなダイアリー提供当初の頃に作って使っていましたが、はてなブックマークは過去のBANまつりの時期に利用し始めたせいで、初めてブックマークしたタイミングでBANされてしまって以来使えません。個人的にははてなブックマーク(の運営)は好きではないです。
  11. 世の中で流行ってるとかモダンとか言われている技術について話していて、表向きはブランディングなどの理由から便利な面をアピールしている場合でも、突っ込んで聞いていくと泥臭い苦労の上で成り立ってたりすることは多々あります。このあたりのエピソードを知っていくと聞きかじりの浅い知識を脱することができるようになってきます。
  12. 外食してると結構他の席のお客さんから仕事の話が聞こえてくることがあります。たまに「それ機密情報じゃない?」みたいな会話があって他人ながらひやひやしたりも……。
  13. ちなみに私は初プルリクを投げたら、直前にプロジェクトが凍結されていて無駄に終わったという悲しい過去を持っています。
  14. 人にもよりますが、うまくいかないことにぶつかるとイライラします。すごくイライラします。正しく設定/実装しているはずなのに動かない、ということはザラです。それでもそれを解決したときの達成感により繰り返してしまうような人がエンジニア向きなんだろうな、と思っています。ちなみにうまくいかない理由はだいたい自分のミスのせいです。
  15. 少し前だと鼻毛鯖とか安鯖なんて呼ばれていた低価格サーバーがありましたが今はなくなりました。
  16. ちなみに我が家のサーバーはサーバー用CPUのXeonを使っていますが、第2世代のXeon E3-1280という古いCPUなので性能的にはIntel N100と同等です。Webアプリケーションの学習用としては特に不便していません。古い分、電力消費がIntel N100(6W)と比べて大きい(95W)ですが。
  17. Qiitaとかの「技術記事を投稿するプラットフォーム」とされている場所に投稿してると反感買うかもしれないので注意。自分のブログとかSNSなら誰も文句言わないはず……たぶん。
  18. 色んな人を見ているとどう見ても「努力だけで到達できるように思えないレベル」の人はいると思いますが、そのへんは適性+努力の「超一流」なのでまた別枠かな、と。
Copyright © RAKUS Co., Ltd. All rights reserved.