IT未経験からWebエンジニアになるまでとその後の学習について

ozaki

開発グループのozakiです。入社してもうすぐ1年になります。
前職では化学系の研究職として働いており、異業種からの転職でトライコーンに入社しました。PCさえあればすぐにものづくりを行えるスピード感に惹かれてIT業界に入りました。

この記事ではここ1年間で私が今までに行った勉強や、取得した資格についてまとめました。

勉強に利用したサービスなど

勉強を始めた当初の知識は、HTMLと簡単なCSSを少し知っており、JavaScriptはつらいというレベルでした。
最初はProgateとドットインストールをメインにし、仕事の傍ら、1, 2ヶ月程度取り組んで基礎的な知識を付けました。
ある程度手が動くようになった後、簡単なアプリケーションの作成や競技プログラミングに取り組みました。この頃から並行して転職活動を開始し、トライコーンに入社する運びとなりました。

まずは勉強に活用したサービス、やり方などをご紹介します。

Progate

https://prog-8.com/

初心者向けの教育サービスです。小規模な問題が出題され、対応するコードを穴埋めのように書いていきます。何をやればよいかの解説も親切なので、全く経験がない人でも取り組んでいけます。トライコーンでも色々な部署で教育に利用しています。
一方、流れとしてはどの言語も大きくは変わらないので、ある程度やって飽きてきたら次のステップに行くべき時期だと思います。

プログラミングの雰囲気を掴むのに役立ちました。このサービスのおかげでプログラミング学習の第一歩を踏み出せたという人も多いのではないでしょうか。

コマンドラインやSQL、Gitに関する講座もあり、これらもWebエンジニアとしては触れる頻度が多いため、一通りやっておくと役に立ちます。
無料ではできる範囲が限られるため、短期間有料会員になって、集中的に学習することをおすすめします。私も1, 2ヶ月有料会員になり、大体の講座を一通りやりました。

ドットインストール

https://dotinstall.com/

プログラミングに関する多くの講座を動画で提供しているサービスです。
色々な言語の入門から各種ツールやライブラリの使い方に関するものなど、内容は多岐に渡ります。実際にアプリを開発する一連の流れを経験できる講座もあります。
無料でも多くのコンテンツがありますが、有料会員になるとさらにコンテンツが増えるとともに、動画スピードの変更、字幕追加などができます。

私はこれも短期間有料会員になり、動画スピードを聞き取れるギリギリまで上げ、字幕を読みつつ多くの動画を視聴していました。

実際に手を動かして同じように動くアプリを作るのをおすすめしますが、インプットと割り切り、さまざまな講座をひたすら視聴することに徹するのもアリかと思います(後者でした)。

簡単なアプリケーション作成

簡単なコードがある程度書けるようになったら、ぜひ簡単なWebアプリケーションを作ってみることをおすすめします。最初はわからないことばかりだと思いますが、調べつつ課題を解決していくプロセスを繰り返すことで、よりスピーディに幅広い知識が身に付きます。

Ruby on RailsやLaravelなど、便利なフレームワークが最近は揃っています。
フレームワークが難しく感じたら、PHPからやってみると良いと思います。フレームワークを使わなくても簡単に動作するWebアプリケーションを作ることができます。

アプリケーション作成の際、MySQLやPostgreSQLといったRDBを利用することで、基本的な読み書きの機能を作ることができます。RDBも開発現場では頻繁に使われますので、多少でも扱いに慣れておくと良いと思います。

アプリケーションを公開する際は、Herokuを使うと、細かいミドルウェアの設定などがほとんど不要でサービスを公開できます。個人でちょっと遊ぶ分には無料で不都合なく使えます。

何かしら動くアプリケーションを作ることができれば、ポートフォリオとして活用でき、未経験からの転職にもプラスに働くことが期待できます。
私は面接には間に合いませんでしたが、入社前に簡単なアプリケーションを何個か練習に作りました。今でも新しい技術に触れるため、生活を便利にするためにアプリケーションを個人で作ることがあります。

競技プログラミング

入出力のパターンと解くべき問題が提示され、ふさわしい処理になるようにコードを書いて提出します。必要なアルゴリズムを自分で考えて実装するので、コードを書く行為に素早く慣れることができます。問題形式なので、アプリケーションを作ろうにも、特に作りたいものが思いつかないという人に特におすすめです。

国内のサービスとしてはAtCoderが有名で、頻繁にコンテストを開催しています。レーティング機能があり、自分の成長がはっきりわかるのでモチベーションに繋がります(参加回数が少ないと低めに出るので注意)。まだ茶コーダーなので今後も精進していきます。
似たような仕組みを利用した転職サービスとしてPaizaがあり、問題を解くことが即転職活動につながるサービスとして有名です。

入出力のやり方を理解するのに最初は苦戦するかもしれませんが、解説記事も多くあり、一旦慣れてしまえば大量の良質な問題にアクセスできます。簡単な問題から、高度な数学的素養が必要な問題まで難易度もさまざまです。
データ構造や計算量を考えることが少し身近になり、効率的に処理をするためにはどうすればよいかを考える習慣が付くので、初学者でもチャレンジする価値は大いにあります。

Udemy

https://www.udemy.com/ja/

動画教材サービスで、一連の講座単位で購入、視聴することができます。
ドットインストールに比べ、よりレベルが高い内容のものが多い印象です。
私は業務で使うことになったReact-ReduxやScala、AWSなどに関する動画を購入しました。

頻繁にセールをしているので、安い時を狙って購入するのがおすすめです。
数時間~十数時間分のハイレベルな講座を1000~2000円程度で購入できます。

実際の業務

やはり実際に業務に取り組むのが一番の成長に繋がります。
適度な緊張感の中、一定の時間、技術に触れることは成長に不可欠だと考えます。

また、業務での開発では趣味ではあまり意識しなくても済んでいた品質や運用に関して必ず向き合うことになります。
バグが混入しづらく、わかりやすく修正しやすいコードを書くこと、ユニットテストを書くこと、ミドルウェアの設定をすること、トラブルがあればログを調べて打ち手を考えることなど、本や記事を読むだけでは中々身につかない部分が多くあります。

トライコーンは開発者に任される業務範囲が広く、色々な層の技術に触れることができるため、毎日新たに学ぶことがあります。

特に参考になった書籍

学習において個人的に参考になった本の中で、共通して参考になるだろうと思われる本をピックアップします。まだまだしっかりと身に付いていない部分が多いので、定期的に読み返す機会を持とうかなと思います。

  • リーダブルコード
  • プリンシプル オブ プログラミング
  • Webを支える技術
  • 失敗から学ぶRDBの正しい歩き方

これ以外にも良かった本は数多くありますが、特定の言語、技術に関する本などが多いため割愛します。

資格

業務に資格の取得は必須ではないですが、体系だった知識を得るのに有効な方法です。特に知識の少ない初学者にとっては、基礎的な知識を得られる上、客観的な指標で学習実績をアピールできるのでおすすめです。
資格の有用性についての是非はあるかと思いますが、頭の片隅に情報を入れておくという意味では役立つと思います。
なお、トライコーンにはさまざまな資格に対する報奨金制度があり、色々取得するとちょっとしたボーナスくらいにはなります。

昨年の9月に入社してから下記の資格を取得しました。

  • LPIC (101, 102, 201)
  • OSS-DB Silver
  • HTMLプロフェッショナル認定 (Level 1, 2)
  • IPA 情報セキュリティマネジメント試験

LPIC

概要と学べること
Linuxの操作、仕組みについて学ぶことができます。レベル1は入門レベルにあたる内容で、基礎的なコマンド操作や設定関連について出題されます。レベル2はもう少しレベルが上がり、リソース測定や頻用されるミドルウェアの設定の書き方などが出題されます。

101を取得しておくだけでも、日頃使うLinux操作の抵抗感が減ります。また、シェルスクリプトの勉強にもなります。102や201ではセキュリティ関連やリソース測定の基礎が範囲となるため、より幅広い知識が身につきます。
Linux関連の知識はある程度覚えておくことで、技術的な会話がスムーズに進みます。詳細を覚えていなくても、調べるための情報がいくらか頭に入っているはずなので、実務でも役に立つと思います。

勉強法
Ping-tを活用しました。下で挙げる他の試験でも大体同じように活用しました。
まずは各項目ごとに出題を絞り、全て金色になるまで問題を解くことを繰り返し、全ての問題を一旦解きました。色々な範囲の内容を一度に覚えるのは難しいので、まずは項目ごとに集中的に問題を解き、段階的に記憶するようにしました。
その後、学習履歴を消去し、全ての範囲から出題するようにし、こちらも全て金色になるまでやります。後は模擬試験である程度まとまった問題量(50問など)を解いていき、90%以上の正答率が安定して出るまで繰り返します。
コマ問も適宜解いていきます。選択肢というヒントがない状態なので、選択問題よりしっかりした知識が必要になります。選択肢というヒントがない状態でコマンドやパスを打ち込むだけでも割と頭に入るので、早いうちからやっておくと良いと思います。本番も1, 2割程度出題されます。
本番に比べ、Ping-tはやや難易度が低い傾向があるので、Ping-tはほぼ完璧くらいに仕上げておくほうが無難です。
レベル1はある程度余裕を持って合格できましたが、201はかなりギリギリだったため、202は書籍の問題集も併用して受験する方針です。

OSS-DB Silver

概要と学べること
データベースの一つであるPostgreSQLについての知識を問う試験です。SQLに関する出題が多く、SQLに慣れることができます。SQLは開発だけでなく運用でも関わる機会が多いため、慣れておくに越したことはありません。データの読み書きに関するもの以外にも、テーブル操作やロックについても出題されます。
また、インデックスやバキュームといったDBの仕組みや内部処理も出題範囲なので、これらについても何となく知ることができます。

勉強法
こちらもPing-tを活用しました。入社前からDBを扱うプログラムを書いていたので、SQLについてはさほど苦戦しませんでした。一方、内部の処理についてはあまり知らなかったので、Ping-t反復による暗記で対応しました。仕組みを理解するいい機会になりました。
公式ページにある例題が結構難易度が高く、参考になるのでこちらも抑えておきましょう。

HTMLプロフェッショナル認定

概要と学べること
Web制作に欠かせないHTML、CSS、JavaScriptに関する知識を問う資格です。
レベル1はHTMLとCSSが主です。CSSの複雑な指定やHTML5のCanvasなどの知識も要求されます。
レベル2は一転してJavaScriptに関する内容が多くを占めるようになります。試験範囲がES5なので、最近になってJavaScriptを勉強し始めた人は少し戸惑うかもしれません。

勉強法
レベル1はPing-tを活用しました。HTMLやCSSについては多少は知っていましたが、詳しい内容も出題されるので、新たに学ぶ内容も多くありました。
レベル2は翔泳社のスピードマスター問題集を利用しました。実務でJavaScriptを使う機会が多くあったので、割とスムーズに取得できた気がします。
両レベルについて言えますが、この試験も公式ページに例題が多く掲載されているので、一通り解いてみることをおすすめします。 

情報セキュリティマネジメント試験

概要と学べること
情報セキュリティに関する一般的な知識を問う資格で、技術者のみならず、ITを利用する全ての人材をターゲットとしています。
個人情報を多く扱うトライコーンでは全員取得することになっており、入社1年を目処に合格することが求められています。

ITを利用する上で常識として抑えておくべきセキュリティの知識を総ざらいできます。技術的な話ばかりではなく、組織全体で情報資産のセキュリティを管理する考え方についても学ぶことができます。ITに関わる人であればとりあえず抑えておくべき知識かと思います。

勉強法
まず、インプレス社の徹底攻略情報セキュリティマネジメント教科書を何度か通読しました。
その後、情報セキュリティマネジメント試験ドットコムを利用して、大体8~9割程度取れるようになったところで過去問を実際に解きました。
初期の試験は簡単な傾向なので、高得点が取れても油断しないほうが良いです。最近の平均点を見る限りは難易度が安定してきているようです。

転職に至るまでの流れとスケジュール

2018年の年明け頃から、化学者としてのキャリアを進むことに疑問を持ち始め、他業種への転職を検討し始めました。そこで、前々から興味があったIT業界について本気で考えてみることにしました。
3月頃からProgateを少しずつやり始め、ドットインストールも見るようになりました。インターネットで評判の良かったN予備校の教材もチャレンジしましたが、少々難しく、当時は挫折してしまいました。この頃はあまり学べている実感もなく、決断し切れなかったというのが正直な所です。

本格的に決断を下したのが2018年のゴールデンウィークで、まとまった時間ができたので、再度プログラミングにチャレンジしようとPaizaをやってみたら楽しくなってきて、精力的に取り組むようになりました。自分で考えて実装する点が良い刺激になりました。これがきっかけで本気でIT業界を目指そうと思うようになりました。AtCoderも参加するようになりました。また、Web業界でよく使われる技術についても学んでおこうと考え、チュートリアルが充実しているRuby on RailsとAngularの学習を始めました(その後使わなかったこともあり、今でも残念ながらあまり身についていません)。

学習量としてはまだイマイチと思いつつも、 5月末あたりから転職活動を始めました。具体的に働くイメージを持ちたかったこと、PaizaでSランクを取れたので、話くらいはできるレベルになったかなと考えたことが大きな要因です。20代後半なこともあり、早めに動き始めたほうが良いだろうという考えもありました。転職サービスはPaizaに加え、GreenとForkwellを利用しました。
6月上旬から数社面談に行き、その中で一番良さそうに感じたトライコーンからまずは面接を受けてみようと思いました。幸いトントン拍子で進み、内定を頂くことができたので、会社に7月で退職する旨を伝えました。8月は入社に向けて学習しつつ、少し羽根を伸ばしたかったこともあり1ヶ月無職で過ごすことにしました(笑)。

7, 8月は知識補充のためにドットインストールの動画を色々と見て知識を増やしつつ、使っていると聞いていたPHPやReactの学習のため、簡単なアプリケーションをいくつか作成しました。PHPは素のPHPとCodeIgniterを使いました。結果的に最近までPHPを扱うことはほとんど無かったのですが。。

おわりに

入社して1年ほどとなりました。未経験からの挑戦でしたが、小規模な開発から少しずつ任せて頂き、徐々に慣れていくことができました。
サーバーサイド、フロントエンドの両方の開発に関わることができ、インフラもオンプレとAWSの経験ができています。一通り色々な技術に携わりたいと思っていたので、非常に良かったと考えています。
今後も色々な知識を身に着け、トライコーンのサービス拡大、成長に尽力できればと思います。

ozaki

Posted by ozaki