未経験からエンジニアになるためのロードマップ後半(お金をかけずに独学で勉強する方法を紹介します)

未経験からエンジニアになるためのロードマップ後半〜お金をかけずに独学で勉強する方法を紹介します〜
未経験からエンジニアになるためのロードマップ後半〜お金をかけずに独学で勉強する方法を紹介します〜

みなさんこんにちは!だるまっちです。

今回は未経験からWebエンジニアになるためのロードマップ後編になります。
まだ前編を読んでいない方はこちらから目を通していただけますと幸いです!!^^

good-life-media.net

このロードマップが「エンジニアを目指している大学生の方」、「エンジニアとして転職したいけど何からスタートすればいいのかわからない社会人の方」、「副業を始めたい方」などの参考になれば幸いです!

勉強スケジュール(再掲載)

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

3ヶ月 - 4ヶ月目 プロゲートを使ってRubyRailsを勉強しよう・Railsチュートリアルを2週しよう!

ここからはRubyRailsを勉強していきます。
Rubyプログラミング言語の一つで日本人であるまつもとゆきひろさんが開発した言語です。プログラミングを楽しみながら書いていこうという思想で作られているため、とても書きやすく、英文を読み書きする感覚で書くことができます!なお、Rubyオブジェクト指向というプログラミングをする上でとても欠かせない指向をベースに作られているため、Rubyをしっかり勉強するとプログラミングの基礎がかなり定着します。

Railsは、Ruby On Railsと言ってWebアプリを作るためのフレームワークになります。簡単に言うと、Rubyを使ってTwitterECサイトのようなアプリを素早く作成することが出来るツールがRailsになります。このRuby On Rails は日本のスタートアップやベンチャー企業で多く利用されているため、就活・転職のときにベンチャーを見ている方にとってはかなりおすすめのフレームワークになります。ちなみに、Railsデンマーク出身のDavid Heinemeier Hanssonさんというプログラマが作っています。Davidさんはカーレーサーでもあります笑

ここから4ヶ月間はRubyRailsをしっかりと勉強することで、Webアプリを作れるくらいの実力を身に着けていきましょう。

ではまずはRubyから勉強していきます。RubyはプロゲートのRubyコースをI - Vまでやりきってみましょう!おそらくここで挫折する人が出てくると思いますが、ここで諦めずにやりきることができれば、周りの人と少し差別化出来るのでぜひ頑張ってみてください!

prog-8.com

余裕があればDB(データベース)についても勉強しておこう

その後余裕があれば(できれば勉強してほしいです)、DBコースも勉強しておきましょう!
以下のSQLコースをIVまでやりきることができれば完璧です。

DB(データベース)はお客さんの個人情報や商品の売上と言ったデータを保存する場所だと思ってください。DBからデータを取得したり、データを書き込んだりするときに使う言語がSQLになります。今後エンジニアになるときに、DBはどの業界でも必ず必要になるため、今の段階でDBとSQLについて勉強しておくと、今後の学習がスムーズになります。

prog-8.com

続いてRailsを勉強していきましょう!

Railsは以下のプロゲートのI - XIに挑戦してみましょう!少し長いのですが、この部分をしっかりと理解できていると、このあとの開発がスムーズになります。こちらも70%程度理解できるようになるまではプロゲートを何回か復習してみてください。

prog-8.com

プロゲートが完了したら次はいよいよRailsチュートリアルです。RailsチュートリアルRailsを触ったことがある人なら誰もが通る道と言っても過言ではないチュートリアルになります。

チュートリアルは以下のサイトからやってみてください!

最初はかなり難しいと思うので、一気にやるのではなく、少しずつ目標を立てながらコツコツとやるのがおすすめです。チュートリアルが終わって余裕があればもう一周してみましょう!ここまでしっかりと勉強していればRubyRailsの基本的な部分はマスターできると思います。

railstutorial.jp

Rubyの参考書はこちらが詳しく載っていたのでおすすめです。
(画像をクリックするとAmazonに飛びます)

Railsの参考書はこちらがわかりやすかったです。
(画像をクリックするとAmazonに飛びます)

私が勉強する中で役に立った参考書をこちらで紹介しているので参考にしてみてください。

good-life-media.net

ここまで無事にやりきることができれば、次はいよいよ就活や転職でアピールできるポートフォリオの作成です。
ポートフォリオは2種類作成することがおすすめです。

  • 既存のサービスを真似して作る
  • 自分オリジナルのサービスを作る

既存のサービスを真似して作ることで、サービスに必要な機能を把握することが出来たり、基本的なロジック部分を理解出来るようになります。

既存のサービスを真似してポートフォリオを作ることが出来たら、自分オリジナルのポートフォリオを作成することで、他の未経験の方よりも市場価値が高くなります。 というのも、未経験の方で自分の頭で考えてポートフォリオを作っている方はそこまで多くないからです。多くの方が「Twitterやメルカリを真似して作りました!」で終わってしまっているので、オリジナルのポートフォリオを作っておくことで、こういった方々と差別化することが出来ます。

さっそくポートフォリオを作成していきましょう!!

5ヶ月目 既存サービスを真似しながらポートフォリオを作ってみよう!

まずは既存のサービスの真似をしながら作っていきましょう!おすすめのサービスは次の3つです。

作りたいサイトは決まったけど、ではどのように作っていけば良いのでしょうか?

通常Web開発の手順は、以下の流れになります。

① 設計をしよう

  1. 機能の洗い出しを行う
  2. アウトプットイメージを作成する(ワイヤーフレームを作る)
  3. DB設計をしよう
  4. 開発スケジュールを建てよう

②開発しよう

さあいよいよ開発です。まずはログイン機能など簡単な機能から作っていくのがおすすめです。

実際に開発をしていくと、どうやってかけば良いのかわからないと言った壁にぶつかることが多々あると思います。

壁にぶつかったら諦めてしまうのではなく、あらゆる手段を使って自分で調べてみましょう! これにより、自分で調べながら解決していく「自走力」を身につけることが出来ます。自走力は今後エンジニアとしてキャリアを歩む上で、必須のスキルと言っても過言ではないので、ポートフォリオを作成する中で養っていきましょう!

だるまっちがよく調べるときに使う手段を挙げておくので、参考にしてみてください!

デバッグをしよう

無事にポートフォリオを作ることが出来たら、次はデバッグです。デバッグとは、バグを見つける作業になります。 具体的には、今回作ったポートフォリオを可能な限り何度も触ってバグをあぶり出していきます。

デバッグは終わりが見えないことが多々あるので、テストケースを作成してデバッグする範囲を決めていきます。

だるまっちが作ったテストケースの例を掲載してみたので、参考にしてみてください!^^

テストケースの例
テストケースの例

④公開しよう

さあいよいよ自分が作ったアプリを世の中に公開してみましょう!!

手元にあるアプリをサーバーに公開する行為をデプロイといいます。 無事にデプロイが完了すると、一般の人々がアクセスできるようになります。無事にデプロイが終わって世の中の人々がアクセスできる状態になることをリリースと言います。

デプロイのやり方についてはこちらの記事がわかりやすかったです。

qiita.com

6ヶ月目 自分のアイディアからオリジナルのポートフォリオを作ってみよう!

最後に自分のオリジナルポートフォリオを作っていきます!
だるまっちがいつも言っているのは、自分が抱えている課題を解決できるようなアプリを作ってみると、ポートフォリオにストーリーが出来ていいよ!と言っています。しかし、「急に課題と言われても、、、」と思う方がほとんどだと思うので、その場合は既存のサービスに一つ前に作ったクローンサイトにプラスアルファの機能をつけてみるのもありです!
とは言え就職・転職で評価されるのは自分で課題を見つけて解決するために作成したアプリになるので、「料理を考えるのがめんどくさい」、「ショッピングが好きなので、おすすめの商品をレビュー付きで見れるSNSがほしい」など小さな課題・要望でもいいので、ぜひ考えて形にしてみてください^^

ポートフォリオを作るときの注意点はこちらのyoutubeを参考にしてみてください!

www.youtube.com

最後に

未経験からエンジニアになるためには、時間と努力が必要になりますが、コツコツとやり続ければ必ずエンジニアとしての道は見えてくると思います。
実際にだるまっちの友達も未経験から勉強を始めて半年後には自社サービスのエンジニアとして転職しているので、努力次第では誰でもエンジニアになることが出来ると思います。

以上、いかがでしたでしょうか??
みなさんのキャリアについて、少しでも参考になれば嬉しいです!^^

「はてぶ!」していただけるととても励みになります。
ここまで読んでくださってありがとうございました!

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

未経験からエンジニアになるためのロードマップ前編(お金をかけずに独学で勉強する方法を紹介します)

未経験からエンジニアになるためのロードマップ前編(お金をかけずに独学で勉強する方法を紹介します)
未経験からエンジニアになるためのロードマップ前編(お金をかけずに独学で勉強する方法を紹介します)

みなさんこんにちは!だるまっちです。

今回は未経験からWebエンジニアになるためのロードマップについて書いていきたいと思います。
このロードマップが「エンジニアを目指している大学生の方」、「エンジニアとして転職したいけど何からスタートすればいいのかわからない社会人の方」、「副業を始めたい方」などの参考になれば幸いです!

実際にこのロードマップ通りに勉強して未経験からエンジニア転職に成功した友達がいるので、挑戦してみる価値はあると思います。
ちなみにその子は半年くらい独学で勉強したあとに転職活動して、結果として5社受けて3社内定を貰っていました。
今は自社サービスエンジニアとして楽しく働いています。

勉強スケジュール

未経験からエンジニアになるためのロードマップ
未経験からエンジニアになるためのロードマップ

上記に勉強スケジュールを上げてみましたが、期間はあくまで目安なので焦らずに自分のペースでやりましょう!
というのも、大事なのはただやることではなく、理解しながら、そして楽しくやることだと思うので、プログラミングすることがただの作業にならないようにしましょう。

私自身現役エンジニアとしてわからないところもサポート出来ますので、 お気軽にご連絡ください(要望が多ければ、未経験エンジニアを育成するサロンを開設したいと思っています)

それではプログラミングを始めてみましょう!! プログラミングを始める前にMacを持っていない方は、ぜひこちらの記事を読んでMacの購入を検討してみてください。

good-life-media.net

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

1ヶ月 - 2ヶ月目 プロゲートを使ってHTML/CSSJavaScriptを勉強しよう!

まずはよく聞くHTML/CSSからやっていきましょう! HTML/CSSは、マークアップ言語と呼ばれている言語の一つで日本語では装飾言語と呼ばれています。
装飾言語・・・装飾言語・・・あんまりピント来ない人が多いですよね(笑) これらのマークアップ言語(装飾言語)は一体何を装飾しているのでしょうか???

答えはWebサイトを装飾しています。すなわち、Webサイト制作(ホームページ作成)をするときに使う言語がHTML/CSSです。 Webサイトを装飾するイメージとしては、文章や画像を表示したり、文字の色や背景の色を変えたり、時にはアニメーションをつけたりなど、
Webサイトを読みやすいコンテンツにしていくものだと思ってください。

なので、HTML/CSSと言ったマークアップ言語を取得できれば、Webサイト制作やHP作成のお仕事を受注できるようになります。 HTML/CSSの勉強の流れとしては、以下の順番にやってみてください。

  1. プロゲートのHTML/CSSコースの初級編をやる
  2. プロゲートのHTML/CSSコースの中級編をやる
  3. 簡単なWebサイトを2つほどトレースしてみる(真似して作ってみる)
  4. プロゲートのJavaScriptコースの最低でもJavaScript IIIまで完遂する
  5. ドットインストールを見ながらおみくじを作ってみる

prog-8.com

1、2、3をやることでHTML/CSSの使い方がある程度わかるようになる

プロゲートの初級編と中級編を勉強することで、何となくHTML/CSSを使ってWebサイト(ホームページ)を作成するイメージが付くと思います。 ここからHTMl/CSSをしっかりと自分のスキルにするために、Webサイトのトレース(真似)をしてみてください。これにより、プロゲートで学んだことをアウトプットすることが出来るので、HTML/CSSのスキルが定着します。

なお、Webトレースをする際におすすめのサイトはこちらの3つです。

スタンダードレイアウト

グリッドレイアウト

シングルページレイアウト

これらのサイトのどれでもいいので真似して作ってみてください。

なお、上記のサイトはこちらの本に掲載されているものなので、自信が無い方や疑問点がある方はぜひこの本の購入を検討してみてください!!

4、5をやることでJavaScriptを使って動きのあるサイトを作れるようになる&プログラミングの考え方が少し身につく

ここからいよいよJavaScriptに入っていきます。JavaScriptを使ってプログラミング出来るようになると、RubyPythonなど他のプログラミング言語の取得スピードも早くなるのでここは時間をかけてもいいのでゆっくりやってみましょう!プロゲートのJSコースの内容を75%くらいまで理解できるようになってから次のステップに行くと、このあとの勉強がスムーズになるので、プロゲートを何回か繰り返して理解を深めていきましょう。

prog-8.com

プロゲートが終わったら次はドットインストールです。HTML/CSSJavaScriptを使っておみくじを作ってみましょう!

少しだけ難易度は上がりますが、おみくじが作れるレベルになれば、簡単な動きのあるWebサイトを自分の力で作るくらいの実力がつくと思います。

ここまで無事にやりきることができれば、簡単なWebサイト制作の案件を受けることができるようになると思います。(注意:スマホにも対応したサイトを作るためには追加でレスポンシブデザインを勉強する必要があります)

まだ自分に自信が無い方は、Webトレースを追加でやってみてアウトプットの数を増やしてみましょう!

後編は以下のリンクから読んでみてください!

good-life-media.net

Webエンジニアを目指している方はWindowsよりもMacがおすすめ

Webエンジニアを目指している方はWindowsよりもMacがおすすめ
Webエンジニアを目指している方はWindowsよりもMacがおすすめ

みなさんこんにちは!だるまっちです。

今回はWebエンジニアを目指している人におすすめのパソコンを紹介したいと思います。

それではおすすめのパソコンを見ていきましょう!

記事の構成

  • Webエンジニアの人におすすめのパソコンとは?
  • なぜMacがおすすめなのか
  • プログラミング用に初めてMacを買うならMacBookProがおすすめ

Webエンジニアの人におすすめのパソコンとは?

未経験からエンジニアになりたくて勉強しようと思っているんだけど、パソコンは何がおすすめですか?と言う質問を頂くことがございます。 目指しているエンジニアの業界にもよりますが、私はMacをおすすめしています。

その理由は、次の4つです。

  • プログラミング界隈ではMacに対応した情報が多いため情報収集がしやすい
  • プログラミングをするまでの準備がWindowsよりも簡単に出来る(環境構築を簡単にできる場合が多い)
  • 使いやすいアプリが多い
  • 先輩に聞きやすい

上記の理由から今後エンジニアとしてキャリアを歩んでいくのであれば、Macがおすすめです。

これは私の経験談になってしまうのですが、私の職場にはエンジニアインターンとして、よく未経験の学生さんや社会人の方が来ます。 その方の多くがWindowsパソコンを持参してきます。
しかし私の職場ではエンジニア全員Macを使用して開発しているため、Windowsの操作やエラーについて質問されたときにすぐに解決できないことが少なからずあります。 また、Windowsは機種によってエラーの原因が変わってくることがあるため、未経験の方はそこに時間を取られてしまうことで、成果を出せずに焦ってしまうケースが多いです。なので、本気でエンジニアになろうと思っている方はMacを使っておくと、今後の開発がスムーズに行くと思っているので、私はいつもMacをおすすめしています。

その理由を一つずつ説明していきます。

プログラミング界隈ではMacに対応した情報が多いため情報収集がしやすい

プログラミングをしていると必ず遭遇するのがエラーになります。エラーが出たときに、Google先生で検索するのですが、その検索結果の多くがMacで動作確認している記事が多いです。そのため、Macだと求めている情報にたどり着きやすいのに対して、Windowsだと求めている情報になかなかたどり着かないというケースがあります。

プログラミングをするまでの準備がWindowsよりも簡単に出来る

準備(環境構築など)が簡単に出来る理由は2つあって、1つ目が上記で挙げた「Macに対応した情報量が多い」ということになります。 そして2つ目が「Macはサーバーで使うコマンドがそのまま使える」ということになります。

Macはサーバーで使うコマンドがそのまま使える」ってどういうこと?そもそも「コマンド」って何?と疑問に思った方が多いと思います。

コマンドというのはパソコンに命令を出すときに使うもので、以下の画像のようにターミルやコマンドプロンプトといった黒い画面からファイルの一覧を見たり、フォルダを作ったり、ファイルを開いたり、ファイルの名前を変更したりなど、みなさんがいつもマウスを使ってエクスプローラーでやっていることをキーボードから命令を書くことで操作できちゃいます。

いちいちキーボードでやるよりもマウスでやったほうが早くない?と思われた方もいると思いますが、慣れてしまうとマウスに手を持っていくのが逆に大変だったり、100個のファイルの名前を変更するとなった場合に、コマンドを使えば一気に変更できるのでとても便利です。多くのエンジニアが日常的にコマンド操作をして、アプリ開発をしています。

コマンドの例
コマンドとは

コマンドはなんとなく分かったけど、「Macはサーバーで使うコマンドがそのまま使える」とはどういうことなの?って思っている方が多いと思います。

実はWindowsMacではコマンドの書き方が違うのです。例えるとWindowsではフランス語を使っていて、Macでは英語を使っているようなイメージです。「ありがとう」と伝えたいときに、フランス語では「Merci」、英語では「Thank you!」と伝えるように、「ファイルの一覧を表示する」といった命令を出すときに、Windowsでは「dir」、Macでは「ls」と言ったように命令の書き方が異なります。

書き方の違いくらい慣れの問題じゃない?と言われてしまえばそうなのですが、実はアプリ開発をしていく上で必須となる環境構築や運用の段階でMacを使っている人の方が有利になるケースが多くなります。

環境構築や運用の段階でよく使われるものが、Linuxという無料のOSになります。LinuxMacは柔らかく言うと兄弟のようなもので、同じコマンドを使う事ができます。なので、日頃からMacのコマンドに慣れておくと、環境構築や運用をする際に普段使っているコマンドで操作することができます。一方、Windowsのコマンドに慣れてしまっている方は、環境構築や運用をする際に新しくMacのコマンドを覚える必要があるので、学習コストがかかってしまいます。こういった点でもMacがおすすめしています。

使いやすいアプリが多い

MaciPhoneAppleという会社が作っているため、iPhoneを使ったことがある人には伝わると思うのですが、Macには直感的に操作できるアプリが多数あります。例えばSafariも標準でインストールされており、検索したいと思ったことをすぐに検索できたり、iPhoneと履歴を同期するなどかゆいところに手が届くアプリが多いです。

その中でもだるまっちがおすすめしているアプリは「Alfred」というアプリで、アプリの起動を素早く起動することが出来ます。 例えば、PowerPointを使っているときにWordを開きたいといった場合に、Windowsの場合、デスクトップ下にあるタスクバーからWordをクリックするか、スタートメニューからWordを探す必要があると思います。しかし、MacにAlfredをインストールすれば、下の画像のように「Ctrl + Space」を押して、素早くアプリを検索することが出来ます。とても便利ですね!

便利なAlfredの紹介
便利なAlfredの紹介

先輩に聞きやすい

Web業界ではMacを使って開発している人が多いので、エラーが出たときやわからない事があったときに身近にいるエンジニアの先輩に聞きやすいです。冒頭で挙げた私の体験談にもあるように、Windowsパソコンを使っている人に教える場合、時間がかかってしまうケースが多いので、教える側としてもMacを使っている方が教えやすいです。

プログラミング用に初めてMacを買うならMacBookProがおすすめ

MacBookPro13インチがおすすめです。 このときに注意してほしいのが、「メモリ:16GB以上、CPU:Intel Core i5以上」になります。 メモリというのは、机の広さのようなもので同時にたくさんのアプリを開くことができます。実際にプログラミングをする際には、Google Chromeやプログラミングエディタ、チャットツールなど多数のアプリを開くためメモリが16GBでないと動作が遅くなってしまって開発スピードに支障が出て来てしまいます。また、CPUはcore i5以上がおすすめです。CPUは、頭脳のようなもので、CPUの性能が良ければ良いほど、実行速度が速くなります。

私自身MacBookPro13インチのメモリ16GBでCPUが1.4 GHz クアッドコアIntel Core i5のものを使っておりまして、常日頃快適に開発をしています。実際の職場でも重いアプリを2個ほど開いていますが、とてもスムーズに開発出来ています。
そのため私自身の経験からもMacBookPro13インチがおすすめです。

Amazonでも購入することが出来るので、価格など興味のある方は下の画像をクリックするとAmazonのページに行くことが出来ます。

楽天やYahooでも購入できます。

わからないことなどや感想などございましたら、コメント頂けると幸いです!!

「はてぶ!」していただけるととても励みになります。
ここまで読んでくださってありがとうございました!

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

自社開発と受託開発の違い|未経験エンジニアにはどちらがおすすめか

自社開発と受託開発の違い|未経験エンジニアにはどちらがおすすめか
自社開発と受託開発の違い|未経験エンジニアにはどちらがおすすめか

みなさんこんにちは!だるまっちです。

今日は自社開発と受託開発の違いやメリット・デメリットについて書いていきます。

エンジニアとして就職や転職しようと考えている方の参考になれば幸いです

自社開発とは?

自社開発とは、商品やサービスを自社で持っており、その商品やサービスを自社のエンジニアが開発することを指します。

例えば、株式会社AAAという会社が「エンジニア転職サポートくん」というサービスを作っていたとします。もしだるまっちがこの会社にエンジニアとして就職すれば、だるまっちは「エンジニア転職サポートくん」の開発を行うことになりますよね。これが自社開発になります。

まとめると、自社のサービスを開発することを自社開発と言います。

受託開発とは?

受託開発というのは、社外のサービスを開発することだと思ってください。

例えば、株式会社BBBという会社が「レシピ一発検索ちゃん」というサービスを提供しているとします。しかし、株式会社BBBにはエンジニアがいません(メインのエンジニアが辞めてしまいました)。「レシピ一発検索ちゃん」をもっといいサービスにするためにはエンジニアの力が必要なのですが、なかなかいい人材が見つかりません。
そこで株式会社BBBは株式会社CCCに開発をお願いしました。このお願いされた株式会社CCCが受託開発になります。株式会社CCCは自社でサービスを持っていないが、このようにエンジニアが不足していて困った人いる会社のサービスを一緒に開発していきます。

まとめると、他社のサービスを一緒に開発することを受託開発と言います。

自社開発のメリット

自社開発のメリットは次の4つです。

  • スムーズなコミュニケーションを取りながら開発できる
  • スケジュールの調整がしやすい
  • 自分の意見やアイディアを形にできる
  • サービス全体を考えながら開発するスキルが身につく

スムーズなコミュニケーションを取りながら開発できる

自社開発では、エンジニアやデザイナー、マーケター、セールスの人が多くの場合自社の社員さんなので、気軽にコミュニケーションが取りやすいです。気軽にコミュニケーションが取りやすいと、精神的なストレスが減ります。

例えば、とある機能の開発をしているときに、デザインの部分でわからないところが出てきたとします。そのときに、自社にデザイナーがいれば、そこまで気を使わずにすぐにビデオチャットなので繋いで話すことが出来ます。このようにすぐにコミュニケーションが取れることで、自分の仕事も前に進んで行くので、精神的なストレスを貯めずに仕事が出来ます。

スケジュールの調整がしやすい

自社開発では、何かサービスをリリースする際にある程度自分たちでスケジュールを決めることが出来ますし、一度スケジュールを決めた後も大きなバグに遭遇してしまった場合やもっと良い機能を開発するとなった場合にスケジュールの調整がしやすいです。

実際にだるまっちも自社開発をしているのですが、開発中に追加で「画像アップロード機能あった方がユーザーは使いやすいのではないでしょうか?」という提案をしてスケジュールを少しだけ伸ばして貰ったこともあります。このようにサービスをより良くするためにスケジュールを伸ばすことが比較的容易に出来るのが自社開発の良いところです。

自分の意見やアイディアを形にできる

上記でも少しだけ触れましたが自社開発だと、自分からサービスをより良くするための提案をする機会が多いです。上記の画像アップロード機能もそうですし、ページのデザインの配置なども「ユーザーにとってこういう動線の方が使いやすいのではないか?」と言った提案をしながら、開発することも日常茶飯事です。

このように自分の意見やアイディアを形にしながらサービスをより良いものにしていく毎日はとてもやりがいがあります。

サービス全体を考えながら開発するスキルが身につく

自社開発のエンジニアはサービスをより良いものにするために、ビジネスモデルの把握や他の職種の人の仕事内容等もある程度把握する必要があります。なので、エンジニアリングのことだけでなく、そのサービスに関わる全体的な知識やスキルを身につける事ができます。

だるまっちもただ単にサービスを開発するというよりも、「今セールスの人がこういう課題感を持っているからその部分を解決できるような開発をしよう!」と言うことで開発をしたり、「この機能がユーザーに取って使いにくく、ユーザーの満足度が下がるから優先度高く改善しよう!」と言った具体で自分で考えながら開発をしています。こういったことを繰り返すうちに、必然とサービスや他職種の人の仕事内容への理解が深まっていき、サービス全体を考えながら開発するスキルが身につきます。

受託開発のメリット

受託開発のメリットは次の3つです。

  • 様々な業界の知識が溜まる
  • ビジネススキルが身につく
  • 技術的なスキルが身につく

様々な業界の知識が溜まる

受託開発では、他社のサービスを開発するため、毎回違った業界やカテゴリの開発をしていきます。そのため、様々な業界の情報やビジネスモデル・サイトの構造などを把握することが出来るので、そういった点でかなり楽しいと思います。だるまっちも業務委託で画像投稿サービスやECサイトの開発を行った経験がありますが、会社ごとにビジネスモデルやマネタイズのタイミングが違うので、とても勉強になりました。

ビジネススキルが身につく

受託開発では、お客さんとコミュニケーションを取りながら納期までに開発することが求められます。またお客さんのニーズを汲み取って提案する機会もあるため、ビジネスマンとして必要なスキルが身に付きます。

「いきなりコミュニケーション取りながら開発して、時には提案までするなんて無理だ!」と思われた方もいるかもしれませんが、受託開発では上司と二人三脚で開発したり、チームで開発することが多いので、少しずつサポートしながらこれらのスキルを身につけることが出来るので安心して開発することが出来ます。

技術的なスキルが身につく

受託開発で、最も気をつけなければいけないのが「バグ」です。もちろん自社開発でも気をつけなければ行けないのですが、受託開発ではお金を貰って開発していることや自分のコントロール出来ない範囲が多いので(例えば、土日にバグが発生して、先方にここをお願いしたいと連絡しても返信が返ってこないなど)、バグを出来るだけなくした状態で納品する必要があります。

そのために、チーム内でコードを何回もチェックして、フィードバックを貰う機会が多いので(レビューと言います)、バグの少ないコードを書くスキルやよりパフォーマンスの高いシステムを開発するスキルなど品質の高いコードを書くスキルが身につきます。

未経験エンジニアにはどちらがおすすめか

だるまっちの意見では、次の2つです。

自社開発がおすすめの方

「将来自分で世の中にインパクトがあるサービスを開発したい」、「自分のアイディアや意見をどんどんと形にしたい」、「エンジニアリング以外のこともやってみたい」という想いを持っている人は自社開発がおすすめです。

理由としては自社開発では、サービス全体のことを考えながら常日頃サービスを開発するスキルが求められるため、自分のアイディアや意見を形に出来る機会が多いです。また、どういった開発をすればユーザーに響くのかといったビジネス的な観点も養うことができるので、将来自分でサービスを開発したいと思っている方には、自社開発がおすすめです。

受託開発がおすすめの方

「エンジニアとして着実に成長したい!」、「将来フリーランスとして仕事をしていきたい!」と考えている方は受託開発がおすすめです。

理由としては受託開発では、お客さんとコミュニケーションを取りながら納期までに開発するスキルが求められるため、基本的なビジネススキルが身につきます。また、コードのレビューなどもしっかりしてもらえる機会が多いのでエンジニアリングスキルも着実に身につきます。なので、将来フリーランスとして活躍したいと思っている方には、受託開発がおすすめです。

以上、いかがでしたでしょうか??
みなさんのお役に少しでも立てれば光栄です!

「はてぶ!」していただけるととても励みになります。
ここまで読んでくださってありがとうございました!

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

エンジニア初心者が成長するために読んでおくべきおすすめの参考書

エンジニア初心者が成長するために読んでおくべきおすすめの参考書
エンジニア初心者が成長するために読んでおくべきおすすめの参考書

みなさんこんにちは!だるまっちです。

今回はエンジニア初心者の方が成長するためにおすすめできる参考書を紹介していきます。

最初はだるまっちもわからないことが多かったのですが、何回も読み直したり、関連する参考書を読んでいくことで、次第に理解が深まっていきました。参考書のおかげで現在はある程度「自分が作りたいアプリ」や「やりたいこと」をプログラミングで出来るようになってきたので、みなさんも最後まで諦めずに頑張ってみてください!!

それではおすすめしていきますね!!

HTML/CSS

まずはこちらになります。HTML/CSSの勉強を始めて間もない方におすすめです。
(画像をクリックするとAmazonに飛びます)

とても説明が丁寧でイラストも見やすいので、HTML/CSSがまだよく分かっていない方でもこの本を読むことで少しずつ理解を深めていくことができると思います。 だるまっちも最初この本で勉強しました!

次はこちらになります。

この本は少し実践的な内容になっていて、基本的なWebサイトのレイアウトを3パターンほど実際にコーディングしながら学ぶことができます。 こちらの本を読むことで、基本的なサイトを作るくらいのスキルが身につくと思います。

JavaScript

まずはこちらになります。JavaScript初心者の方におすすめです。

こちらの本では実際に手を動かしながらJavaScriptを学ぶことが出来ます。また説明も丁寧なため、初心者の方でもとっつきやすい内容になっています。

Amazonのレビューでも「わかりやすい!」と好評なので、JavaScript初心者の方にはぜひ読んでほしい一冊になります。

基礎から叩き込んでくれる良書。

このようなプログラミングの参考書でありがちなあえて難解な言葉を使ってきたり、解説してないことが急になんの解説もなしに出てきたりすることがあるが、この本は違かった。 しっかりと解説もしてくれてなるべく初心者に噛み砕いて説明をしてくれている。 個人的に本の中身のレイアウトでなんか分かりづらそうとか思っていたのだが、今まで読んだjs本の中ではダントツに分かりやすい。 この本を出発点にして、そこからjQueryだったりNodejsを学んでいけばエンジニアとして生きていけます。

続いてはこちらになります。だるまっちはこの本をレシピ本として手元においています。

JavaScriptでわからないことは、この本を見て解決策がないかなどを調べています。

タイトルにレシピ本と書いてあるくらいなので、暇なときに眺めるだけでもかなり勉強になりますよ^^

Ruby

プログラミング経験がほぼ無い方におすすめの本がこちらになります。

タイトルにもあるようにRubyをゼロから学ぶことができます。

プログラミング初心者の方が最初にぶつかる壁である環境構築も丁寧に説明されています。WindowsにもMacにも対応しているので人を選ばずにおすすめできる一冊になります。

次にRubyでおすすめの参考書はこちらになります。

伊藤 淳一さんというRuby界隈ではかなり有名な方が執筆していて、Rubyの基本を学ぶことが出来ます。少しだけ難しいところもありますが、悩んだときにこの本を開いてみると解決策が書いてあったり、より良いコードの書き方が見つかったりするのでおすすめの一冊となります。

Rails

Railsでおすすめの参考書はこちらになりますが、少しだけ難しいので、初心者の方はプロゲートのRailsコースで勉強することをおすすめします。

実はだるまっちはこの執筆者と少しだけ面識があるのですが、とてもRubyRailsに精通している方で直接説明を聞いてもかなりわかりやすかったです。 内容的には実践的な部分を想定して書かれているので少しだけ難しいのですが、こちらをやりきることができれば、実務でも安心して開発することができると思います。

DB編

DBでおすすめの参考書はこちらになります。

ミックさんはDB界隈でとても有名な方なのですが、説明がかなりわかりやすいです! だるまっちも一番最初にSQLの書き方などがわからずに困ったのですが、上記の本で一つずつ理解を深めることが出来ました!

またこちらのSQLドリルもかなり理解を深めるのに役立ちました。

この本ではドリル形式になっているので、実際に理解度を測りながら進めていくことができるので、どこまで自分が理解できているのかを把握することが出来ます。また、説明もとてもわかりやすかったです。

以上、だるまっちおすすめの参考書一覧でしたがいかがでしたでしょうか??
みなさんのお役に少しでも立てれば光栄です!

「はてぶ!」していただけるととても励みになります。
ここまで読んでくださってありがとうございました!

p.s. 最近Twitterをはじめました!もしよければフォローしてください!

twitter.com

独自ドメインを取得し、Route53 と ELB を使ってEC2上のWebアプリをHTTPS(SSL)通信に対応させてみる

こんにちは。今回は AWS の EC2 で構築しているアプリに HTTPS でアクセスできるようにしてみたいと思います。

前提

  • EC2 上でアプリが動作していること
  • nginx を使っていること

またすべて自己責任でお願いします。

全体像のイメージ

.

Domainを取得する

僕はこちらのサイトでドメインを取得しました。

https://my.freenom.com/

使用したいドメインを検索して、利用できるドメインを選択します。

Domainを検索

Domainを選択
僕は無料のモノにしました。

その後、チェックアウトします。チェックアウトが完了したら右上のServicesからMy Domainsを選択します。

ドメインを確認する .

自分が登録したドメインが表示されていればOKです!

Route53 にドメインを登録する

まずは Route53 に取得したドメインを設定していきます。 AWS のサービスから Route53 を開きます。

Route53の選択

左のメニューからホストゾーンを選択し、ホストゾーンの作成をクリック。

ホストゾーンの選択

取得しておいたドメインドメイン名に入力して、作成をクリックします。

ホストゾーンの作成

そうするとこんな感じでドメインが設定されていると思います。

ドメインの確認 .

タイプがNSになっている4つの値を先ほどドメインを取得したサイトであるfreenom上に設定してあげます。My Domains > Manage Domainをクリック。その後、上のタブバーからManagement Toolsをクリックし、Nameserversを選択する。Route53に表示されていた4つの値をこんな感じで設定してあげます。このときに末尾のピリオドは取り除いてください。

NSの設定

手元のPCのターミナル上から次のようなコマンドを入力して、次のような応答があればOKです。このときまで、IPアドレスは返ってきません。EC2上のアプリとドメインを関連づけていないので。

$ dig sample-domain.gq

; <<>> DiG 9.10.6 <<>> sample-domain.gq
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29220
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;sample-domain.gq.      IN  A

;; AUTHORITY SECTION:
sample-domain.gq.   900 IN  SOA ns-951.awsdns-54.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 213 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Sep 22 17:10:24 JST 2019
;; MSG SIZE  rcvd: 129

これでネームサーバーにドメインを設定することができました。 次にドメインとEC2上のアプリを関連づけていきます。 AWSのEC2のダッシュボードを開き、左側のElasticIPをクリックします。

ElasticIPの選択 .

左上の新しいアドレスの割り当てをクリックし、割り当てをクリックします。その後、一覧画面に新しく割り当てられたElasticIPが表示されるので、右上のアクションからアドレスの関連付けを選択して、Webアプリを構築しているインスタンスを選択します。 ElasticIPの値をメモしておきます。

次の手順でドメインを用いてアクセスすることができます。 再度Route53を開き、レコードセットの作成をクリック。 名前は空で、タイプはA-IPv4アドレスを選択しておきます。 そして値のところに先ほどメモしたElasticIPの値を貼り付けて作成をクリックします。

レコードセットの作成

これでブラウザにそのドメインを入力すると、アクセスすることができると思います。

SSL 証明書の取得

さあ、次にSSL 証明書を取得していきます。 AWS のサービスより Certificate Manager を検索します。

ACMの選択

証明書のリクエストをクリックして、パブリック証明書のリクエストを選択します。 次の画面でドメイン名のところにさきほど取得したドメイン名を入力します。

ドメイン名の追加

次はDNSの検証を選択して確認をクリックします。

DNSの検証を選択

次画面の確定とリクエストをクリックして、続行をクリックするとこんな感じで検証未完了の画面になると思います。

検証未完了

▶︎マークをクリックして、Route53でのレコードの作成をクリックします。 その後、Route53にドメインがCNAMEが追加されます。

これをALBを使ってHTTPS通信できるようにしていきます。 EC2のダッシュボードの左側のメニューからロードバランサーを選択し、ロードバランサーの作成をクリックします。 一番左側のApplication Load Balancerを作成します。 リスナーのところにHTTPとHTTPSを設定します。これによりクライアントからのHTTPSとHTTP通信を受け付けます。

リスナーの設定

アベイラビリティーゾーンのところはすべてチェックします。僕は最初2つしかチェックせずに、このあと作成するターゲットと位置するアベイラビリティーゾーンが事なってしまったため、503エラーに悩まされましたので。。。ターゲットのアベイラビリティーゾーンとロードバランサーアベイラビリティーゾーンを合わせれば2つでも問題ないかと思います。

証明書の選択

証明書の選択のところで先ほど準備した証明書を選択して次へ進みます。 セキュリティグループは新しいセキュリティグループを作成するを選択して次のように設定します。

セキュリティグループの作成

ターゲットグループは名前のところだけ、適当に入力して次に進みます。 ターゲットグループの設定

次の画面では下の一覧表に表示されているインスタンスからWebアプリを構築しているインスタンスを選択して、登録済みに追加し、次に進みます。確認画面で問題がなければ作成をクリックします。 ロードバランサーの画面で状態がactiveになっていればOKです! またターゲットグループ画面のしたのターゲットタブをクリックし、登録済みターゲットのステータスがhealthyになっていることも確認しておきましょう。僕はここがunsetになっていて、503エラーで半日悩んだので。。

ターゲットのステータスの確認

インスタンスのセキュリティグループに先ほど作成したロードバランサーのセキュリティグループを追加していきます。 インスタンス一覧から該当のインスタンスを選択して、右スクロールしていくと、セキュリティグループという項目があると思うので、クリックします。下のインバウンドタブを選択して、編集画面をクリックします。

ターゲットのステータスの確認

さていよいよ最後です。Route53で取得したドメインにきたリクエストをこのロードバランサーに振り分けてあげるように設定していきます。 Route53の先ほど作成したホストゾーンのページから最初に作成したタイプAのレコードを選択し、 エイリアスをオンにして、ターゲット名の入力のところから、ELB Application Load Balancerのところにある先ほど設定したロードバランサーを選択して、作成をクリックします。

Route53とALBの関連付け

これで

https://www.ドメイン

でアクセスしてあげれば表示されるかと思います。

ちなみにhttpでアクセスがきた場合httpsにリダイレクトするにはnginxを次のように設定して上げる必要があります。

/etc/nginx/nginx.conf

    if ($http_x_forwarded_proto = 'http'){
    return 301 https://$host$request_uri;
    }

https通信に対応するために1日以上かかってしまいましたがなんとかできるようになってよかったです。

参考サイト

AWSでWebサイトをHTTPS化 その1:ELB(+ACM発行証明書)→EC2編」
https://recipe.kc-cloud.jp/archives/11084

「EC2とELBでかんたんhttps環境構築メモ」
http://developers.goalist.co.jp/entry/2018/09/26/170000

AWS独自ドメインを無料で簡単にSSL化!」
https://daichan.club/aws/78593

AWSドメインSSL証明書の取得、設定 AWS EC2」
https://qiita.com/masch/items/a5ef84998fb7784f9115

「ALBのヘルスチェックの豆知識」
http://blog.serverworks.co.jp/tech/2017/02/08/alb-tagert-health-status/

ブログ始めます

はじめまして!

とある地方の大学4年生です。
大学ではプログラミングを専攻しています。
RubyPHPJavaScriptを日々勉強しています。

日々学習したことや思ったことをブログに残していこうと思います。

書こうと思っている内容は下記の内容です。

  • 技術的なこと
  • キャリアについて
  • 企業の戦略や業績、世界の経済について思ったこと
  • 今欲しい商品、サービス

他にも色々と書いていこうと思っています。

よろしくお願いします。