プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Japan APN Ambassador 2019ならびに2019 APN AWS Top Engineersになりました(なってます)

 随分前に発表されてTwitterでも呟いておりましたが、ライフログとしてはこちらの方が振り返りやすいので改めて書いておきます。Japan APN Ambassador 2019ならびに2019 APN AWS Top Engineersに選出されました。周りの方々のご協力に、感謝です。

f:id:dkfj:20190613172521j:plain
※NRIの同僚で同じく選出された瀬戸島さんと、AWSの方々との写真です。


Japan APN Ambassador 2019



Ambassadorというのは、AWSのグローバルなプログラムで、

世界中のAPN Consulting Partnerから卓越した技術力を持ち、社外への情報発信(セミナーでの発信、Blogや書籍での発信)をしているメンバーが選出されます。

とのことです。日本では今年から制度が始まり14名選出されました。

2019 APN AWS Top Engineers



 併せて受賞したなのが2019 APN AWS Top Engineersです。こちらは、社内での活動(案件・人材育成)と社外での活動(発信)を評価するようです。
 なお、併せて受賞と書きましたが、AmbassadorとTop Engineersのエントリーフォームは同じで、先にTop Engineersに選ばれましたよ〜ってメールを貰った後にしばらくして、Ambassadorにも選ばれましたという経緯です。Ambassadorの人が必ずTop Engineersに選ばれているのか不明ですが、おそらくTop Engineersの中から選出されているのかなと思います。

aws.amazon.com

なぜ選ばれたのか?



 あくまで推測ですが、私の場合はNRIネットコムという会社の中でAWS事業を推進する立場にあります。そこで、当然様々な案件に関わりますし、人材育成も行っています。特に2018年度は社内の研修講師として、かなりの数の講座を受け持ちました。対外発表面は最近サボっていたのですが、書籍の執筆は継続的に続けており、その辺りが評価されたんじゃないかなぁと思います。

これからどうするの?



 今までの活動を評価されたというのは、素直に嬉しいです。とりあえず一発屋にならないように、来年もTop Engineersに選出されるように精進します。あとは、後進の育成ですね。実は社内で私以外誰も応募しておりませんでした。選ばれそうな実力を持った人は社内には沢山いるので、そういった人たちのアピールと対外進出を支援していこうと思います。
 また授賞式の時にAWS相澤さんが「Go Globalの精神で、世界に進出していってください」と話されていました。せっかくなので、今年は日本のみならず世界にもアピールできるような事を考えて実行していこうと思います。出来ることからですけどね。

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

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

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る

Nature RemoとAmazon Echoの連動で家電操作は、エアコンが便利

随分前に自宅のIoT化ということで、Nature Remo miniを導入しました。構成は割とスタンダードだと思うのですが、Amazon Echo(Alexa)とNature Remo miniを連動させて、居間にあるリモコンで操作できる家電各種と連動させています。

連携させたのは、下記の4台です

・テーブル上のメインの電灯
・エアコン
・テレビ
・ファン付きシーリングライト

f:id:dkfj:20190814004340p:plain

利用風景


 なかなかイメージがしにくいと思うので、実際の動作の様子を音声で聞いてください。出演者は、私とAlexa(Amazon Echo)とエアコンさんです。

私:   Alexa エアコンつけて
Alexa:  はい
エアコン:温度は28℃に設定されました
私:   Alexa エアコンけして
Alexa:  はい
エアコン:運転を停止しました

 このエアコン、ダイキンのうるるとさららで喋ります。Alexaより喋ってます。買った当初は喋るの意味ないなと思ってたのですが、Alexaと連動させると近未来感が出てきて非常にグッドです。

Nature Remoとの連動に効果を発揮する家電


 半年くらい使ってみての感想ですが、Nature Remoとの連動が効果を発揮する家電は次のようなものです。

  • リモコンの利用頻度が少ない
  • 操作が単純

 我が家では、エアコンとシーリングライトについているファンを回すのに活躍しています。シーリングライトのファンは回すと便利なのですが、そのためだけにリモコンを用意するのが面倒くさくて永らく使っていませんでした。Nature Remoのおかげで再び回りだすようになりました。

f:id:dkfj:20190812180721j:plain

意外に連動効果がない家電


 一番最初に試して、あまり意味がなかったなと悟ったのは電灯・ライトです。居間の構造上、入り口すぐの時にオンオフのスイッチがあり、必要な時はそれを操作した方が早いです。またスイッチがオフの状態でAlexaで操作しても、当然ながら電気はつきません。もしこれが寝室だったら、布団に入って寝る前に本を読んで、そのまま布団から消すといった効果があるかもしれません。が、今の所、寝室への導入はしておりません。

 そして同じく効果の薄い連動が、ルンバです。IT家電の代名詞の一つ、ルンバさんもNature Remoとの連携機能があります。ただ我が家の状況的には、連動してもあまり意味がないなということで解除しています。なぜならば、散らかし放題の2人の幼児がいる我が家では、ルンバさんを動かす前に部屋の片付けが必要です。その労力を費やした後にルンバさんの稼働となるわけですが、そこの部分だけ音声にしてもあまりありがたくないなぁというのが実感です。ちなみにルンバさん、任意の時間に掃除してもらうより、決まった時間に動くように設定しておいて、その前に強制的に片付けざるを得ない状況にする方が効果的ですよ。

テレビとの連動はどうなの?


 よく聞かれるのが、テレビとの連動。我が家ではリアルタイムのテレビを見ることが殆どありません。録画済みのものや、Netflix等のオンデマンドTVです。なので、Alexaさんで操作するには少し無理があります。結果的に使ってるのは、テレビを消す時だけです。ただ、これはこれで便利です。テレビを見るのを止めない子供たちに、Alexaさんは無慈悲にテレビを消してくれます。もちろん怒りの矛先は私にきますが。

まとめ


 Nature Remo miniは5〜6千円くらいで買えるので、スマートスピーカーを持っている方は是非ご検討をお勧めします。Amazonや家電量販店でも、定期的に安売りしているので時期見計らって買ってみてはいかが?ちなみに私は使っていないのですが、インターネット経由で家電の操作もできます。エアコン消したかなといった心配も、Alexaアプリから確認できるようになります。

Nature Remo mini 家電コントロ-ラ- REMO2W1

Nature Remo mini 家電コントロ-ラ- REMO2W1

Echo Dot  第3世代 - スマートスピーカー with Alexa、チャコール

Echo Dot 第3世代 - スマートスピーカー with Alexa、チャコール

Capital Oneの個人情報流出事件に思うこと

 2019年7月末に、米大手金融機関であるCapital Oneが不正アクセスによる1億人を超える個人情報の流出を発表しました。規模もさることながら、Capital OneはAWSから何度も事例に取り上げられるような先進的な企業だったので、個人的にかなり衝撃を受けました。また、攻撃手法についても、従来の単純な設定ミスを狙ったものではなく、より一歩踏み込んだ攻撃という印象を受けました。

攻撃手法


 攻撃手法については、piyologさんのSSRF攻撃によるCapital Oneの個人情報流出についてまとめてみたが非常に解りやすいので、まずはご参照してください。
piyolog.hatenadiary.jp

 攻撃手法を簡単にまとめると、WAFの脆弱性を利用してIAM Roleのクレデンシャル情報を取得し、それを手元から利用して情報を取得したという形です。piyologさんの図を、再描画させて貰いました。
f:id:dkfj:20190812151512p:plain

どうすれば良かったのか?


 情報流出の一次的な原因としては、WAFです。セキュリティ製品については、もう独自の運用でカバーできる範囲ではないので、AWS WAF等のマネージド・サービスもしくは、専門の会社が提供する製品を利用するのがあ良いでしょう。ただ、あくまでWAFについては一次的な原因で真の問題については、別のところにあると思います。それは、不用意に大きな権限を持ったIAM Roleを利用した点にあります。

 対策としては、2点考えられます。

IAM Role側の対策
  • 特定のS3 Bucketのみ接続できるようにする
  • 必要なアクション(例えばPut)のみ権限を付与する
S3 Bucket側の対策
  • Bucket Policyでec2 instanceが属するVPCからのみ接続できるように制限する

f:id:dkfj:20190812152706p:plain

 S3に格納する情報は、非常に重要なものが含まれるケースがあります。その場合、IAMポリシーのみの設定のみで防御するのは危険です。必ずBucket Policyでも制限を加えるべきです。Bucket Policyの制限は強力で、どのようなIAMの権限を与えていても、ポリシーに合致していないと見ることはできません。

悩ましい点


 上記の設定をすれば今回の事件は防げたと思います。一方で、IAM Roleを付与していたec2がgetとput両方の権限が必要であった場合、ec2からの操作で情報流出の可能性はあったでしょう。また、それ以前に全てのAWSの設定のうちで、1箇所だけ設定を間違っていただけで、このような甚大な被害が発生する可能性があるのです。Capital Oneがどれほどの規模のシステムか具体的に知りませんが、おそらくかなり巨大なシステムでしょう。AWSアカウントやIAMロール、S3バケットの数は無数にあると思います。上記のような個別防御の他に、様々な観点で防御する必要があるでしょうね。

感想と宣伝


 AWSのセキュリティを考える上で、IAMに対する理解はかなり重要です。ということで、IAMに特化した150ページほどの薄い本を2019年9月の技術書典7に出展予定です。上記のような設計の考え方、具体的なポリシーの実例をドドンと挙げています。出展については、こちらを参照してください。
 また書いているうちに確信したのですが、IAMの防御は基本だけどそれのみでは、もはや足りません。そのうちどこかで、その他のセキュリティについても書こうと思います。

f:id:dkfj:20190812161833p:plain

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

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

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る
Amazon Web Services 業務システム設計・移行ガイド (Informatics&IDEA)

Amazon Web Services 業務システム設計・移行ガイド (Informatics&IDEA)

技術書典7に出展します

 Twitterで呟きましたが、9/22(日)に開催される技術書典に出展します。
techbookfest.org

出展内容


 とりあえず出すことを決定してるのは、AWSのリソースに対する認証認可の機能であるIAMに関する本です。おそらく100ページから150ページほどになると思いますが、その中でひたすらIAMに関することを取り扱います。商業誌だと1テーマでこれだけ書くのは厳しいので、技術書典ということで好きに書かせてもらいます。

f:id:dkfj:20190731144719p:plain

なぜ出展するのか?


 商業誌より儲かりそうだからという邪な考え方もあるますが、自由度の高さが魅力です。あと、Kindle等で直接出版をいつかしてみたいという夢を数年前から持っておりました。が、締切がないと全く進まないので、無理やり締め切りを作るために技術書典さんのイベントを利用させて貰いました。

目次(案)


 取り扱うテーマとしては、次のような感じです。既に5章までは書いています。書いているうちに多少追加削除していくとは思うので、ご愛嬌ということで。

第1章 AWSとIAM
 1.1 認証と認可
 1.2 AWSのアカウントの種類
 1.3 AWSアカウント
 1.4 IAMユーザー

第2章 IAMの機能
 2.1 IAMユーザー
 2.2 IAMグループ
 2.3 IAMポリシー
 2.4 IAMロール
 2.5 パーミッション・バウンダリー
 2.6 IAMの機能のまとめ

第3章 IAMチュートリアル
 3.1 IAMポリシーの作成
 3.2 IAMグループの作成
 3.3 IAMユーザーの作成
 3.4 クロスアカウントロールの作成

第4章 IAMポリシーのデザインパターン
 4.1 ホワイトリスト・パターン
 4.2 ブラックリスト・パターン
 4.3 IAMグループを利用したハイブリット・パターン
 4.4 IAMポリシーのデザインパターンのまとめ
 コラム 最小権限の探求

第5章 IAMグループのデザインパターン
 5.1 複数グループに所属
 5.2 グループ内に複数ポリシー
 コラム グループの階層構造について

第6章 IAMとセキュリティ
 6.1 IAM権限付与で守るべきポイント
 6.2 権限付与系の権限
 6.3 インターネット公開系の権限
 6.5 VPC内からのAWSリソースへのアクセス
 6.6 git secrets
 コラム IPアドレス制限の是非

第7章 IAMの運用
 7.1 アクセスキーの管理
 7.2 Switch ユーザーによるIPアドレス制限
 7.3 CLIから一時アクセス
 7.4 2要素認証の運用
 7.5 IAMユーザーの棚卸し
 コラム IAMを制するものがAWSを制する

第8章 CloudFormation
 IAMとCloudFormation
 CloudFormationの分割単位
 コラム ライフサイクルで考える

第9章 テンプレート集
 Adminユーザ
 ネットワーク管理者
 オペレーター
 開発者
 監査担当
 サーバレス開発者

第10章 IAM以外のサービスの活用

この後


 今回は同人誌なので、原稿書いた後も全部やる必要があります。印刷の手配とかもやったことがないので、その辺りを1から学びながらやってみます。とりあえず8月中旬には原稿書き上げて、その辺に進みたいなと思います。余裕があれば、もう1冊くらい作りたい気もしますが、他の商業誌の執筆も並行してやってるので難しいでしょうね。あと売り子業、どうしよう?一人でやるのは、無謀ですかね?

Shinkansen Free Wi-Fiは、どうやってつながるのか?或いは、なぜ割と速いのか?

 5年ほど前に、「新幹線のWifiは、どうやってつながるのか?或いは、なぜ遅いのか?」という記事を書いていましたが、新幹線のWi-Fiは遅くて使い物にならないものと思っていました。ところが最近、Shinkansen Free Wi-Fiが登場してきて、わりと快適になってきています。昔のLCXベースのWi-Fiは、新幹線1編成あたり最大2MBpsです。1編成ってのは、1号車から16号車合わせて1編成です。それで2MBps!!そりゃ、遅いですね。では、新しいShinkansen Free Wi-Fiは、どういった構成なのでしょうか?

Shinkansen Free Wi-Fiの仕組み


 仕組み・構成については、この記事に詳しく書いてありました。

 JR西日本に聞く、新幹線の無料Wi-Fiサービス「Shinkansen Free Wi-Fi」開始の舞台裏

 LTEベースで、JR東海・九州はNTTグループで、JR西日本はauと、JR各社ごとに通信キャリアを変えているそうです。で、設置単位は何と1両ごと、車内案内表示器の空きスペースに設置しているそうです。LTEの要求スペックも、100Mbps以上のスループットが出るように設計されているそうなので、それなりに速いのも納得できますね。

 走っている場所により速度はマチマチですが、だいたい1Mbps以上はでている感じでした。

f:id:dkfj:20190428145105p:plainf:id:dkfj:20190428145122p:plain

※Googleさんの回線速度テストを使っています。1Mbpsの時は、非常に低速ですとディスられていますが。

 ということで、早く全車両導入して欲しいものですね。2020年3月を目標に、順次設置を進めているそうです。

初学者のAWSの学び方

 先日、JAWS-UG 初心者支部#17 AWS勉強しNight!AWS認定資格取得 虎の巻と立て続けにAWSの習得の仕方というテーマで登壇させていただきました。どちらの参加者もとても熱心で、AWSを学ぼう熱を感じました。

登壇資料


speakerdeck.com

AWSの学び方


 イベントの中で、複数の方のAWSの学び方が語られていました。聞いていると、だいたい一定のパターンがありました。

  1. 自分ごとにする(=AWSを学ぶ動機付けを明確にする)
  2. 実際に手を動かす
  3. 解らないところは、都度資料を見つつ確認する
  4. 身につけた事をアウトプットする

 つまり勉強のための勉強にしないということですね。AWSは今では100を優に超えるサービスがあります。これを一から全部体系的に勉強しようとすると、膨大な時間が掛かります。そしてAWSのサービスは、下手したら自分が学ぶスピードより速く拡張していっています。ということでお勧めは、基本的な事と使う事を中心に学んでいくという方法です。

AWSの学ぶためのチュートリアル

 初めてAWSを学ぶ際のお勧めは、次のとおりです。

f:id:dkfj:20190427152419p:plain

 自分が本を書いているからという手前味噌感は半端ないですが、初学者に本はやはりお勧めです。今だとネットで良い教材が揃っているのも事実です。一方で本には本の良さがあり、ちゃんと構成を練られた本であれば、対象とするテーマに対しての網羅性が高く順を追って過不足なく解説されているものです。
 ネットで学ぶのも良いのですが、ネットにアクセスするのは能動的である必要があり、キーワードを知らないと調べられないという構造があります。つまり初めて学ぶときに、全体像が掴みにくいという問題があるのです。もちろん、その辺りをちゃんとカバーしている優良なサイトも沢山ありますが、最初にそこに辿り着けるかという問題があります。初学者は書籍やコースで受動的に学び、中上級になったら能動的に学ぶのがよいでしょう。

AWS認定ソリューションアーキテクト – アソシエイト

 手を動かしながら学ぶの大事と話しましたが、ではAWS認定試験はどのように位置づければ良いのでしょうか?これは、自分が達成したレベルを客観的に測るための物差しとすべきだと思います。AWS認定試験は、試験範囲の網羅性・設定されたレベルに対しての難易度の調整の面においても良く出来ていると思います。
 また、試験を受けることによって、知らなかった機能や使い方に気がついて、あとで学び直すきっかけにもなります。ちょうど新バージョンに対応したAWS認定ソリューションアーキテクトの試験本も3冊立て続けに発売され、学びやすい土壌もできています。ぜひ、挑戦してください。そして願わくば、日本でもプロフェッショナルレベルの試験対策本が出るほど、AWS技術者層としての厚みが出てくればと思います。

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

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

  • 作者: NRIネットコム株式会社,佐々木拓郎,林晋一郎,金澤圭
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2019/04/20
  • メディア: 単行本
  • この商品を含むブログを見る

サーバーレスで技術書の執筆環境を構築できる時代になっていた

 ブログでレポートするのを忘れていましたが、2月に開催されたJAWS Days 2019で"AWS本 我々はこうして「AWS本」を書いた! 〜十人十色〜"というセッションに登壇していました。商業誌・同人誌のAWS本の作者たちが集まって、執筆について語るという内容でした。

同人誌の執筆環境


 登壇者の皆さんの話は、執筆方法・テーマの考え方・同人誌(技術書典)を取り巻く環境・お金にまつわる話と、どれも非常に興味深かったです。その中で、個人的に衝撃を受けたのが同人誌の執筆環境です。本を書く工程として、企画に始まり執筆⇒校正⇒組版⇒製版といった工程があります。執筆から製版までのプロセスを支援するツールとしてRe:Viewという書籍執筆支援システムがあります。原稿書くだけであればMarkDown形式というのが多いのですが、スタイルの指定など表現力に難があります。そういった部分までサポートするRe:VIEWがあるのは知っておりました。

 もともとRe:Viewについてはある程度知見がありました。5年前に原稿を書き出した時に、どのフォーマットで書くか試行錯誤してた時期がありました。結局、商業誌の場合は組版・製版は出版社がやってくれることもあり、手軽なMarkDownに落ち着いていました。
blog.takuros.net

 当時、gitにプッシュしたらビルドする仕組みも用意してたのですが、下記の2つの点で使わなくなりました。
・ローカルビルドは、複数の環境で執筆してたので、全てに用意するのが面倒くさかった
・サーバビルドは、コストの面で断念。EC2上で構築してたものの、たまにしか使わないビルドに毎月数千円を払うのは割に合わない

 そういった執筆から製版までの工程ですが、何と今はRe:Viewビルド用のコンテナがdocker hubで公開されているため、それを利用する人が多いようです。しかもローカルで利用するだけでなく、CircleCI等に組み込んで執筆環境のCI/CDが実現できるようにしているとのことです。なにそれ、並のシステム会社より進んでる!!と思いました。

hub.docker.com

AWSでサーバレスで執筆環境を作った


 なかなか衝撃的だったので、自分でもやってみないとと思い環境を作りました。CircleCIも良いけどCodeBuildやCodePipelineをちゃんと使いたかったので、そちらの方で環境を作りました。こんな構成になります。

f:id:dkfj:20190405075031p:plain

 CodeCommitにマスターにマージされると、CodePipelineが検知してCodeBuildを呼び出します。CodeBuildでは、Re:Viewのコンテナを利用してPDFをビルドします。生成物であるPDFは、S3に保存されます。このPDFをCodeDeployを使って任意の場所に配布するという流れです。CodeDeploy部分は現在一人で執筆しているので作っていませんが、SlackやDropBoxのAPIと連携して共同作業者に配布・通知するというのが良いでしょう。AWSの費用は、CodeBuildの無料枠が月あたり100分と大きいので、ほぼ無料枠でいけるのではという感触です。ビルドしたら、こんな感じでPDFがつくれます。

f:id:dkfj:20190405103607p:plain

感想


 最初は試行錯誤しましたが、一度作ってしまえばサーバレスでマネージメント不要の環境ができます。せっかく環境が整ったので、Kindleのダイレクト出版をやってみようと思います。1ヶ月くらいで書きたいですね。あと最近盛り上がっている、技術書典。4月開催に行ってみて雰囲気を掴んで、10月に挑戦してみたいです。AWSの環境の作り方とRe:VIEWの使い方は、手順紹介の記事を別途それぞれ書きます。