Java初心者がJavaのプロになるためのおすすめ本

概要~Java初心者が現場使えるJavaプログラムを理解するまでのおすすめ参考書ロードマップ~

仕事を始めてJavaに取り組むようになった方は多いのではないでしょうか。
私も実は仕事を始めて初めてJavaを知った/勉強したのですが、最初色んな言葉が出てきて大混乱。勉強が結構大変だったことを覚えています。

そんな経験があったため、最近入ってくる新人さん向けに私が10年働く間にJava初心者に何を学んでもらえばいいか考え、行き着いた結果の良質と考えている参考書10選を今回紹介します。

つまり、個人的Java初心者が現場使えるJavaプログラムを理解するまでの参考書ロードマップの紹介です。

想定読者

  • 仕事を始めてJavaプログラムが必要になった人
  • Javaの勉強を始めて専門用語が多過ぎて勉強に挫折しそうな人

結果

忙しい人はとりあえず結果だけご覧ください。

Java良書10選

  1. やさしいJava
  2. スッキリわかるJava入門
  3. スッキリわかるJava入門 実践編
  4. リーダブルコード
  5. オブジェクト指向でなぜつくるのか
  6. Webを支える技術 ―― HTTP,URI,HTML,そしてREST
  7. 独習Java
  8. プロになるJava
  9. Java言語で学ぶデザインパターン入門
  10. Effective Java

やさしいJava

それでは紹介です。最初はやさしいJavaです。

やさしいJava

まず最初の一冊はわかりやすさを重要視して選んでいます。なぜならJavaの特徴として、他の言語に比べわかりにくい専門用語多く、初心者にはプログラムの理解より言葉の理解最初のハードルがまず高い事が挙げられるからです。

そのため、Javaの入門書は今となってはたくさんありますが、まずは入門書としてタイトルの通り非常にわかりやすいこの本から入るのがいいかなと思っています

スッキリわかるJava入門

次はスッキリわかるJava入門です。

スッキリわかるJava入門

Javaの入門書は1冊ではちょっと物足りないため、もう一冊入門書的な位置づけの本を入れています。
2冊を読み比べて重要なところ、1冊では理解できなったところをもう1冊で補完して、自分の理解力を高めることが重要と考えています。
Javaは1冊だけでは書ききれない重要な概念が多いため、出来れば2冊入門書を読みましょう。

スッキリわかるJava入門 実践編

次はスッキリわかるJava入門の続編、スッキリわかるJava入門 実践編です。

スッキリわかるJava入門 実践編

1歩進めて実践編が本書になります。実際に現場で使える内容となっているので、基礎を理解した上で、読み進めるといいかなと思います。

リーダブルコード

次はリーダブルコードです。
ちょっと箸休めです。

リーダブルコード

内容を知っている人は、なぜここでリーダブルコード?と思う人もいると思うのですが、私はこのタイミングがベストと思います。
プログラム初心者が読む本として位置付けされることもあると思いますが、私はJavaが分かってから読むべき(一度読んでいても再読すべき)と考えています。
自身でJavaコードをある程度書けるようになってからこの本を読むとよりリアルな気づきがあると思います。そう言えばあの時書いたあのコード、リーダブルではなかったな。など。

オブジェクト指向でなぜつくるのか

次はオブジェクト指向でなぜつくるのかです。
こちらもJavaに特化した内容ではないため箸休め第2弾です。

オブジェクト指向でなぜつくるのか

そもそもなぜJavaがここまで流行ったのか、オブジェクト指向はどんなに便利なのか、Javaでオブジェクト指向で作るというのはどういうことなのか理解するのに良い本と考えています。

Webを支える技術 ―― HTTP,URI,HTML,そしてREST

次はWebを支える技術 ―― HTTP,URI,HTML,そしてRESTです。
箸休め第3弾(最後の箸休め)です。そろそろプログラムを見ることに疲れた人向けです(^^;)

Webを支える技術 ―― HTTP,URI,HTML,そしてREST

皆さんがJavaを勉強する理由は様々だと思いますが、最近はWebシステムを作るケースが多いのではないでしょうか。
そんな人向けの本になっているので、私はWeb関係ないという人は飛ばしてもらっていいのですが、Javaで「HTTP,URI,HTML,そしてREST」をプログラミングするという人はぜひ読んでおいてください。
コードが書けるだけではWebシステムは完成しません。なぜそのようなコードが必要かを理解できるようになると思います。

独習Java

箸休めが終わりまとめ編になります。
まとめ関連のおすすめは独習Java です。この本を読んで基礎の振り返りをしっかりする、自信の技術力として定着化するイメージで選んでいます。

独習Java

この本は昔からある良書の扱いになるので教科書的な本になります。そのため丁寧なのですが、最初の1冊としては他の本に読み易さという点で譲りましたが、重要なポイントの抑え方、記載テーマ、サンプルコードなどがやはり入門本からは1つレベルアップしたような教科書的な良書 になっています。いつでも振り返れるよう手元に置いておきたい内容になっています。

プロになるJava

次はプロになるJavaです。
タイトルの通りですが、ここからプロになりましょう(^^)

プロになるJava

ここまでで基礎を固める -> 実践を学ぶ -> プロになる というレベルアップを想定しています。
印象としては、実践を学ぶ -> プロになる 部分はちょっと飛躍的レベルアップなのですが、その部分は実際に自分の手を動かしてプログラミングした結果や実際やったこと読んだことをGoogle検索等で補完しながらレベルアップすることを想定しています。(ここまで読んだ読者ならそれが出来るだけのレベルアップがされていると考えています)

Java言語で学ぶデザインパターン入門

プロになったら次はデザインパターンを学びましょう。

Java言語で学ぶデザインパターン入門

正直プロなったところがJavaで給料をもらえるというスタートラインと思います。
つまり、ここまでのJavaプログラマーでは現場で技術力の差別化が出来ません。
そこで、オッこの人はJavaがかなり出来るなと思ってもらえるようにデザインパターンを学びましょう。
現場でこれはファクトリーデザインパターンですね。なんて、会話が出来るとJavaで自信をもって仕事をしているなと言えると思います。

Effective Java

ついに最後の1冊、10冊目です。
Effective Java です。

Effective Java

もはや説明はいらないくらいJavaをしっかり勉強したことがある人なら誰でも知っている名書と思います。
ただ、いきなりこの本を読んで理解できる人は少ないと思うので今回の最後の1冊として紹介する形で記載しました。
皆さんもぜひここまで読み進めてみてJavaの理解を深めてください!

まとめ

今回は、Java初心者が現場使えるJavaプログラムをプロとして理解するまでのおすすめの参考書10冊を紹介しました。
これらを理解すれば間違なく私はJavaのプロフェッショナルです。と、自信をもって仕事ができる人材になれるかなと思って選抜しているので、これからJavaを頑張ろうと思っている人がいたらぜひ参考に1冊でも読んでみてください。

本投稿が少しでも皆さんの良いJavaライフの助けになればと思います(_ _)

AWS Amazon Lightsailなら固定IPも無料!Lightsailを使って運用料金最安値?でWordPress(ブログ)を運用する

概要~LightsailでWordPress構築・固定IPアドレス設定~

いろいろ調べたところWordPressを使ったブログ運用にはAWSのAmazon Lightsailを利用するのが最安値で最も簡単なのではないか?という結論に達したためAmazon LightsailでWordPressを構築する手順を投稿します。

運用料金

月額 $3.5 安い!
しかも今なら最初の3か月間は無料!

構築時間

15分

できるようになること

  • WordPressにログインできる
  • ブログが公開できる

作業手順

  1. インスタンス作成
  2. WordPressログインパスワードの確認
  3. 静的IPの設定
  4. WordPressログイン確認

たったの4手順作業時間15分でWordPressが構築できブログが公開できます!
それでは詳細手順を見ていきましょう。

1.インスタンス作成

まずはWordPressを構築するインスタンスを作成します。
AWSコンソールでAmazon Lightsailのサービスメニューを開き、インスタンスの作成をクリックします。

作成するインスタンスの種類を選択する画面に遷移します。
特にこだわりがなければすべてデフォルトの設定のままで良いと思います。
今回はWordPressの構築なので設計図の選択でWordPressが選択されていることを確認しましょう。

インスタンスプランの選択で月額料金が決定します。
人気ブログになったら変更しないといけないかもしれませんが、初期構築は最小で十分だと思うので、月額$3.5を選択します。
以上で設定は完了のため最後にインスタンスの作成をクリックします。簡単ですね。

無事に作成されると以下のように作成されたインスタンスが確認できる画面になります。

2.WordPressログインパスワードの確認

それでは次の手順に移ります。
次は作成されたインスタンスのWordPressにログインするためのパスワードを確認します。
パスワード確認にはインスタンスにsshでログインする必要がありますが、Amazon Lightsailの場合、ブラウザから簡単にログインできます。
具体的には以下の接続用ボタンを押します。(ちょっとわかりにくいですが、赤枠で囲んでいるオレンジの■部分です)

自動的にログインされ、以下のターミナルがブラウザで表示されます。

パスワードはファイルに記載されているため以下のコマンドを実行します。

cat $HOME/bitnami_application_password

ここではpasswordと表示されたとして手順を進めます。

3.静的IPの設定

設定としては最後の手順になります。
今のままでもWordPressにアクセスでき、ブログ公開もできるのですが、IPアドレスが変わってしまう可能性があり、不便なので固定の静的IPを設定します。
この静的IPアドレスは追加料金無し無料で設定できます。

それでは設定していきます。
まずはAmazon Lightsailのホーム画面に戻りネットワーキングをクリックします。

ネットワーキングのサービスメニューから静的IPの作成をクリックします。

インスタンスへのアタッチで作成したインスタンスを選択し、

作成ボタンで完了です。

完了画面に静的IP(18.XXX.XXX.XXX部)が表示されます。(画像はマスクしています)

4.WordPressログイン確認

準備は全て整いました!
後はログインするだけです。
ログイン用アクセスURLは以下になります。

http://{18.XXX.XXX.XXX(静的IP)}/wp-login.php

WordPressのログイン画面が表示されるので、WordPressの初期ユーザ(user)と、前の手順で確認したパスワードを入力してログインします。

無事にダッシュボードが表示されれば作業完了です。
お疲れ様でした!
後はWordPressを使ってサクッとブログを公開してしまいましょう。

まとめ

作業手順は4手順で作業完了です。
具体的な手順としてもコマンド1つだけであとは画面操作だけなので非常に簡単だったのではないでしょうか。
しかも月額$3.5です。Amazonさん凄いです。
しばらくこれで運用して様子を見ようと思います。(このブログもAmazon Lightsailで運用しています)

補足

最後補足としてAmazon Lightsailのさらに便利なところを紹介していきます。
それは管理画面からいろいろ確認できるところです。
管理画面は以下からアクセスします。

管理画面にアクセスすると以下のサービスメニューが表示されます。
ここでは、便利そうなものをいくつか紹介します。

まずはメトリクス。いろいろ見れるようです。

CPUの概要はこんなグラフです。

送信ネットワークトラフィックだとこんな感じ。

ネットワーキングでファイアフォール設定も確認できました。

履歴でインスタンスの変更履歴が確認できるようです。

削除も簡単にできそうです。

以上!Amazon Lightsailかなり簡単!便利!!安い!!!のではないでしょうか。

SE/システムエンジニアとして大切な10のこととは?

概要

気がつくとSEとして10年を超える会社員人生を過ごしていたので、
そんな10年を振り返って仕事を進める上で大切と思える10のことをまとめてみた。
具体的な知識/技術ではなく敢えてSE/システムエンジニアとしての行動というより普遍的な内容に絞って記載。
忙しさで忘れないための備忘録と定期的に思い出し/更新して自分への戒めとするための記事にしたい。
行動することの重要性を忘れないよう、いつでも行動に移すための具体的な行動も記載。

10年という経験を通したノウハウとして書いているので書籍とは違った生の声として誰かの役に立てばと思う。

SEとして大切な10のこと

  • 仕事は人との関わりであることを知る
  • 人との調整ごとは早めに行動する
  • プログラムを学ぶ
  • いつも目的意識を持つ
  • チーム全体としての生産性を考える
  • 今やるべきことは未来からの逆算で決める
  • 勉強する習慣を身につける
  • 時間の重要性を意識する
  • できるだけ経験し失敗する
  • 変化は当たり前と考える

仕事は人との関わりであることを知る

仕事である以上、1人で完結することはあり得ない。少なくとも仕事に対する対価をもらうお客さんはいるはずで、お客さん以外にもお客さんのお客さん(いわゆるエンドユーザー)や上司/チームメンバや他社のメンバなど様々な人との関わり合いで成り立っていることを認識する。つまり、技術力/論理的思考といった技術面のスキルだけではなく、相手の立場に立ち感情/共感といった心の部分にも働きかけることができるスキルも大切になる。それらはコミュニケーション力や人間力を磨くことによって培われる。
アウトプット(成果)の観点から見ると、世界一/日本一というトップクラスの技術力を持つ一部のスペシャリストを除くと、技術面の個人的スキルでの成果には限界があり、他者と協力して出した成果の方が大きくなることが多い。私も含め大多数の人はスペシャリストなるには非常にハードルが高く、すると自然と他者との協力による成果で仕事をすることになる。(ただし、他者の協力を得るためにはある程度個人の技術スキルに基づた信頼関係が必要)

〇明日からできる具体的な行動

  • 身だしなみに気を付ける/元気に挨拶をする
  • 1日1回雑談をする
  • たくさんの人に話をして普段から仕事に巻き込んでおく
  • つまらない雑用こそ大切に。小さな実績/小さな信頼を積み重ねる

人との調整ごとは早めに行動する

仕事は人との関わりである以上、必ず人の仕事を手伝う/または人に仕事を依頼する場面がある。10年仕事をしていると自分でできる仕事は大抵自分さえ頑張ればなんとかなる。問題になるのは、仕事をお願いしていた人が思った通りに動いてくれない時。そのため、人に仕事を依頼する上で大切なのは借りは作らずできるだけたくさんの貸しを作っておくこと、また出来る限り早く依頼することが重要。
こういった調整ごとは先手先手で対処すれば、本来それほど難しい問題とならないことがほとんどで、依頼が遅れて後手になるほど条件が厳しくなる。

〇明日からできる具体的な行動

  • 普段からたくさんの貸しを作れるよう誰かのために行動する
  • 遅くても2週間後の見据えた計画を立てる
  • 普段から良好な関係が築けるようコミュニケーションを大切にする

プログラムを学ぶ

どんなに大きなシステムになっても行き着く先はプログラム。例え、ノーコードやパッケージソフトであっても、プログラム工程を外注先に丸投げしていても、どのようにプログラムされているかを理解することは重要。特に大規模になればなるほど性能部分や他システムとの連携部など、コアになる部分で問題が発生することがあり、その部分の解決にはプログラムはなぜ動くのかという根本的な理解が必要。
プログラムを知ることで技術者としての誇り/自信を持つことができる。

〇明日からできる具体的な行動

  • 自分の手を動かしてプログラムを書いてみる
  • 常に自分だったらどうプログラムするかをイメージする
  • 流行りの本もいいが昔からあるいわゆる名書を読む

いつも目的意識を持つ

10年間仕事していても華やか瞬間は一瞬。思い返しても数回程度。過ごしてきた時間の大部分は単調な作業、繰り返し作業となる。それらを意識した上で、この作業は最終的にどんな目的達成のために行っているかを理解することで、単調な作業でも作業効率や細部の作業品質が変わってくる。
つまらない仕事と愚痴る前に、目の前の仕事がどういうもので、何を目指し、今どういう状況であるかということを見極めて、自分自身で考え、必要であれば変えていくという意識が大切。
いわゆる「3人のレンガ職人」。レンガを積む仕事は、ただ積んでいるだけなのか?それとも大聖堂の一部を作っているのか?を意識するのとしないのでは積み上げたレンガに大きな品質の違いが出ることがある。
目の前のプログラムはただ文字を解析するだけなのか、実は世界を支える重要なシステムの一部なのかを意識するのは非常に重要。
人間は、自然と不要なものは意識しない脳になっているため、目的を理解して初めて意識できることが多い。

〇明日からできる具体的な行動

  • 作業を始める前に本来の目的を把握する
  • 仕事の全体を俯瞰して理解する
  • 全体を理解した上で自分の作業がどのような影響を与えるか考える

チーム全体としての生産性を考える

自分がたとえどんなに仕事の天才だとしてもできる作業は1人分(多くて1.5人分とか)。それ以上の成果を出すには自分で極端に無理をするかメンバにお願いする必要がある。メンバにお願いする時、メンバに対し威圧的な態度や仕事の責任として作業を押し付けて無理やりやらせることをしない。メンバの生産性を最大限に引き出すためは、同じ目標に向かってメンバ自ら行動してもらう事が重要になる。

〇明日からできる具体的な行動

  • メンバのモチベーションを考えて行動する
  • メンバと目的を共有する場を繰り返し作る
  • 作業をお願いするときは意志決定の過程を含め話しをする

今やるべきことは未来からの逆算で決める

目的意識のところでも書いたように、人間の脳は不要なものは無視するように出来ている。今の仕事を今後の自分にどれだけ活かせるかは、自分が将来どこに向かっているかを意識することが重要。そのために自分の軸/仕事に対する価値観を早めに認識し、その未来に向かって今の自分が何をすべきかを考え行動する。

〇明日からできる具体的な行動

  • 自分の3年後をイメージする
  • 3年後に向かって1年間の目標を立てる
  • 1年間の目標から今日からできる具体的な行動を書きだし行動する

勉強する習慣を身につける

SEという仕事は、技術の進歩が速いと言われる業界、また時代の流行りもあり生涯1つの専門性、1つの業務知識だけでやり遂げられることは不可能と思える。結局、その時その時にあった技術/業務を学べるよう勉強する習慣をつけておく必要がある。

〇明日からできる具体的な行動

  • 1日または1週間に〇時間と決めて勉強する時間を習慣化する
  • 自分の興味の延長で勉強することが一番習慣化しやすいため興味のある分野を見つける
  • 定期的に本屋に通うなど新しい技術に触れる機会を増やす

時間の重要性を意識する

10年は長いようであっという間。10年間の時間の使い方で今後10年分の給料は稼げる可能性はあるが、時間は絶対に戻せない。
お金のために時間を使うのでなく、時間のためにお金を使う価値観にシフトする
人生には必ず終わりがありそれまでの日数と1日24時間しかないことは決まっている。時間を何に投資するかを考え行動する。

〇明日からできる具体的な行動

  • 自分自身にアポを取り自己成長など有効に使う時間を意識的に確保する
  • 言われた作業を単調にこなすだけのために時間を使わない
  • やらないという選択肢も視野に入れる

できるだけ経験し失敗する

勉強は大切だが10勉強するより1回経験する方が圧倒的に身に付くことが多い。
何事も経験するチャンスがあればチャレンジする。特に若いうちは。
10年後にやっておいてよかったと思い返すことは大成功した経験より失敗した経験の方が多い。チームでの仕事は後から思い返しすと失敗した経験が楽しい思い出になることが多い。逆にチャレンジせずにうまくこなしていた日々を思い出すことはない。
これは山登りに似ている。平坦な道を歩いても心が晴れ渡るような景色は見られない。つらい想いをして登った山の方が素晴らしい景色が見える。
失敗とはうまくいかなかった時点であきらめること、またはチャレンジしないこと。あきらめずに次の行動を決めて、決めたことを本気で実行し続けることが大事。それが将来大きく成功するための唯一の方法。

〇明日からできる具体的な行動

  • チャンスがあればまずチャレンジする
  • チャンスにむけて事前に準備(人との関係作り、勉強等)する
  • 失敗しても失敗はいつか終わることを知る

変化は当たり前と考える

すべては作られた時から陳腐化が始まる。この記事も仕事のやり方も。
他人は変えられないが、自分は意志さえあればいつでも変えられる。
変化に合わせて常に自分の方向性の方を修正する

〇明日からできる具体的な行動

  • 自分を振り返る時間を作る
  • 自分を疑う時間を作る
  • いつでも挑戦者である気持ちで臨む

まとめ

10年を振り返っていろんな経験/書籍から得たことをまとめてみた。
いずれも個人的な経験をもとにしているため万人に通じるものではないが誰かの役に立てばと思う。

最後に書いたように、変化は当たり前。これからも記事のアップデート、自分の行動のアップデートを忘れずにいたい。

いくつか書籍の文章をそのまま載せているところもあるため、参考文献を以下に記載。

参考書籍


SEの基本 この1冊ですべてわかる
【Kindle版】SEの基本 この1冊ですべてわかる


ドラッカーさんに教わったIT技術者が変わる50の習慣
【Kindle版】ドラッカーさんに教わったIT技術者が変わる50の習慣


大富豪からの手紙
【Kindle版】大富豪からの手紙

AWS ECSでDocker環境を試してみる

概要

AWS資格取得に向けて利用してみたAWSサービスの具体的な利用方法についての投稿です。
今回はAWS上でのDocker利用、 Amazon ECS(Amazon Elastic Container Service)を利用してみる編です。15分程度でDockerを利用したWebアプリケーションが公開できます。
勉強していてコンテナ、タスク、サービス、クラスターと言った用語に混乱してきたので実際にやってみました^^;

資格試験の勉強法は記事は以下を参照。

AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法
AWS初心者がAWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法

想定読者

  • AWSでコンテナと言えばECSって気がするけど実際どうやってECS上でコンテナを動かすか知りたい人
  • ECSのコンテナ、タスク、サービス、クラスターをAWSコンソールで確認して理解を深めたい人

できるようになること

  • Amazon ECSでのWebアプリケーションの公開

およその作業時間

  • 15分
  • ECSの「今すぐ始める」メニューをやってみます
  • すべてデフォルト値でも構築できその場合、5クリック5分で完了します^^;

必要な知識

  • Docker
  • Amazon ECS

予想料金

残念ながら無料ではありません。今回利用するのはAmazon ECSのFargate起動タイプになるので以下の料金がかかります。

image.png
参照元:https://aws.amazon.com/jp/fargate/pricing/

CPUのvCPU単位とメモリのGB単位で料金がかかります。あと、ポイントなのはコンテナイメージのダウンロードを開始した時点からということですね。コンテナの起動有無に関わらず作成したら途中でコンテナ停止しても料金がかかっていることになります。(と言っても後述の必要なタスクの数で定義したコンテナが常時起動するので停止はあまり意味がないようです^^;)

今回の作成サンプルでざっくり計算するとCPU:0.25 vCPU(256)、メモリ:0.5GB(512)を利用するので、仮に一週間起動し続けたとすると

  • CPU:0.05056USD x 0.25vCPU x 24時間 x 7日 = 約2.12USD
  • メモリ:0.00553USD x 0.5GB x 24時間 x 7日 = 約0.46USD

合計 約2.58USD となります。
お試しであれば1日24時間も起動することはないと思うので安い!のではないでしょうか。
(もちろん他のサービス同様、使用用途によってはデータ転送量やCloudWatch利用料とかが追加されることはあるのでご注意ください)

手順の概要

ではやってみましょう。
とは言うものの、ECSの「今すぐ始める」メニューのウィザードに従って入力するだけです。
最初に全体像だけ説明すると、ECSの概念としては、

image.png

図のように、Container definitionTask definitionServiceClusterの4つがあり、こらをウィザードに従って3画面で設定してきます。

これがAmazon ECS理解の最初のハードルと思ったコンテナ、タスク、サービス、クラスターといった用語による混乱です。
それぞれの説明は以下のブラックベルト資料が分かりやすいと思いますが、なんとなく画面を進めながら設定値を眺めながらやっていくと理解できるようになると思います。

image.png
参照元:https://www.slideshare.net/AmazonWebServicesJapan/20200422-aws-black-belt-online-seminar-amazon-elastic-container-service-amazon-ecs

では、始めます。
ECSの初期画面、またはクラスターの今すぐ始めるをクリックして開始します。

image.png
または
image.png
今すぐ始めるをクリックして開始します。(クリック1回目)

Container definition/Task definition設定

最初の画面でContainer definitionとTask definition設定を行います。
コンテナ定義では、デフォルトでhttpd、nginx、tomcatが用意されています。(今回はhttpdを選択)
コンテナ定義、タスク定義いずれも右上に編集ボタンが用意されており、一部パラメータのカスタマイズは可能です。
料金の所で書いたようにCPUとメモリは料金に関係してくれるの編集でカスタマイズしても良いと思います。
とりあえず今回はデフォルトのままをクリック。(クリック2回目)

image.png

Service設定

次はサービス設定です。ロードバランサーとしてALBを組み込めるようですが、とりあえずなしを選択。
この画面も編集ボタンで料金に関係する必要なタスクの数をカスタマイズできます。ただデフォルト値の1から減らすことはできないので、最小限という意味ではこのままをクリック。(クリック3回目)

image.png

Cluster設定

最後にクラスター設定です。と言ってもクラスター名だけなのでデフォルトのままをクリック。(クリック4回目)

image.png

確認画面

確認画面が表示されるので、確認して作成をクリック。
以上!クリック5回で作成完了です!!

image.png

作成画面

内部的にはCloudFormationを使っているようなので、頑張ってVPCから作ってくれていて問題がなければ2,3分後に作成されます。

image.png
2,3分後、、、
image.png

サービスの表示をクリックしてみましょう。
作成されたVPCやサブネット、セキュリティグループの情報が確認できす。

image.png

タスクタブから作成されたタスクをクリックすると

image.png

パブリックIPが割り当てられているので、
http://{割り当てられていたパブリックIP}/
でアクセスしてみます。

image.png

↓が表示されていれば問題なく作成できています。
AWS ECSでのWebアプリケーションの公開完了です!

image.png

実体としては、コンテナ定義の中に定義されている以下のようです。

image.png

はい、クリック5回完了です。
あとはコンテナ定義などいじくり倒しましょう^^

コンテナ確認

ここからは作成されたものを1つ1つ見てみます。まずはコンテナから。
タスク定義のなかにコンテナ定義があります。

image.png

ポートマッピングやマウントポイントなど、コンテナ定義の名前そのままと言ってしまえばそれまでですが、Dockerfileの内容に関連する定義があることがわかります。

タスク確認

次はタスク定義です。

image.png

まず、タスク定義の中にコンテナ定義が含まれています。それに加えて、ネットワークモード、ロールやタスクサイズ(メモリやCPU)がタスク定義として役割のようです。(ブラックベルト資料の具体的定義がこの画面で確認できます)

サービス確認

次はサービスです。クラスターメニューから具体的なサービス名をクリックして確認します。

image.png

まずは必要数(必要なタスクの数)があって、加えてロードバランシング設定、VPCやサブネットといったネットワークアクセス設定があります。

image.png

タスクタブに移動するとタスク定義があり、この画面から複数タスク定義設定が可能なことがわかります。

クラスター確認

最後はクラスターです。

image.png

複数サービスを定義できる画面構成です。
ブラックベルト資料では、実行環境、IAM権限の境界と表現されています。
サービス定義、タスク定義でどのコンテナ定義をまとめるかにも依存すると思いますが、ロードバランシングがサービス定義にあることから、Webサーバ群のサービスとAPサーバ群のサービスの2つのサービスを1つのクラスター配下に定義する。といった使い方がイメージしやすいかなと思います。

補足1:自作Webアプリケーションのコンテナイメージの設定

Container definitionのcustom設定ボタンで自分で作成した今回のようなhttp(80ポート)のWebアプリケーションのコンテナイメージを指定するだけで簡単にWebアプリケーションの公開ができそうですね。

image.png
開いた画面でコンテナのイメージを設定
image.png

コンテナイメージの作成には以下の記事も投稿しているので参考までに。

Windowsで構成情報をDockerfileに定義してイメージを作成してみる

補足2:作成したタスクの停止

試しにタスクタブから停止してみても、、、

image.png

1,2分で再PROVISIONINGされ

image.png

すぐにRUNNING状態になります。

image.png

補足3:作成したWebアプリケーションの削除

クラスターメニューのクラスターの削除から簡単にできます。
CloudFormationを使っているのでVPCからコンテナのタスク定義までまるっと削除されます。
残しておくと料金がかかり続けるので不要になったら必ず削除しましょう。

image.png

まとめ

想像したよりずっと簡単に作成できました。
誰かのコンテナ、タスク、サービス、クラスター理解に役立てればと思います。
今のままだとデフォルト設定のままなので今後は設定内容等、もう少し詳しくみてみる。。。かもしれません(^^;)

AWS EC2 でDocker環境を無料で試してみる

概要

少し前にWindowsにDockerをインストールしていろいろ試してみてたけど
そもそもAWS EC2の方が気楽にいろいろ試せるのでは?と思ってやってみた
思った以上に簡単にできたのでそのやり方を記載

windows版は以下を参照

 WindowsでDocker環境を試してみる

AWS ECS版は以下を参照

 AWS ECSでDocker環境を試してみる

Docker本は以下が詳しくわかりやすいオススメ本です

プログラマのためのDocker教科書

【Kindle版】プログラマのためのDocker教科書


できるようになること

  • AWS EC2でのDocker環境の構築

およその作業時間

  • 10分
  • 5コマンドで完了

必要な知識

  • AWS EC2
  • SSH
  • Docker知識^^;

手順の概要

1.EC2インスタンス作成
2.AMI選択
3.インスタンスタイプ選択
4.インスタンス確認
5.接続用キーペア設定
6.EC2にDockerインストール

参考:公式 Amazon Linux2 に Docker をインストールする

1.EC2インスタンス作成

とりあえずEC2インスタンスを作成するためAWSコンソールからEC2からインスタンス起動を選択

image.png

2.AMI選択

無料枠のAmazon Linux 2を選択

image.png

3.インスタンスタイプ選択

こちらも無料枠を選択し、あとはデフォルトのまま「確認と作成」をクリック

image.png

4.インスタンス確認

作成されるインスタンスをふんふんと確認し、「起動」ボタンをクリック

image.png

5.接続用キーペア設定

SSH接続のために新しいキーペアか既存のキーペアをからキーペアを設定
(画面は既存のキーペアを設定)
最後に「インスタンスの作成」をクリック

image.png

EC2が作成されるまで2,3分待ちましょう。。。

6.EC2にDockerインストール

EC2が作成されたらSSHで接続します
SSH接続の説明は割愛
↓あたりを参考

https://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/
image.png

SSH接続後、いよいよDockerインストールのコマンドを実行していきます
とりあえずインストールされているパッケージ更新

sudo yum update -y
image.png

完了するとこんな感じ

image.png

いよいよDockerインストール

sudo amazon-linux-extras install docker
image.png

途中確認が表示されたら「y」とか入力

image.png

あっという間にインストールが完了
するとこんな感じ

image.png

インストールできたのでサービス起動

sudo service docker start
image.png

sudo を使用せずに Docker コマンドを実行できるように、ec2-user を docker グループに追加

sudo usermod -a -G docker ec2-user
image.png

一度EC2からログアウト、再度SSH接続する
すると、、、dockerコマンドが普通に使えるように

docker info
image.png

はい、簡単5コマンドでDockerインストール完了です
あとはDockerをいじくり倒しましょう^^

まとめ

想像するよりずっと簡単に環境構築できました
AWSなのでここでいろいろDocker試してみて使い終わったら消してしまえば無料です
消すときはAWSコンソールで↓で完了
EBSとか残ってると微量請求がきてしまうのでまとめて消しておきましょう^^;
時々やってしまうAWSから突然微量請求きてしまうあるあるかと

image.png

EBSの料金について以下に参考記事を書きました。良かったらこちらも^^

 AWS初心者がEC2を最低限の利用料金で利用する