kun432's blog

技術ネタ、読書記録、など。2015年から人生をやり直し中です。

初Alexaスキル「HTTPステータス検索」を公開しました

今年の目標の一つだった、Alexaスキル「HTTPステータス検索」を公開しました!

HTTPステータス検索

HTTPステータス検索

HTTPのステータスコード(3桁の数字)を言うとそのレスポンスの意味を教えてくれるという、とてもシンプルなスキルです。

実際に動いているところはこんな感じです。


Alexaスキル「HTTPステータス検索」

もしよろしければお試しください。

そんな大したことはできないシンプルなスキルなのですが、初Alexaスキルということもあり、いろいろ知見もあったので、そのあたりは別エントリでまとめたいと思います。

次はGoogle HomeとClovaに対応したいと思っています。

GCP認定資格 Professional Cloud Architectを取得した

Google Cloud Platformの認定資格であるProfessional Cloud Architectを取得したので、どういうことをして合格したか?をまとめておきます。これから取得を検討されている方の参考になれば。

https://api.accredible.com/v1/frontend/credential_website_embed_image/certificate/11773132?key=d3eeaf488c961caeb914682e436066be3b5424424a6b8b73dbbca82aba2b3621

私のスペック

  • インフラエンジニア(10年以上)。
  • 開発エンジニア(2年、PHP、はるか遠い昔)。
  • オンプレ一筋。クラウドの実務経験はほとんどなし。
  • AWS認定ソリューションアーキテクト アソシエイトとAWS認定SysOpsアドミニストレーター アソシエイトは個人で一応取得済。
  • AWSGCPもプライベートでちょろちょろいじってる程度。サービス自分で立ち上げたりとかはしてない。
  • 上記以外
    • LPIC Level3(HA)
    • 英語は、海外の技術ニュースやドキュメントとかを読んだり程度は苦にならない程度。

勉強時間

  • トータル期間としては半年弱
  • ただし、1日30分程度、毎日できているわけでもないので、実質は1〜2ヶ月程度ではなかろうかと。

勉強方法

他の方の体験記

何はともあれ、既に合格されている方の体験記を見て、参考にさせてもらいました。

試験ガイド

何はともあれ試験の範囲を確認します。

とりあえず範囲が広そうということがわかります。。。

Coursera

AWSに比べるとGCPは圧倒的に情報量が少ないので、どういう風に体系的・効率的に学ぶか?というところがわかりませんでした。手っ取り早く確実に取得する、かつ、会社が負担してくれるなら有償セミナー受けるのが良さそうです。私の場合は、会社が負担してくれ(る|ない)に関係なく、個人で取りたいというのが基本的にありましたので、費用的に有償セミナーは諦めてましたが、たまたまWantedlyがCoursera(&Z会)とコラボキャンペーンしてて安くなっていたので、それを使いました(通常約5万円→約3.5万円)。

Cousera自体の感想としては、

  • 基本的に英語オンリーだけど問題なし
  • 各章ごとにレクチャ・ハンズオン・小テストみたいな構成
  • レクチャは複数のチャプターに分かれていて、1本あたり概ね数分〜長くても10分程度、コツコツ進めれる。
  • レクチャの資料は有償ハンズオンで使用されているものっぽい感じ(確証なし)
  • ハンズオンはQwiklabsが使える。受講期間中は何度でもやり直しできるのでよい。
  • 小テストは試験問題と違って、各章ごとのおさらいみたいな感じ。
  • 全体としては、前半のコースは、各サービスごとの特徴とかどういうユースケースにあうか、後半はもう少し大きな概念で、設計とかデプロイとか運用とか故障とかにどう取り組むか?みたいな構成。後半部分はGCPの思想みたいなものが見えて興味深いです。

という感じで、いかにも試験対策という感じではないけど、他に選択肢もあまりないことを踏まえるとまあまあかなという感じでした。

一応終わると修了証がもらえます。

f:id:kun432:20180801012633p:plain

模擬試験

一通り勉強が終わったタイミングで、実際の試験前に受けてみました。

一通り進めると結果が出ます。正解率は65%でした。ボーダーラインですね。間違っても解説が一切ないのが辛いのですが、解説している方がいらっしゃいました。

↑でコメントありますが、英語版の模擬試験だと答えの解説がでます。1問だけですが、違う問題もありましたので、こちらもやっておきました。

あと、模擬試験でも出てくるのですが、試験ガイドに出てくるケーススタディについては、事前に読んでおくのがいいかもしれません。多少の時間を稼げる部分はあるかと。

実際の試験

ということで試験です。詳細は書けないので印象だけ。

  • 一言で言うと、問題がわかりにくかったです。日本語訳がこなれていないのか、元々の問題が微妙なのか・・・英語への切り替えもできなかったので今となってはわかりません。
  • 模擬試験はやっておくべきです。が、本番のほうがより難しいと個人的には感じました。
  • あとは時間ですかね。最初の5、6問ぐらいで、この手の問題をいちいち読み解いてたら間に合わないと思ったので、ザッと最後まで進めてから順に見直すやり方に変えました。それでもギリギリ一杯って感じでした。
  • 悩まずにスパッと回答できたものは50%ぐらい。残りは見直しの中で結構直した気がします。時間配分と見直しは重要ですね。
  • 結果はすぐに出ますが、全体の正答率や分野ごとの正答率などは一切出ません。。。。

試験中も全く受かる気がしなかったのですが、なんとか合格できてホッとしました。

感想

GCPのサービスの細部を問う、というよりは、GCPというかクラウドのメリットを踏まえた場合にどうするか?を問われている感じがしました。その意味でいうとAWSとかの知識も大いに役に立った気がしました。

今後

この流れでGoogle認定 Professional Data Engineerを受けたいなぁと思っていますが、Professional Cloud Architect以上に情報がないので、またCourseraの世話になるのがよいのかな、と思いますが、有償です。。。

あとAWSの方も今持っているAssociate資格2つとも更新時期が近づいてきてて、めんどくさいしモチベーション出ないけど手っ取り早く2つとも再認定するか、もしくは頑張ってProfessionalの方に進むか、って感じなのですが、Professionalは普段から実務で触ってないと正直厳しそうな気もしてて、ちょっと悩み中です。

Amazon Alexa Skills Challenge: Life Hacks のファイナリストのスキルのアイデアを見てみる

echo spotついに発表されましたね

f:id:kun432:20180621222006j:plain

それもあって、スキル作りたい熱が高まっているのだけど、肝心のアイデアが出ない。。。。ということで、USでやっているスキルチャレンジのファイナリストのスキルを見て参考にしてみたいと思います。一応テーマはライフハックということみたい(他のテーマのチャレンジもあるんですかね?)

https://developer.amazon.com/ja/blogs/alexa/post/7bb66d22-05b7-4492-aed3-aecc2a312ee6/life-hacks-challenge-finalistsdeveloper.amazon.com

ただし、USオンリーでしか試せない模様なので説明文からの推測です。(試せる方法があれば誰か教えてください、端末の言語設定だけじゃダメですよね???)


www.amazon.com

緊急時に知り合いに連絡をしてくれるスキル。予めwebサイトの方で連絡先を登録しておいて「アレクサ、ask My Buddyで全員にヘルプ」とすればメールなりSMSなりで通知が行く。特定の誰かだけを選択することも可能。また、「今日も大丈夫」みたいなのを伝えることもできるようです。緊急時にきちんと呼び出せる余裕があるのか?というのはあるけど、スマホでやるよりは圧倒的に早いでしょう。スマホの操作が苦手なお年寄りとかを想定すると音声インタフェースはいいですね。見守りは一つのジャンルですね。


www.amazon.com

「アレクサ、calm nowを開いて」というと、深呼吸とか足をブルブルする体操とか、心を落ち着けるための手法をいろいろ教えてくれる。一応、子供向けというところで作られているようで、他にも可愛いマークの子供向けスキルを作られているようですが、大人の方がむしろ必要だよねぇ。ヨガとかエクササイズとかのインストラクションをしてくれるようなスキルはとてもポピュラーなのでテーマを探せばいろいろできそうです。


www.amazon.com

いわゆる「家計簿」スキルですね。使ったものと金額を記録して、後日確認できる。すごいのは1ヶ月ぐらい記録するとパーソナライズされた消費プランのようなものを作ってくれて通知(?)してくれるみたいで、単なる音声インタフェース対応スピーカーにとどまらずに、きちんと「AI」スピーカーになっているのが良いと思います。


www.amazon.com

いろんな野菜や果物とかの切り方を動画で楽しく教えてくれるスキル、ということでecho spot/show対応ですね。動画を見てもらったほうがわかりやすい。

www.youtube.com

上で紹介したcalm nowのようなインストラクションは映像があるととてもわかり易いですね。echo spotやecho showだとまずはこういうのが増えてくると思います。


www.amazon.com

エコロジーに関するゲームスキルの様子。"Truth or Dare"という遊びがあって、truthの場合は秘密を告白する、dareの場合はなにか難しいことをやる、ということだから、alexaがなんかエコに寄与するようなハックを教えてくれるんでしょうね。会話ゲームをベースにして大人も子供も楽しみつつ、エコなテーマに取り組めるというのは社会的に良いですね。日本でやるとするならば山手線ゲームとかですかねぇ、そこまで認識スピード早くないと思うので厳しいかもですが。


www.amazon.com

家の家事を誰がやったかを記憶して、あとで、前回誰がやったか?とか今週一番やったのは誰か?とかを確認できるスキル。何かを記録するというのはポピュラーなんだけど、皿洗いとか犬の散歩とか、めんどくさいなー、と思うようなことにゲーム性をもたせて積極的にやるモチベーションを出させるというのは良いです。子どもたちが競い合ってやってくれるとお父さん・お母さんは大助かりですね。


www.amazon.com

最初に目標を設定して、日々の達成率を記録することで、今の進捗率を教えてくれるスキル。例えば、1冊の本を読むという目標に対して今日は20ページ読んだので○%達成みたいな感じかな。上のと違うのはゴールが設定されていることで、目標に向かってモチベーションを上げるという感じですね。非常にポピュラーなんだけど、永続的なデータ保存ができるとスキル開発のレベルが一段あがるのは間違いないので、少し調べてみよう。


www.amazon.com

子供がお母さんに伝えたいメッセージを話すと、メールやSMSがお母さんに送信され、それに対して返信するとechoに通知が送信されるというスキル。音声インタフェースは子供向けにとても良いし、お母さんからのレスポンスを通知として実装しているところがよいですね。ダイレクトに返せるようになるともっといいんだけどな。LINE Clovaとかだともっと直感的にできそうですね。はやくSDK公開してほしいところです。


www.amazon.com

いろんな音声データを登録しておけばポッドキャスト的に垂れ流しができるスキルの様子。コンテンツはGoogleドライブ上でOK、自分でプレイリスト作れたり、購読型のポッドキャストにも対応してたりといろいろ便利そう。これならrebuild.fmも聞けたりするかなー。Googleポッドキャスト対応したし、echoでも公式に対応してほしいなと思ったりします。echo spot/echo showだと動画とかもできそうですね。


www.amazon.com

リマインダスキルなんだけど、おもしろいのはそのToDoが達成されるまで1分間隔でスヌーズしてくれるところ。これってまさに「あと10分寝かせて〜」みたいなやつだけど、その後は容赦なく1分間隔でスヌーズされるので寝坊しなくて済みそうな気がしますw。バックグラウンドで動いてくれるわけではないとあるので、タイムアウトとかうまく対応しているということかなと思います。公式のリマインダだとスヌーズ機能はないってことかな?echo spotだと非常にほしいところだと思うのですが。


個人的には、HouseTrackerが、実装はポピュラーなんだけど、うまくユースケースに落とし込んだって感じで1票ですね。家族の課題も楽しく解決できる風景はechoのCMにぴったりな気がします。ご参考までに。

Alexaスキル開発を始めるための本を片っ端から買ってみた

最近はずーっとスマートスピーカーを触ってて、自分でスキルを作りたい、ということでいろいろな書籍を片っ端から買って読んでみたので、レビュー。これから始めてみる方の参考になれば。

## 書籍一覧

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

今んところ一番最新。いろいろ変化が激しいので新しいと言うだけで価値があるんだけど、中身も基礎知識と演習に分かれててとても良い上、細かい機能の説明や審査のステップまでカバーされていてとても良い。コードも他の本はPythonで書かれているものが多いのだけど、これは公式のSDKであるNode.jsベースになっていて、コードの中身についても解説あるし、amazon公式の情報を参考にしたりする場合でもとても都合がよい。今買うなら最もオススメ。

Alexaスキル制作テクニック (I・O BOOKS)

Alexaスキル制作テクニック (I・O BOOKS)

画面が少し古くなってるけど、カスタムスキルだけではなく、フラッシュブリーフィンスキル、スマートホームスキル、さらにAVSまでカバーされているところが良い。紙面上にコードはないけど、その分電車とかでも読みやすいサイズにまとまってるし、最後の章にあるVUIの設計の章をあえて章立てしてるところが秀逸。上のと合わせて読むのがおススメ。コードはpython

kindleオンリーかつunlimitedで読める。公式SDKCLI版ベースで書かれているのが特徴。GUI開発者コンソールとAWS Lambdaの組み合わせが標準スタイルなんだけど、やっぱりコードはgithubあたりで管理したい、デプロイもコマンドでやりたい、と思うのが人の性で、ask-cli使えばそれができます。GUIで一通りの流れがわかった後にやってもよいし、軽く触ってみたいという場合でも良いかもしれない。コードはNode.js。

AlexaとGoogle Homeの両方をカバーしているのが最大の特徴。流し読みしかしてないのだけど一通り読むと、結局どっちも自分で実装するのはJSON返すだけなんだなということがよくわかる。イラストも多いしレンタルサーバCGIで出来るので初心者の方にはいいんじゃないかと。細かい説明は少し物足りない気がするけど、Google Home向けにDialogflowについて書かれているのも良いところ。コードはpython

まださわりしか読めてないのだけど、他の本とはちょっと毛色が違って、スマートスピーカーだけでなく、スマートホームとか機械学習とかいろいろ連携したみようという感じ。イラストも多いし対話形式で書かれているので初心者向けという体裁だけど、説明はあまりないし、やることの幅は広いので、ある程度わかってないと厳しい気がする。alexaとか一通り触った後に幅を広げるために読むのがお勧めだと思います。

シェルスクリプトマガジン vol.54

シェルスクリプトマガジン vol.54

  • 作者: 當仲寛哲,しょっさん,今泉光之,福田潔,岡本秀高,米田聡,すずきひろのぶ,熊野憲辰,濱口誠一,菅雄一,伊藤貴之,楠目幹,法林浩之,山本美穂,大岩元,飯尾淳,桑原滝弥,大内智明,gori.sh,USP研究所,ジーズバンク,イケヤシロウ
  • 出版社/メーカー: USP研究所
  • 発売日: 2018/05/25
  • メディア: 雑誌
  • この商品を含むブログを見る

元はシェル芸の雑誌なんだけど、alexaとnode.jsがセットで特集になっているので、どっちも初めて、まずはさらっと始めてみたい、というのであれば、値段も安いし、実は一番オススメかもしれない。
余談だけど、昔よりも丁装よくなってて少しリッチ感ありw

## まとめ

今買うなら一番新しいはじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]が中身の構成的にもおススメかな。その他についても、まとめて読むと理解力高まるので、何冊か読んでみる事をお勧めします。

あと、基本となる音声インタフェース概論みたいなのについてはこういうのもあるみたいなので、一度読んでみようと思ってます。

AIアシスタントのコア・コンセプト―人工知能時代の意思決定プロセスデザイン

AIアシスタントのコア・コンセプト―人工知能時代の意思決定プロセスデザイン

以下は洋書のみ。洋書だとこの手のもの含めて結構種類もありますね、羨ましい。洋書でも良いんだけど少し高いんだよなー。

Designing Voice User Interfaces: Principles of Conversational Experiences

Designing Voice User Interfaces: Principles of Conversational Experiences

個人的には、Google homeに特化した書籍が出てほしい。出たら即買いします。

goで並列ping

とりあえずいろんなところを見て書いてみた。コマンドライン引数の使い方、ファイルの読み込み、並列処理、を一通り試せた感じ。

package main

import (
    "bufio"
    "fmt"
    "os"
    "os/exec"
    "sync"
)

func main() {
    // 引数処理
    args := os.Args
    fmt.Println(args)
    if len(args[1:]) != 1 {
        fmt.Println("Error! irregal arguments.")
        usage()
        os.Exit(1)
    }

    // リストファイルオープン
    r, err := os.Open(args[1])
    if err != nil {
        fmt.Println(err)
        usage()
        os.Exit(2)
    }
    defer r.Close()

    var iplist []string

    // リスト読み込み
    sc := bufio.NewScanner(r)
    for sc.Scan() {
        line := sc.Text()
        if line[:1] == "#" {
            continue
        }
        iplist = append(iplist, line)
    }

    // ping実行
    var wg sync.WaitGroup
    for _, ip := range iplist {
        wg.Add(1)
        go func(ip string) {
            defer wg.Done()
            worker(ip)
        }(ip)
    }
    wg.Wait()
}

func usage() {
    fmt.Println("[Usage] expingo IP_LIST_FILE")
}

func worker(ip string) {
    err := exec.Command("ping", "-c", "1", "-W", "1", ip).Run()

    if err != nil {
        fmt.Println(ip, " : NG")
    } else {
        fmt.Println(ip, " : OK")
    }
}
$ time go run parallel-ping.go dat/sample3.txt
・・・
192.168.4.13  : OK
192.168.4.1  : OK
192.168.4.2  : OK
192.168.4.14  : OK
192.168.4.15  : OK
192.168.4.10  : OK
192.168.4.18  : OK
192.168.4.19  : OK
192.168.4.12  : OK
192.168.1.1  : OK
192.168.4.3  : NG
192.168.4.22  : NG
・・・
real    0m3.332s
user    0m0.982s
sys     0m7.748s

700IPのリストで実際には10数台程度しかないけどすげえ速い。

pingを外部コマンドにしてるのがダサいので直したいと並列数の制御もできるようにしたい。

Goを始めるのに良いサイト&書籍

とりあえず始めだして2週間ぐらい。あんまり手を動かしていないのだけど、いろいろ見てみたり読んでみたりして、徐々に理解が深まってきたところでまとめてみる。

unlimitedで読めるのでとりあえず読んで、なんとなくフィーリングをつかむのにはよかった。

A Tour of Go

ここから始めよ、と色んな所に書いてあるので始めてみた。ほぼほぼコードも予め埋めてあるので、動かすにはいいのだけど、自分で書くという行為が少ない気がするが、たまーに入力を求められる例題は結構難しくて、個人的には微妙な感があった。

スターティングGo言語

スターティングGo言語

いわゆる言語入門書としては非常に良い内容。細かい挙動もサンプルコードがあるのでわかりやすい。ただこれで実際に何か作れるか、というと難しい気はする。もっと慣れてから読み直すと役に立つ気がする。

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

最初の方はとても良かった、というか、環境構築の話とかが多いからだと思う。後半は難しすぎてさっぱり。

これはちょっとまだ早すぎた。が、Webアプリとはなんぞや、みたいなところから書いてあるので多分良い書籍のはず。

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

Webアプリ開発なら上よりもこっちの方を先に読んだほうが良さげな雰囲気。

Go by Example

いろいろ調べていくと、最終的にココのサンプルを見る、のが良いという結論になる。

あとはQiitaとかいろいろググってサンプル見て、自分で書いてみるとかになっちゃう感じ←今ココ

結局のところ、

  • まだまだGoに関しては書籍が少ない
  • いわゆる言語入門書は1冊はやったほうが良いと思うけど、言語入門ってモチベーションわかないし、あまり選択肢もない感じ
  • 作って学ぶ、みたいなのがあるといいんだけど、Webアプリじゃない系が欲しい所。

Goの特徴活かすなら、コマンドラインのツールだったるとか、並列処理やったり、とかそういうニーズのほうが高いと思うので、そういう書籍が出れば買います。