フルスタックエンジニアを目指すには。

  • このエントリーをはてなブックマークに追加

   

3104022979_0f3418c994_z
by Shunsuke Kobayashi

習うより慣れろと言うことわざがありますが、
エンジニアであればそれは100の理論より1の実践。
フルスタックで有ろうが無かろうが
実際に動かし、自身の手で実感をつかみ取らねば成長できるはずがありません。

では、具体的に何を実践していけばフルスタックエンジニアへの一番の近道になるでしょうか?

本来フルスタックエンジニアに近道なんて物はありませんが、
下記キー要素を抑えておけば習得スピードの加速度は間違いなく着くはずです。

Amazon Web Services(AWS)

いわゆる『クラウド』をまず第一に抑えておくべきでしょう。
世の中にクラウド基盤は数多く存在し、必ずしもAWSで無ければ行けない訳ではありません。
ただし、AWSがデファクトスタンダードになっていることも事実であるため、
まずはAWSを抑え、周辺クラウドサービスを比較していくのがいいかと思います。

さて、実はこのAWS、『完璧に』操れるのであればその瞬間フルスタック完成です!
脇目も振らずにAWS全サービス使いまくり全てを把握していけばいいんですが、、、
まぁ無理でしょう。基礎知識なければAWSは使いこなせません。

まずはAWSの中でもこちらを使用してみて下さい。

  • EC2でLinuxAMIインスタンス起動し、
  • RDSでMySQLを起動、
    (お名前.comか何かでドメイン取得した上で)
  • Route53でドメイン、サブドメインを設定し、
  • S3に適当な画像をアップしてみて
  • CloudFrontでS3と連携、
  • そしてELBで2台のEC2を設定してみる。

これら一通りできましたら、まずはAWS初心者卒業と言う所でしょうか。

上記のうち特に重要と言えるのは、ELB=Elastic Load Balancingです。
(と、本当はVPCも重要なのですが、今回は割愛します)

ELBがなぜ重要なのか?
ということで次の単元に移りましょう。

Apache

数あるミドルウェアに置いて、何を筆頭に持ってくるかと問われたら
まずはWebサーバであるApacheでしょう。

本当は企業システムにとって最重要要素である「データ永続化」ミドルウェアであるRDB(及びSQL)も取り上げたいのですが、
フルスタックエンジニアとしての重要度⇔Webシステムとしての重要度ではWebサーバの方が重要です。

何故か?

可用性向上の切り札であるReverseProxy機能があるからです。
ReverseProxyとして背後のサーバ群を隠蔽化することで初めて、
負荷分散やフェイルオーバーを実現することができるようになるのです。

なお、このReverseProxy機能を特化しクラウドサービスとした物が、
前述のELBということになります。
卵と鶏の関係ではないですが、クラウドを使いこなすには基盤技術を抑えていなければ行けない訳ですね。

さて、ReverseProxy以外に重要な機能としては、

  • VirtualHost
  • アクセスログ

も是非忘れないで下さい。
アクセスログは放っといても勝手に出ますが、これを極めてみるのも非常に面白いですよ。
(LTSV形式で出力→Fluentd→S3&Hadoop/Redshift/BigQuery/Treasure Dataで解析、とか)

プログラム言語

最後になりましたが、実は最も重要な技術。
JavaでもPerlでもRubyでも何でも構いませんので、
最低一つの言語は「エキスパートである」と自信を持って言えるようになって下さい。

一つを抑えておくことで、他の言語には応用が利くようになります。
(特にO’Reillyのクックブック系シリーズは、この応用を利かすための専用本と言う位置付けで出版されています)

「エキスパートである」ためには書けるだけではダメです。
所謂コードリーディング、色々なオープンソースの中身を見て、是非ともその設計思想に触れて下さい。
デザインパターンがなぜ重要なのか?
フレームワークのソースにその答えが書いてあります。
(Javaでしたら是非Tomcatのソースを読んでみて下さい!)

終わりに

上記3点のキー要素を挙げましたが、これらだけでは到底フルスタックとは呼べません。
(特にネットワーク技術&セキュリティ技術が上記ではまるで抑えられません)
ただし、冒頭にも書きました通りこれらを抑えることで
エンジニアに取って何が重要なのか、そのポイントをある程度は抑えられるのではないでしょうか?

まず実戦し、スクラップ&ビルド繰り返しながら手で実感した上で、
周辺技術に視野を広げながら技術の『すり合わせ』に是非トライしてみて下さい。

フルスタックはその先にきっと待っています。

 -Tech, ビジネス, プログラミング

FAworksではプロのコンサルタントが案件をお探しします

  関連記事

Dockerコンテナとイメージの仕組みを視覚化してみた

この記事は、Docker 102レベルを意図して書かれている。Dockerが何か分からない、または仮

Lispをあなたの言語にも取り入れる方法

僕はプログラミング言語Lispのファンだ。だが、多くの不慣れなプログラマにとって、その素晴らしいまで

プログラマが20代のうちにやっておきたい11のこと

  プログラマであれば、誰しもが耳にしたことがある「プログラマ35歳定年説」「転職の35歳

待ち遠しい次の祝日がコマンドラインでわかる!‐cal‐ 端末にカレンダーを表示しよう

待ち遠しい次の祝日がコマンドラインでわかる!‐cal‐ 端末にカレンダーを表示しよう

これは“コマンドライン・マンデー”シリーズの最初の投稿です。このシリーズでは、毎週月曜日に使えるコマ

なぜあなたのインターネットは遅いのか?問題を切り分けて特定するトラブルシューティング

はじめに 家庭、コーヒーショップ、またはオフィスでの作業中に「インターネット(インフラ)にまつわる問

ITエンジニアならチェックしておきたいおすすめ有名企業テックブログ15選(2015年版)

情報収集にも採用にも繋がるテックブログ 今年も終わりにさしかかり、アドベントカレンダーの時期になりま

NGINXのスレッドプールがパフォーマンスを9倍にする!

NGINXのパフォーマンスをスレッドプールで9倍にする

はじめに NGINXが接続処理に非同期かつイベント駆動のアプローチを用いていることは、よく知られてい

こんな日常当たり前?!デスマーチあるある

こんな日常当たり前?!デスマーチ体験談あるある

【関連記事】 ❏デスマーチ妹の理不尽電話 ❏実は午前中は仕事してない?!エンジニアあるある ❏「フリ

エンジニアあるある!ネガティブフレーズまとめ

エンジニアあるある!ネガティブフレーズまとめ

残業あるのが当たり前、突然の電話で休日出勤、こんなのが当たり前のシステムエンジニアという職業。思わず

Javaアプリケーションのパフォーマンスを(ほぼ)自動的に上げる方法

Javaアプリケーションのパフォーマンスを(ほぼ)自動的に上げる方法

コードを書き換えずに簡単な手順をいくつか踏むだけで、複雑なJavaアプリケーションを10%以上スピー