Load to Professional...

AWSエンジニアの日常。地に足をつける。

2021年1月〜4月の振り返りと5月の目標設定

はじめに

日常の頑張りを棚卸しするために、月ごとに目標を立て、定期的に振り返っていこうと思います。

振り返り

1月

  • 12/27にAWS SAAに合格した
    • ほぼ1月なので入れちゃいました

2月

  • LPIC101に合格した

3月

  • LPIC102に合格した

4月

  • 転職活動で第1志望の会社に内定
  • Zennの記事を3本書いた
    • 2本は諸事情により非公開に、、、

5月の目標

  • AWS SysOpsに合格する
    • 5/5に試験予約した
  • Zennの記事を2本書く
    • AWSの記事を書くぞ
  • 本を1冊読む

さいごに

ひとまず2ヶ月! 続けられるようにがんばってみます。

2021年1月〜4月の振り返りと5月の目標設定

はじめに

日常の頑張りを棚卸しするために、月ごとに目標を立て、定期的に振り返っていこうと思います。

振り返り

1月

  • 12/27にAWS SAAに合格した
    • ほぼ1月なので入れちゃいました

2月

  • LPIC101に合格した

3月

  • LPIC102に合格した

4月

  • 転職活動で第1志望の会社に内定
  • Zennの記事を3本書いた
    • 2本は諸事情により非公開に、、、

5月の目標

  • AWS SysOpsに合格する
    • 5/5に試験予約した
  • Zennの記事を2本書く
    • AWSの記事を書くぞ
  • 本を1冊読む

さいごに

ひとまず2ヶ月! 続けられるようにがんばってみます。

【ポエム】転職にあたっての振り返り(SES→AWSエンジニア)

Twitter眺めていたら良いお題があったので、久しぶりに文章を書いた。

リプしようとしてたら元ツイ消えちゃってたからなんかブログにポエムとしてまとめてみる。

自己紹介

  • 現職は独立系SIerのインフラエンジニア(SESのオンプレor仮想基盤)な私。
  • 今後のキャリアを考えパブリッククラウドに慣れ親しむエンジニアになりたいと思って転職活動を始め、ご縁がありAWSに特化した企業のオファーをいただけた。

はじめに

キャリアチェンジに際して、下記3点を入社前に今一度振り返ってみようと思う。

  • 現職のSESのインフラエンジニアとの比較
  • なぜクラウドエンジニアとしてのキャリアを選ぶのか?
  • このキャリアに懸念はないのか?

SESインフラエンジニア vs AWSエンジニア

以下、SI、AWSと略してく。

1. 経験フェーズ

  • SI:下記のような幅広いフェーズを経験できる。
    • 基本設計〜詳細設計〜構築/移行〜運用/保守
  • AWS:フェーズは上流に特化。
    • 基本設計〜詳細設計〜構築まで

2. 各技術の経験値

  • SI:とにかく幅広く、浅く。
    • 製品/OSS、OS/ネットワーク、構築/運用、サポートなど多岐にわたる。
  • AWSAWSを軸に、関連の技術にも強くなれる。
    • AWS!!!!! + 関連技術

3. 商流

  • SI:2次受け・3次受け
    • 顧客は大手SIer
  • AWS:1次受け
    • 顧客はユーザ企業

4. 仕事の進め方

  • SI:チームで働く、大規模PJ
    • 周りと上手くやる力が必要
  • AWS:セルフマネジメント、小規模PJ
    • 個人で仕事を進める力、周りに相談する力が必要そう

5. 働き方

  • SI:基本は客先常駐、各PJによる
    • 準委任
    • 成果に関わらず、与えられた役割を遂行すればOK
  • AWS:客先常駐なし、基本フルリモート・フルフレックス
    • 基本請負
    • 働き方は自由だが、期間内に確実に成果を生むことを強いられる

なぜAWSエンジニアと言うキャリアを選ぶか?

1. 今最も熱い技術領域のひとつだから

  • パブリッククラウドは既存のオンプレ仮想基盤に負けるとも劣らないインフラ技術領域の選択肢。
    • インフラ担当のエンジニアとして、キャッチアップすべきな技術のひとつ。

2. 顧客の知識が成熟していて技術への期待値が高い

  • 一昔(5,6年)前であれば、少しAWSの知識があったり、経験があればすごい!というレベルだった
    • 今や皆(インフラだけでなくアプリ技術者も)が詳しくなってきていて、少々知識・経験がある程度ではもはや価値がない。
      • この技術領域で戦っていくには特化しなければならない!!

3. 特定の技術のスペシャリストになりたいから

  • AWSに限った話ではないが、1つの領域に特化できれば横展開しやすい。
    • 今最も熱く、顧客の期待も大きい技術領域での業務経験を通じて、技術者として大きく成長できることを期待。

懸念

1. ベンダーロック

  • この懸念はあるが、まずは「AWSを極める」は必須。
    • その後、情勢を鑑みて、マルチクラウド方面にスキルを広めていくか、更にAWSに特化させるかはその時考えれば良し。

2. クラウド以外の技術に弱くなる?

  • これは考えにくいと思う。
    • AWSを利用したシステムを設計・構築するときに単にAWSのことだけを考えればOKなんて状況は存在しない。
    • AWS基盤上で動くアプリや外部システム、既存のオンプレミスとの連携についても考えることは必須で、AWS以外の技術についても詳しくならないといけないことは確実。

3. 構築以降のフェーズを経験しづらい

  • これはひとつ残念なところだと思うが、今後も率先してやっていきたいわけではない(移行/運用/保守)
    • やりたくなったらまた考えればいいのでは、と思う。
      • SIに戻る or 自社開発の会社に行く
    • 転職を決めて一番よかったことは、「今したい・すべきことをする、後のことは後で考える」と考えられるマインドになれたことかも。

その後のキャリアとして

まずは「AWSを極める」は確実に遂行することを第一に、その後については今は考えないことにする。 今見えている景色と絶対違ってくと思うし、転職後の業務や技術に慣れてから考える。

まとめ

  • SIの働き方とは大きく違う
  • 今最も熱い技術であるAWSを極め、行くとこまで行く
  • まずはAWSを極め、そこから次の戦略を考えよう

AWS-SAAに一発合格しました

概要

12/27にAWS-SAAを受験し、無事合格しました。

自己紹介

試験2週間前までのまとめ

  • 前回記事で、受験のきっかけ、勉強開始〜2週間前までにどのような試験対策をしていたかまとめています

AWS-認定SAAに挑戦します - Load to Professional...

試験直前2週間前にやったこと

①「AWSWEB問題集で学習しよう」でひたすら問題を解く

試験直前は「AWSWEB問題集で学習しよう」の問題#80〜#140を正答率をGoogle Spread Sheetにメモしながら1周し、正答率が低かったもののみ2週目を行いました。

2週目ですべての問題で8割以上の正答率を超えた頃に、「本試験モード」にて2回連続9割以上を得点できたので

「AWSWEB問題集で学習しよう」の回答ページは、問題の選択肢毎にAWSの公式ホワイトペーパーや某methodさんのAWS記事へのリンクが貼られていて、

② 苦手箇所をAWS BlackBeltで学習

重点的に学習するべき項目の勉強に役に立ちました

  • CDN系(Cloudfront)
  • サーバレス系(Lambda、API Gateway)
  • ストレージ系(S3、FSX、Storage Gateway) ..etc

試験について

試験内容については守秘義務があるので詳しくは書けませんが、 「AWSWEB問題集で学習しよう」の設問の範囲の知識がある人だったら、どの問題も2択までは絞ることができると思います。

2択から1つをどのように選ぶかは、その問題がどのような意図で出題されているかを考えるべきです。 →パフォーマンス重視?コスト最適化重視?保守運用のしやすさ重視?など

一部初めて見る問題や、全然わからない問題もありましたが、大半は自信を持って答えられたので良しとしました。それでも結果的に合格できました。

やればよかったなと思ったところ

短期間でAWS SAAの合格を目指す試験対策的にはこの学習内容で良いと思います。

ですが、合格後AWSを少し触っていて、今後実務で使う頃を考えると知識だけでは足りずハンズオンや実際の環境構築などの知識以外の経験が必要だなと感じました。

最後に

この1年資格を1つでも多く取れる1年にしたいので慢心せず、勉強を続けたいと思います。 今の所の予定は下記

勉強していく中で、アウトプットの癖をつけるという意味でもまたブログにかけるといいなと思います。

AWS-認定SAAに挑戦します

はじめに

自己紹介

なぜ受験するか?

資格とってみよう、の第一歩と パブリッククラウドへの興味、憧れ。

インフラエンジニアとしての今後のキャリアを考えたとき、周りに能力を証明できる資格をなにも持っていないのはまずいと考えたことと、 クラウド案件の経験はないが今後経験させてもらえるように最低限この資格は持っておきたかった。

この二点が理由でした。

これまでの学習

勉強方法

  • 参考書
  • WEB資料(AWS blackbelt)
  • udemy講座

使用している参考書/WEB資料

参考書

  • AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト

www.amazon.co.jp

  • 徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書

www.amazon.co.jp

udemy講座
  • これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座

www.udemy.com

学習期間

-2019/4〜

最初にudemy講座を買った日。

ほぼ未着手のまま1年くらい立っていた気がする。。。

ので実際は下記の期間。

  • 2020/6末〜2020/12 現在

最初に参考書を買った日を初日としてます

学習時間

平日:30分〜1時間

休日:1時間〜3時間

やったりやらなかったりしていたので、 今日まで100時間いかないくらいやった気がします

学習方法
① ハンズオン学習 (勉強期間:数ヶ月)
  • udemyの「これだけでOK〜」を実践

良かった点:

ハンズオンでAWSのサービスを実際に触りながら勉強できたことがよかった。このあとは参考書メインの勉強になったが、はじめにハンズオンをやっていてよかったと感じたことも少なくなかったと思う。

解説セクションは、②、③の参考書より内容はずっと濃く、サービスのより詳細についてまで網羅。

良くなかった点:

とにかく長い。

一本一本が長くすべて順番通り実施しようとしてしまったため、感想までにめちゃめちゃ時間がかかってしまって、完全に学習のボトルネックになっていた。



② 参考書学習(期間:2ヶ月)
  • AWS認定資格試験テキスト〜」(オレンジ本)

良かった点:

AWSのサービスごとにカットされてさらっと書かれていて読みやすい。

内容が薄めなので網羅的にサービスを理解しやすく、出勤時間のお供に最適だったと思う。

良くない点:

いい点でもあるが内容が薄いので、これだけで実際の試験を乗り切るのは正直厳しそう。

本当に学習を始める導入用。



  • 「徹底攻略 AWS認定〜」 (黒本)

良かった点:

オレンジ本はサービスカットだが、黒本はAWS Well-Architected フレームワークカット。

試験はサービス単体の内容より要求されるフレームワークに合ったサービスはどれ?という形式で出ているらしいのでより実践的。

良くない点:

オレンジ本と同じく内容は薄め。

サービス間連携を学ぶ導入としてはとてもいいと思うが。



③ひたすら問題集を解く+知識の補填 (期間:2ヶ月〜)
  • 黒本の問題集、udemyの問題集など

良かった点:

これをもっと早くにやるべきだった。

知識習得 → 実践 → 不足箇所の補填

このサイクルで現在やっていますがただ本を読んでいるより定着率が違う。

今後の資格勉強のベースにしていきたい。

良くない点:

始めることが遅かった。

受験2ヶ月前。。。

これから

12/27に受験します。

正直自信はないですが、、、受かっても受からなくてもまたブログ記事にしてみよーと思います!

さいごに

この試験をとって終わり!とは考えていません。

今年は今後ももっと資格学習進めていきます!

今後取りたい資格

来年にかけて取りたい資格まだまだあるのでAWS-SAAは一発で通りたい!と思っているが果たして。。。



以上、ここまで読んでいただいてありがとうございました。

active_adminを導入しよう

自作Webページにactive_ adminを導入してみたのでその記録をしてみる。

1.開発環境

2.導入理由

  • GUIでDB操作ができるように管理者コンソールを作りたい
  • 0-1で作るのは時間的に厳しいのでgemを使おう

qiita.com

上記Qiitaの記事を読んで、総合的に一番優秀そうな

「active_admin」

に決めました。

3.導入

3-1.Gemfileからのbundle install

gem 'activeadmin'
gem 'devise'
$ bundle install

※当方環境ではDockerを使用しているので、docker-compose build し直しました。
これも設定次第でbuildし直ししなくてもよくなるそうなので適用して近々記事にします!!



うまくいけば下記のように追加されます

3-2.Gemfile.lock

    activeadmin (2.4.0)
      arbre (~> 1.2, >= 1.2.1)
      formtastic (~> 3.1)
      formtastic_i18n (~> 0.4)
      inherited_resources (~> 1.7)
      jquery-rails (~> 4.2)
      kaminari (~> 1.0, >= 1.0.1)
      railties (>= 5.0, < 6.1)
      ransack (~> 2.1, >= 2.1.1)
      sassc-rails (~> 2.1)
      sprockets (>= 3.0, < 4.1)
      sprockets-es6 (~> 0.9, >= 0.9.2)
 
以下略.....
kaminariとかransackとかがありますね〜

3-3.Rails generateする

$ bundle exec rails g active_admin:install

      invoke  devise
    generate    devise:install
      create    config/initializers/devise.rb
      create    config/locales/devise.en.yml
  ===============================================================================

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================
      invoke    active_record
      create      db/migrate/20191007000038_devise_create_admin_users.rb
      create      app/models/admin_user.rb
      invoke      rspec
      create        spec/models/admin_user_spec.rb
      invoke        factory_bot
      create          spec/factories/admin_users.rb
      insert      app/models/admin_user.rb
       route    devise_for :admin_users
        gsub    app/models/admin_user.rb
        gsub    config/routes.rb
      append    db/seeds.rb
      create  config/initializers/active_admin.rb
      create  app/admin
      create  app/admin/dashboard.rb
      create  app/admin/admin_users.rb
      insert  config/routes.rb
    generate  active_admin:assets
      create  app/assets/javascripts/active_admin.js
      create  app/assets/stylesheets/active_admin.scss
      create  db/migrate/20191007000042_create_active_admin_comments.rb

うまくいきましたね。

3-4.DB Migration

$ bundle exec rails db:migrate

3-5.seedsでテストユーザを仕込む

$ bundle exec rails db:seed

3-6.ログインしてみる

active_adminの/adminが管理画面のデフォルトのルートになっているので ローカル環境でアクセスしたければ localhost:[ポート]/admin にアクセスしましょう。

f:id:oni_rb:20191008091532p:plain

⬆️作成したテストユーザのEmailアドレスとパスワードでログインしてください。

f:id:oni_rb:20191008091220p:plain

うまくログインできました!

カスタマイズ0でこんなに手軽に完成度の高い管理者コンソールができちゃいます!

4.現行環境に適用

デフォルトでは個別ページとして

  • admin_user
  • comment

のみModelとして登録されているので

既設のModelを登録するためにはactive_adminのresourceに追加する必要があります。

4-1.既存のUserモデルをactive_adminに追加

$ rails generate active_admin:resource User

      create  app/admin/users.rb

f:id:oni_rb:20191008124453p:plain

⬆️Users Modelの追加が確認できました

Modelの操作をする前に... 先ほど作成された「users.rb」に以下を追加しましょう。

permit_params :name, :admin

これでModel操作の準備ができました!

f:id:oni_rb:20191008124857p:plain

string属性のNameの入力フォームだけでなく

boolean属性のadminのチェックボックスも自動生成してくれます。

→ 必要情報を入力しCreate Userを選択すれば....

f:id:oni_rb:20191008124902p:plain

⬆︎testユーザの作成が確認できます。

まとめ

  • 導入簡単
  • Model操作もやってくれる
  • カスタマイズには学習コスト要

以上です。 皆さんもぜひ試してみてください!

Chartkick導入してみた

はじめに

自作しているWebアプリの管理者コンソールが見た目がとても寂しく、、、

f:id:oni_rb:20190802195256p:plain


もっと管理者画面らしいことをできたらな〜〜〜

DBを一括管理できる画面があったらいいな〜〜〜

と思っていたところ

Chartkick

というgemで簡単にカッコいいグラフが作れると知り、導入してみよう!と思い立ちました。

対象読者

・Webアプリにかっこいいグラフをつけたくなった人 ・Chartkick使い始めたいな〜な人



導入には以下の公式リファレンスを参考にしました。

公式リファレンス

準備

環境

OSX : 10.13.6
Ruby : 2.6.3
Rails : 5.2.3
Mysql : 8.0.16

Gemfileに以下を追加してbundle install

gem "chartkick"

app/assets/javascripts/application.jsに以下を追加

//= require chartkick //= require Chart.bundle

Rails5ならこれだけでOKなはず



導入

Controller
〜〜省略〜〜
def index
  @tasks = current_user.tasks.all
end
〜〜省略〜〜
View
〜〜省略〜〜
<%= line_chart @tasks %>
〜〜省略〜〜



これで


f:id:oni_rb:20190802202832p:plain


データも何も入ってませんが、表示させることに成功。


ここまで超簡単です!

それっぽいデータを表示できるようにしてみる
gem "groupdate"


いつものごとくbundle installで導入。

〜〜省略〜〜
<%= line_chart @tasks.group_by_day(:created_at).count %>
〜〜省略〜〜



f:id:oni_rb:20190802210345p:plain

データも表示できました!!

※groupdate導入時にmysqlタイムゾーンを設定していなかったせいでエラーが。。。

https://github.com/ankane/groupdate#for-mysql

→公式サイトに助けてもらいました。

オプションを使えば、、、

プレフィックスサフィックス付与、データ無しの時の「No data」なんかも表示できました!


まとめ

Chartkickは本当に「一瞬」でおしゃれなグラフが作れる。