AWS 認定 ソリューションアーキテクト – アソシエイトに合格した

概要

少し前ですが、12月14日(月)にAWS 認定 ソリューションアーキテクト – アソシエイトを受験して合格しました。

業務上、クラウドの幅広い知識が求められるようになったので一念発起して勉強して受験することにしました。自分は、Azureを主に扱っていたのでAWSについては実務経験が乏しく、試験対策には結構苦労しました。ここでは試験に使ったものを主に記します。

学習

まずはUdemyの「これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)」を使って全体概要を学んでいきました。

www.udemy.com

この講座を一通り見て勉強しました。AWSのさまざまなサービスを一通り動画で学べるのは非常に分かり易かったです。動画は1.25倍速や1.5倍速でみて時間短縮をはかりました。

試験対策

つぎに同じくUdemyの「【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)」にて問題をたくさん解きました。

www.udemy.com

問題の形式に慣れたり、自分が不得意なところを把握しておくと言うのが目的です。前出の「これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)」にも問題がついていますが、勉強する時間もあったので数をこなす目的で模擬試験問題集も実施することにしました。

ちなみにですが、Udemyはかなり頻繁にセールをしています。セールが行われるタイミングはわからないのですが、試験日程に余裕がある人はちょっと待ってセールのタミングで買うと良いかとおもます。私は両講座合わせて2,400円で購入しました。

試験の3日前に、会社の同僚から以下の問題集がいいよと教えてもらいました。

aws.koiwaclub.com

ただ、すでに上記のUdemyの問題集でお腹いっぱいだったので自分は使うのはやめました。

本番

試験本番は遅刻しないように早めに会場の最寄り駅まで行き、近くのコーヒーショップでUdemyの問題を見直したり、自作のメモに目を通したりしていました。

f:id:miyohide:20201231134823j:plain

本番の試験問題は結構難しいと感じました。「こりゃ落ちたかな?」と不安になりましたが、気を取り直して冷静に問題を解き続けることにしました。後半になるにつれて問題が優しいと感じるようになり、一度問題を解き終わったあと再度全問見直して「多分これなら大丈夫かな?」と思ってテストを終了しました。

テスト終了後、アンケートに数問答えたあと合否結果が画面に表示されました。「合格」という文字を見て一安心。試験会場を退室しました。

退場するとすぐに詳細な点数などがもらえるのかなと思っていたのですが、FAQにあるように最大で5営業日かかるようです。自分は試験を受けた翌日にメールが来ていて詳細を見ることができました。775点と合格点(720点)と比べて微妙な点数。もうちょっと勉強しなければいけないなと思った次第です。

aws.amazon.com

最後に

10月に受けたAzure Administrator試験と合わせてAWS認定ソリューションアーキテクト - アソシエイト -にも合格し、ようやくクラウドの基本的な知識を身につけることができたかなと思っています。時折AWSとAzureでごちゃ混ぜになるのですが、適宜公式ページを見て知識の整理をしていくとよいのかなと思っています。

また、この試験は有効期限があるので期限が切れる前にはまた受けることになるのかなと思います。

「Webで使えるmrubyシステムプログラミング入門」にはmrubyだけでなくシステムプログラミングに必要なことがすべて書かれてるすごい本だった

概要

@udzuraさんが書かれた「Webで使えるmrubyシステムプログラミング入門」を読みました。各種書店ですでに販売されていますが、私はPDF版が購入できるManateeで購入しました。

読みはじめる前は「mod_mrubyの使い方を簡単に解説した本かな?」と思っていたのですが、読み進めていくと非常に内容が濃い一冊ということに気が付きました。

各章の詳細な感想

Chapter 2でmrubyのセットアップを解説した後は、Chapter 3でmrubyのビルドの全体像とbuild_config.rbの解説、サンプルmgemの作成まで一気に書かれています。いわゆる入門書であればここまでで1冊として成立しそうな内容ですが、本書は更にmrubyでできることを紹介してくれます。

Chapter 4ではpsコマンドの紹介や/procファイルシステムの紹介を丁寧に行った後にこれをmrubyで扱うためのツールを作っていきます。Chapter 5からはmrubyとC言語との連携方法について解説。数年前に私がmrubyで簡単なアプリを作ったときに四苦八苦しながら学んだ内容が凝縮されています。また、プログラムを書く上で欠かせないデバックの方法もツールの紹介とともに詳細に記されており、@udzuraさんのノウハウが惜しみなく丁寧に紹介されています。

Chapter 7からはmod_mrubyの紹介とそのサンプルの実装。1ページ1ページ濃密であることは変わりありませんが、さらにパフォーマンスの測定と分析のための方法論を丁寧に紹介されていて大変驚きました。なんて手厚い...。

Chapter 9では安全にプログラムを書く方法について。一般的な書籍では避けられがちな内容ですが、実例とともに紹介しています。システムプログラミングに必要な内容がかなり丁寧に書かれているすごい本だと感じました。

サポート

最近の技術書にはサポートページがついていて、サンプルソースなどを手元で確認できます。本書にもサポートページがあるので、自分で手で書いてみて詰まったときには参照してみるとよいかと思います。

github.com

iPhoneの機種変をするための準備

iPhone 12を買いました。まだ機種変作業は実施していないのですが、機種変に必要な作業を洗い出しておきます。2年前にも似たような記事も書きましたが、今回この記事も大いに役立ちました。

miyohide.hatenablog.com

環境

iPhoneが5G対応したということで、IIJ mioのSIMが使えるかどうかがちょっと不安でしたが、公式に検証結果が発表されていました。これで一安心です。

www.iijmio.jp

移行が必要なもの

多くのものはサービス提供会社が移行方法について記しています。それを参照しながら作業するだけです。

Suica

Suicaが使えないのは困るので、Suica関係については念入りに調べておきます。

SuicaApple Watchにうつしている場合は念の為iPhoneにうつしておきます。 appsuica.okbiz.okwave.jp

その後、iPhoneのWalletにあるSuicaを移す作業を実施。 appsuica.okbiz.okwave.jp

LINE

official-blog.line.me

Apple Watch

これもAppleのサイトに記されています。

support.apple.com

ペアリングを解除しておくと良さそうです。

iPhoneの移行

以上で準備が整ったので、iPhoneの移行を進めます。作業としては以下の通り。

support.apple.com

iOS APN構成プロファイルのインストール

この作業をしないとモバイル通信ができません。最近はあまりモバイル通信をしない人も多いので、なかなか気が付きにくいポイントかなと思います。

www.iijmio.jp

とりあえずこんなもので。

Azureの認定試験 AZ-104 Microsoft Azure Administratorに合格しました

下のブログで宣言したとおり、Azureの認定試験 AZ-104: Microsoft Azure Administratorを受験して合格しました。

miyohide.hatenablog.com

f:id:miyohide:20201012185306p:plain

試験勉強についてはMicrosoft Leanを使って勉強して、どうしても必要な場合は自分のサブスクリプションを使って動作を確認したりしていました。

こういう試験については昔から苦手で、だいたいお腹痛くなったりしています。今回も朝からお腹痛い><って泣きそうでしたが、最初の数問を解いて「なんとなく行けそう」と感じたら痛みはどこかに行ってました。無事、合格できてホッとしました。

有効期限が2年間なので、定期的に情報更新をしてより知識を深めたいと思います。また、AzureだけじゃなくAWSとかにもチャレンジしてみたいです。

第1回目のKaigi on Railsは初心者から上級者までが楽しめるカンファレンスだった

去る2020年10月3日(土)にKaigi on Railsというカンファレンスが開催されました。コロナ禍のため、オンライン開催。個人的にはオンライン開催はありがたい。

kaigionrails.org

るびまに載せたいので、みなさんブログ書いてください」と言った手前、自分も参加ブログを書きたいと思います。

拝見したセッションのメモ

レーニングとか家事とかをこなしていたらすっかり午後になってしまったので、午後から参加。自分が聞いた範囲の内容を記します。

継承とメタプログラミング満載なアプリケーションコードでもアクションとフィルタに悩まないためのGemを作った話

スライド資料はこちら

なるほど、辛いな...って状況からその解決方法が面白く、参加初っ端から興味深く聞けたセッション。コードの解説がどんどん進んでいって自分は追いつけなかったので、解説記事をるびまに書いてほしい...

Action Mailbox in Action

スライド資料はこちら

いやあ、メールを扱うって大変だなあ...といろいろと学べたセッション。ほんと気軽にメールサーバーを立てようとか思わないようにしよう。

育てるSinatra

Sinatraって1ファイルで収めなきゃいけないんでしょ?と思っていたのをサクッときれいに解決されていて、「なるほど、その手があったか」とfmfm頷きながら聞いていました。あまり大きくなりすぎてもなんですが、発表中にあった「20 Action」程度ならSinatraで作ってみるのもいいなと改めてSinatraを見直す機会となりました。

ミドルウェアActionDispatch::HostAuthorizationと学ぶDNSのしくみ

[スライド資料はこちら](https://speakerdeck.com/yucao24hours/understanding-dns-with-actiondispatch-hostauthorization)。

イラストかわいい。そして分かりやすい。私もRails 6個人アプリを作ったときに「この設定がなんか知らないけれどもいる」という認識だったRails.application.config.hostsが、導入された背景から丁寧に説明されていました。

Rubyで書かれたソースコードを読む技術

スライド資料はこちら

今回のKaigi on Railsで幾度となく聞いた言葉として「ソースコードを読む」というのがあります。読み方やツールについて丁寧に説明された発表でした。個人的には、bundle install --path hogehogeはDeprecatedで今はbundle config set path hogehoge --localがいいということが新しい発見。

Ruby 3.0におけるドキュメンテーションと端末制御の未来

岩を登り、火をおこし、河を下り、浅草の道を歩くという発表内容よりも発表方法が斬新だったセッションでした。

ひみつきちを作りたい 〜「こどもれっどまいん」テーマ作りでの学び

スライド資料はこちら

Redmineをカスタマイズして「こどもれっどまいん」を作られたお話。My Redmineなら今すぐ使えるようです。

hosting.redmine.jp

フォントとか画面遷移とかちょっとしたイースター・エッグとか、飽きさせないカスタマイズが素敵でした。

快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン

資料はこちら

GMOペパボさんの在宅勤務に関する取り組みはWEB+DB Press Vol 118にも詳しいのですが、また別のお話。発表中にあった「単なる二要素認証だけでは要件として不足している」という気付きから解決に向けての取り組みが勉強になりました。

TDD with git. Long live engineering.

スライド資料はこちら

発表タイトルや概要を拝見したときは「え?バージョン管理ツールとTDDのやり方って何か関係あるの?」と思っていたのですが、その疑問を「!」に変わったセッション。なるほど、「誰のためのコード?」を考えると得られたツールの自由度を最大限生かすための取り組みや活かし方を学べました。

Sidekiq to Kafka 〜ストリームベースのmicroservices〜

スライド資料はこちら

扱うデータ量がすごすぎて、「なるほど、そんな世界があるんだ...」とあっけにとられながら拝聴していました。

基調講演

松田さんの基調講演。松田さんが作られている多数のgemを紹介しつつ、コードリーディングや「自分が書いたコードが最高なので」という言葉の通りにどんどんコードを書いていくことを勧められていました。

github.com

「自分が書いたコードが最高なので」、かっこいいなあ。

After Party

いわゆるオンライン飲み会みたいなノリで開催されたAfter Party。いろんなお話が各所で行われ、それぞれ盛り上がっていました。個人的に聞いた話は、

まとめ

最近RailsRubyを触っていないので、話についていけるかな?と思っていましたが、コンセプト通り「初心者から上級者までが楽しめるカンファレンス」でした。この部分については、運営チームさんがかなり気を配って選考されたとお聞きしました。そのおかげで大変楽しめました。

まだ何も決まっていないようですが、来年もKaigi on Railsを開催予定とのこと。今から楽しみです。

AZ-104: Microsoft Azure Administratorを受けることになった

最近、クラウドの勉強をやっているのですが、なんらかの資格試験を取ったほうが見栄えが良いだろうという考えから「AZ-104: Microsoft Azure Administrator」という資格試験を受けることになりました。

まだ実際に受けていないので、試験の難易度とか全然わからないのですが勉強や試験の過程などをまとめておこうかと思います。

試験について

試験の情報は以下を参照。

docs.microsoft.com

試験範囲もすごく幅広く、試験勉強をしていても結構歯ごたえあります。

勉強

ひたすらMS Learnを使っています。

docs.microsoft.com

ここからAZ-104に関するものを全部受けるという感じで進めます。

また、「速習Azure Administrator」という本があるので軽く目を通しました。

https://tatsu-zine.com/books/azure-administrator

ただ、これだけで受かるとはあまり思えなかったので試験対策の資料を探すことにしました。

試験対策

なんとなくUdemyで検索して引っかかったもののうち、評価が高かったものを購入してやっています。

www.udemy.com

これをやってみると、全然分からない。5〜6割ぐらいの正答率なので、合格には程遠い感じ。ここで間違えた問題を中心に用語や機能の再確認をしています。

個人的メモ

とりあえずよく間違える点や覚えていなかったことをメモ代わりに。

サイト間接続の実装

  1. VNetとサブネットの作成
  2. ゲートウェイサブネットの作成
  3. VPN Gatewayの作成
  4. ローカルネットワークゲートウェイの作成
  5. VPNバイスの構成
  6. VPN接続作成

see. https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal

Azure Monitorにおける音声・SMS・メールの投稿制限

  • 音声・SMSは5分に1回
  • メールは1時間で100件未満

see. https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-rate-limiting

RPO/RTO

see. https://techtarget.itmedia.co.jp/tt/news/1901/15/news08.html

Azure組み込みロール

全部を覚えておく必要はないけれども、以下の違いは認識しておいたほうが良いかと。

  • コントリビューター
  • 所有者
  • Reader
  • User Access Administrator

docs.microsoft.com

Azure Cosmos DBをnode.jsから使ってみる

概要

最近Azureを触ることが多いのですが、そのたびに「Cosmos DB押し」をよく聞くのでちょっと触ってみることにしました。無償枠もあるようですので、気軽に試せます。

devblogs.microsoft.com

右も左も分からないので、まずは簡単なチュートリアルに沿って作業を進めます。下記のQiitaの記事を参考にしました。

qiita.com

その後は、作成したItemsコンテナに対してnode.jsアプリからアクセスしてみることにします。以下のドキュメントを参考にしました。

docs.microsoft.com

プロジェクト生成

任意の空ディレクトリにてyarn initを実行してプロジェクトを生成します。その後、yarn add @azure/cosmosを実行して必要なライブラリをインストールします。

設定ファイルの用意

config.jsというファイルを作成して接続先やデータベース名やコンテナ名を記述します。参考にしたドキュメントではプライマリーキーも記していましたが、それはあまり行儀が良くないので今回は環境変数で設定することにします。

const config = {
  endpoint: "エントリーポイント",
  databaseId: "ToDoList",
  containerId: "Items",
}

module.exports = config

環境変数の設定

config.jsにて設定しなかったプライマリーキーを環境変数COSMOSDB_KEYに設定するようにします。単純にLinux/macOSであれば、

export COSMOSDB_KEY=プライマリーキー

を実行するだけです。

プログラムの実装

Cosmos DBに対して参照・追加・更新・削除を行うプログラムapp.jsを実装します。こんな感じの実装となりました。

const CosmosClient = require("@azure/cosmos").CosmosClient
const config = require("./config")

const newItem = {
  id: "3",
  category: "fun",
  name: "Cosmos DB",
  description: "Complete Cosmos DB Node.js Quickstart ⚡",
  isComplete: false
}

async function main() {
  const { endpoint, databaseId, containerId } = config
  let key = null
  try {
    if (process.env.COSMOSDB_KEY) {
      key = process.env.COSMOSDB_KEY
    } else {
      throw new Error('環境変数COSMOSDB_KEYが設定されていません')
    }
  } catch (error) {
    console.log(error.message)
    return
  }

  const client = new CosmosClient({ endpoint, key })

  const database = client.database(databaseId)
  const container = database.container(containerId)

  // SELECTを発行してデータを表示する
  const { resources: items } = await container.items.query('SELECT * FROM c').fetchAll()
  items.forEach(item => {
    console.log(`${item.id} - ${item.description}`)
  })

  // 新しいアイテムを追加する
  const { resource: createdItem } = await container.items.create(newItem)
  console.log(`\r\nCreated new item: ${createdItem.id} - ${createdItem.description}\r\n`)

  // 追加したアイテムに対して更新処理を実施する
  const { id } = createdItem
  createdItem.isComplete = true
  const { resource: updatedItem } = await container.item(id).replace(createdItem)
  console.log(`Updated item: ${updatedItem.id} - ${updatedItem.description}`)
  console.log(`Updated isComplete to ${updatedItem.isComplete}\r\n`)

  // データ削除する
  const { resource: result } = await container.item(id).delete()
  console.log(`Deleted item with id: ${id}`)
}

main()

ポイントは以下のとおりです。

  • async/awaitの使用
  • SELECT文のFROMには何を指定してもいい。
    • サンプルにはcと指定してあり、???だったのですが、何を指定しても良いようです。

あまり分かっていないのでこれからの課題です。

プログラムの実行

最後に実行です。nodeコマンドで作成したapp.jsを実行させます。

$ node app.js
1 - id = 1
2 - This item is second.

Created new item: 3 - Complete Cosmos DB Node.js Quickstart ⚡

Updated item: 3 - Complete Cosmos DB Node.js Quickstart ⚡
Updated isComplete to true

Deleted item with id: 3

SQL API SDKについて

node.jsからアクセスする際のSDKについては以下を参照すれば良さそうです。

docs.microsoft.com

サンプルソース

github.com