Findy Engineer Lab

エンジニアのちょい先を考えるメディア

もしもいま、インフラ技術をイチから学ぶならどうしたい? 現役SRE・Yutaさんが考える学習ロードマップ

めまぐるしく変化するテックの世界。技術を身に着けるうえで学ぶべきポイントや学習環境なども年々変わっています。

そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。

今回は、FinTech企業のSREを務めるYutaさん(@Y0u281)に“自分だったらこう進めたい、インフラ技術の学習ロードマップ”を伺いました。

パブリッククラウドが当たり前になった今、インフラ技術を学ぶスタート地点は?

――Yutaさんがイチから学び直すとしたら、最初に、どんなところからスタートしますか?

AWSやAzureなどをやりたくなるかもしれませんが、いきなりパブリッククラウドから入るとなかなか理解が進まないでしょう。だからまずは、根幹のLinuxの勉強から始めますね。

勉強の仕方はいろいろありますが、手を動かすのが一番。Window PCやMac PCに仮想マシンを用意して、Linuxサーバーを構築するでしょうね。今なら、WSL(Windows Subsystem for Linux)やDocker Desktopなどを利用します。

nginxを使ってWebサーバーを構築したり、メールソフトをインストールしてメールサーバーを構築してみると、いろいろ学べるはずです。

Linuxを動かす際には、Linuxコマンドや、vim、cdといったターミナルコマンドの知識が必要。それらの学習には「エンベーダー」というサービスがいいですね。Linux入門から基礎、応用まであり、LinuCやLPICの資格勉強のコースもあります。

また、「HackerRank」というサイトの「Learn programming skills」というコンテンツもよいと思います。

「Prepare By Topics」という項目から、Linux Shellなどが学べます。難しさが「Easy」「Medium」「Hard」と分かれているので、Easyレベルのものを一通りやってみると思います。

サーバー構築の次は、ネットワークと資格の勉強を

――Linuxの基本はその辺りで学ぶとして、次のステップはどうでしょうか?

ここでAWSでもよいと思いますが、私だったらサーバー構築の次はネットワークの勉強をしたいですね。『TCP/IPマスタリング 入門編』という有名な本があり、ネットワーク基礎の勉強としてすごくいいので、まずは座学で学びます。

その後、ルーターを触る練習として、Ciscoが運営している「Cisco DevNet」というサービスにトライしてみます。ネットワーク上で仮想的にCiscoのルーターやスイッチを触れる学習コンテンツが提供されています。

こちら、私はまだ利用したことがないのですが、Ciscoルーターを使ってネットワーク接続の経験や体験ができるので、先ほどの書籍と併用して身に付けたいところです。IPアドレスレンジの設定や、プライベートIPアドレスとグローバルIPアドレスの違いなどを学べます。

――資格などはいつ頃から意識すればよいのでしょうか。

Linuxの勉強から並行して、資格の勉強も一緒にやった方がいいですね。なぜなら、開発者の方と比べて、インフラは自分のポートフォリオ制作が難しいから。また、未経験な状態ではなかなか採用に至らない。

そのため、学んだことをブログで発信したり、資格などを取得したりがおすすめ。私も、1〜2年目に、先ほどの「エンベーダー」で紹介したLPICという資格や、Ciscoの資格の勉強をしました。

資格の勉強に特化した「Ping-t」というIT試験の学習サイトがあります。AWSやLPICといったインフラ中心で、一問一答形式で、資格試験に近いような問題にトライできます。パソコンだけでなく、スマホでもログインして学べるので、電車の移動時間などに学習すると思います。

資格を持っていて優位なのは、採用の際は「最低限これくらいの知識がある」という証明だけでなく、忍耐力や情熱のアピールにもなるところですね。

Linuxとネットワークを学んだらいよいよAWSの学習へ

――Linuxとネットワークを学び終えたら、その次のステップは?

ここまで来たら、AWSの学習を進めてよいと考えます。最近なら、「AWSスキルビルダー」が適切でしょう。AWSが提供している学習コンテンツで、無料版と有料版があります。日本語で学べるうえ、無料版のコンテンツが充実しているので、かなり多くのことが学べると思います。

ほかには、オンラインセミナー「Black Belt」の資料が公開されているサイトも有用です。S3やEC2、RDS、Lambdaといった各種サービスに関する動画とPDF資料が見られます。

また、実践に近くなると、より具体的なソリューションを紹介する「AWSソリューションライブラリ」も参考になりますね。例えば、EC2とAuroraを使ってWordPressサーバーを構築するなどのAWSソリューションが公開されていたりします。

これらの情報を参考にしながら、自分で実際に手を動かして構築しながら理解し、実践的な力が身に付けていきたいですね。

――ここまでで、つまづきやすそうな箇所はありますか?

AWSを触ってみてつまづくとしたら、ネットワーク部分ではないでしょうか。例えば、「EC2にサーバーやデータベースを構築しても接続できない」「EC2のサーバーにSSHログインしようとしてもできない」といった問題です。それらはたいてい、ネットワークセキュリティの設定によるもので、IPアドレスの許可設定をしていないといった理由で起こります。セキュリティグループや、ネットワークセキュリティの許可/不許可など、ネットワーク知識がないとつまづく可能性が高い。だからこそ、先にネットワークを学んでおく必要があると思っています。

ネットワークなどのインフラは経験や場数がものを言う世界でもあります。『TCP/IPマスタリング 入門編』以外にも、翔泳社から出ているネットワークの入門書もいくつかあるので、適宜参考にしながら進めたいですね。

――ここまで、すべて学ぶのにどれくらいかかると思いますか?

開発やWebといった前提知識の有無にもよりますが、だいたい半年から1年くらいではないでしょうか。

自分が学んだ時より学習コンテンツが豊富

――Yutaさんご自身は、これまでどのように勉強してきましたか?

私自身は、会社の新人研修でサーバー構築やネットワーク系の基礎的な部分を座学で学びました。その後に初めて入った現場が、Ciscoのルーターやスイッチが使える環境だったので、自分のPCをつないでルーティングやスイッチングの勉強をしました。並行してCiscoの資格を取得しました。

また、仕事でLinuxサーバー構築や、Linuxでのバックアップなどを経験して基礎的なところを学び、同時にSaaSなどの勉強を進めて、AWSは、プライベートの時間を使ってひととおり独学で学びました。2社目の会社でSREとしてAWS上のサービスのインフラ運用や構築を担当し、経験を積んだ感じです。

――今から勉強しようという場合、ご自身が学んだころと比べて違いはありますか。

日本語の学習コンテンツが増えています。私が学んでいたころは、AWSやCiscoの公式な学習コンテンツはなく、有志の方が発信している非公式な情報しかなかった。ブログなどを真似してサーバー構築などをしていましたが、体系的に学ぶのは大変でした。Udemyの動画学習コンテンツも使っていましたが、今は無料でも体系的に学べるコンテンツが多く、とてもいい環境ですよね。

非公式な情報は間違っている場合もあるので、うまくいかないとモチベーションが落ちてしまいます。私の場合は、トラブルシューティングで鍛えられた部分もありますが……。

ひとりで学んでいてどうしても解決できないときには、SNSで発信していました。詳しい方が教えてくれて、すごく助かったことが何度もあります。

また、サーバー構築で仮想環境を構築する際、WSLやDockerがまだありませんでした。WindowsでOracle VM VirturlBoxを使いましたが、非常に重くて使い物にならない。そこで、古いWindows PCをLinux OSに入れ替えたこともありましたが、失敗したら元に戻せない。緊張感があって面白くはありましたが、リスクが高いですよね。

コミュニティを活用すると情報が増えてモチベーションも高まる

――王道ではない、Yutaさんならではの勉強法などはありますか?

私自身は、人に聞いたり、人が発信している情報を取り入れたりすることが多いです。だから、学習サイトなども他の人がお勧めしているものを積極的に取り入れますね。

あとは、コミュニティなども活用していました。社外の方が取り組んでいることや、同世代の方が活躍している様子を見ると刺激になりますし、学びたいジャンルの話を聞くと、自分でもやってみようと思えます。だから、コミュニティ参加はすごく大事にしています。

AWSのユーザーコミュニティなら「JAWS-UG(AWS User Group -Japan)」が有名です。他にも、サービスごとにいろいろなコミュニティがあり、イベントなどもあるので、学びが深まると思います。また、イベントプラットフォームのconnpassなどで情報をウォッチして、気になるものに参加してみるのもいいですよね。横のつながり、社会とのつながりが増えると、学ぶ機会も増えます。

「もくもく会」という文化があり、オンラインで集まって黙々と勉強したり、わからない部分を教えあったりします。人によると思いますが、僕には合っていました。

――最後に、SREの仕事のやりがい、楽しさなどを教えてください。

SREは、開発者の方が作ったプロダクトやサービスを、ユーザーさんに安定的に届けるのがミッションです。それに対し、信頼性の向上や、運用の改善をしていくのが楽しいです。

また、開発の方が安心して作業できるよう、スムーズな環境構築も大切です。さらに、リリース作業が複雑かつ面倒になると、どうしても機能追加の頻度が落ちてしまう。リリース作業を高速に回せるように改善することで、開発生産性が向上します。開発の全体に関わる部分に貢献できるのがSREのやりがいであり、面白い部分だと思っています。

執筆:栃尾江美