ryoma's note

マイペース ੯•́ʔ̋ ͙͛*͛ ͙͛*͛ ͙͛̋و

AWS認定ソリューションアーキテクトアソシエイトを取得した

先日、AWS 認定ソリューションアーキテクトアソシエイトの試験を受けてきて合格しました。

最近の業務でクラウドサービスの運用をよくしているという訳ではないのだけど、ホスティングサービスのバックエンドエンジニアを担当している身として、利用者視点でクラウドの強みを理解しておくことは大事だよな〜と思ったのがきっかけでした。プライベートの開発でもクラウドサービスを利用していきたいなと思っていたので、その点でも都合がよかった。資格取得は手近な目標として設定しやすいし、体系的にインプットする手段として便利だった。

学習にあたって AWS の主要サービスの一部機能(ロードバランシングやオートスケール、DNS フェイルオーバーなど)を実際に動かしてみて「かんたん便利!」となったものの、まだまだ実務レベルの技能があるとは言えないので触る機会をつくって身につけていこうと思っている。

やったこと

最短突破 AWS認定ソリューションアーキテクト アソシエイト 合格教本

最短突破 AWS認定ソリューションアーキテクト アソシエイト 合格教本

結果

f:id:ryoma123:20190812182304p:plain f:id:ryoma123:20190812182310p:plain

感想

クラウドにおけるアーキテクチャの設計思想を学べてよかった。障害は起こるものとして可用性の高い設計によってダウンタイムを最小化したり、ビジネスに集中できるようにサーバ構築や運用の手間を省力化したり。日頃の開発においても大事な考え方に触れられたので役立てていけるといいな。せっかく学んだので AWS 活用していくぞ 💪

Goでdicというツールを作った

ホスティングサービスの運用をしていると、dig コマンドの力を借りてドメイン情報をしらべる機会がよくあります。

たとえばウェブサイト表示に問題があったり、ブラウザから SSL 証明書を確認できなかったり、メールの不通で困っているようなお問合せに関する調査です。トラブルシューティングの際に、自社管理をふくむ複数の DNS サーバーに登録されているレコード情報が誤っていないかをしらべる必要があります。

また特定のレコード情報を更新したあとは、DNS キャッシュサーバに問い合わせると TTL の影響を受けるので、権威 DNS サーバやパブリック DNS に対して問い合わせをすることになります。

クエリタイプやDNS サーバをコマンド引数で都度わたしてあげる作業がすこし手間だったので、あらかじめ知りたい条件を定義した config ファイルに沿って、ドメイン情報を集めてくれる dic *1 という CLI ツールを作りました。

並行処理がどうしても必要になりそうだったのと、以前から勉強してみたかった言語だったので、今回は Go でつくることを選択しました。

つくったもの

つかいかた

config ファイルを TOML で記述。

# config.toml
[[sec]]
  name = "demo"

  [[sec.args]]
    server = ""
    qtypes = ["a", "txt"]

  [[sec.args]]
    server = "1.1.1.1"
    qtypes = ["a", "txt"]

  [[sec.args]]
    server = "ns"
    qtypes = ["a", "txt"]

[[sec]]
  name = "demo2"

  [[sec.args]]
    server = ""
    qtypes = ["any"]

デフォルトで利用するセクションを設定。(一時的な利用は -n, --name

$ dic e
$ dic s demo
Changed the default section to "demo"
$ dic l
DEFAULT SECTION
 demo

SECTION NAME        SERVER          QUERY TYPES
*demo               -               [a txt]
                    1.1.1.1         [a txt]
                    ns              [a txt]

 demo2              -               [any]
$ dic example.com www.example.com
[example.com]
  -
    example.com.        40170   IN      A       93.184.216.34
    example.com.        86400   IN      TXT     "v=spf1 -all"
  @1.1.1.1
    example.com.        3200    IN      A       93.184.216.34
    example.com.        5668    IN      TXT     "v=spf1 -all"
 *@a.iana-servers.net.
    example.com.        86400   IN      A       93.184.216.34
    example.com.        86400   IN      TXT     "v=spf1 -all"

[www.example.com]
  -
    www.example.com.    66099   IN      A       93.184.216.34
    www.example.com.    86388   IN      TXT     "v=spf1 -all"
  @1.1.1.1
    www.example.com.    9276    IN      A       93.184.216.34
    www.example.com.    10788   IN      TXT     "v=spf1 -all"
 *@b.iana-servers.net.
    www.example.com.    86400   IN      A       93.184.216.34
    www.example.com.    86400   IN      TXT     "v=spf1 -all"

おまけ

config ファイルに server = "ns" と記述すると、 NS レコード(サブドメインの場合はそのスーパードメインに設定される NS レコード)の DNS サーバに対して問い合わせを行います。用途として、レコード情報の更新や DNS サーバをお引越しした直後に、 DNS キャッシュサーバの TTL を待つことなく正常に変更されたことを確認したかった 👀

また server = "" のように空欄にすると resolv.conf を利用します。

ref. https://github.com/ryoma123/dic/blob/master/README.md#example

感想

  • ずっと気になっていた Go の学習機会をつくれてよかった!
  • シンプルで書きやすいところが大好きになってしまったのでもっと触っていこう〜 🙌
  • 正しい設計がわからずリファクタリングにだいぶ苦労してしまったので、Go のデザインパターンなどから学んでみようかなぁと思っている

*1:dic: Domain Infomation Collector

cert-checkというGemを作った

おもに業務で、ローカルに一時保存した SSL 証明書ファイルの中身が知りたいな〜という機会がよくあった。

そんなときは openssl コマンドの力を借りて都度 grep したりしていたのだけど、学習を兼ねて、必要な情報だけまとめて出力してくれる CLI ツールをつくってみた。

CLI ツールなので Go が向いてるのかなぁと迷ったけど、Ruby も学んでいきたかったので今回は Gem として作ることを選択してみた。 erikhuda/thor のライブラリを使うと手軽に CLI ツールが作れて便利だった 🙏

つくったもの

つかいかた

$ cert-check info /tmp/www.example.org.crt /tmp/github.com.crt
CertFile:   /tmp/www.example.org.crt
Issuer:     DigiCert SHA2 Secure Server CA
NotBefore:  2018-11-28 09:00:00 +0900
NotAfter:   2020-12-02 21:00:00 +0900
CommonName: www.example.org
SANs:       [www.example.org example.com example.edu example.net example.org www.example.com www.example.edu www.example.net]

CertFile:   /tmp/github.com.crt
Issuer:     DigiCert SHA2 Extended Validation Server CA
NotBefore:  2018-05-08 09:00:00 +0900
NotAfter:   2020-06-03 21:00:00 +0900
CommonName: github.com
SANs:       [github.com www.github.com]

感想

  • シンプルなツールだけど、身の回りの作業がすこし便利になってうれしい。
  • Gem を作るのは初めてだったので分からないことが多かったけど、手を動かして調べるほど怖くなくなってきてよかった。
  • 引き続きこつこつアウトプットして生活を便利にしていこうとおもった。

学習メモ

ひさしく更新していなかったので学習メモを書いていくことにした。

先週やったこと

  • Progateに課金した
    • Ruby I, II, III を進めた。まだ基礎的な内容だけどレベルアップとかあって楽しい。
    • 隙間時間にできそうなので、RubyPHP系のレッスンからやっていきたい。

「就業力」についてお話をしてきた

夏はじまりそう。


先日、大学の授業でお話をする機会をいただきました。

就職活動をひかえた3年生が対象の「就業力育成講座」という授業で、「自分に合った職業をみつけるためにいまやっておくべきこと」などを学ぶ場のようでした。

chiwata.hatenablog.com


みなさん熱心に聞いてくれて、質問もしてくれたりと、自分にとって刺激ある時間になりました。

貴重な機会をいただいた福岡工業大学の先生方をはじめ、紹介してくれたちわたくん、うづらさん、本当にありがとうございました。

就職活動に向けて少しでも役に立ってくれるといいなぁ。。心から応援しています!


speakerdeck.com

Vue.jsに触れはじめた

ドットインストールに「Vue.js入門」が追加されていたのでやってみた。

ToDoアプリの実装を例に v-on, v-bind などのディレクティブの意味から教わりつつ、

こんなにシンプルに作れちゃうのすごいすごい言いながら写経をしていた。

後半は Component も紹介されていて、便利さを実感できたので入門したかもしれない。

使えるようになるべくこれから触ってみよう。

『ドットインストール』公式ブログ - 最新版にあわせて「Vue.js入門」を追加しました

新卒研修についてLTしました

こんにちは。暑い!

先日、社内で開催された「ホスティング Tech MTG #4」というイベントで、ホスティングでもなければテックでもないお話をしてきました。

新卒研修の「番長」というお仕事を2ヶ月くらい(準備も含めると半年くらい)していたので、その感想が中心です。

番長業、手探りだったのでいろいろ反省はあるけど楽しかった。。

speakerdeck.com

研修をメインで担当してくれた後輩ふたりもインタビューに協力してくれました。ありがとう!

研修大変そうだったけれど、いろいろ学べたこともあったようで、お願いしてよかったなぁという気持ちに…!

来年の新卒研修も、なにかしらお手伝いしていきたい!

ではでは。

recruit2018.pepabo.com