Cloud OnBoardに行ってきた
概要
Google Cloud Platform (GCP) トレーニングイベントに参加してきました。会社から案内がきたのですが、GCPが気になっていたのでちょうどいいタイミング\(´¬’)/
大切なお知らせ
日記なので特に内容はありません。
日記なので特に内容はありません。
当日
2018年4月25日、場所は渋谷で朝から大雨!電車も遅れて開始時刻ぎりぎりの到着。渋谷駅はいつまで工事してるんすかね。
セッションは全部で4つ。
- 入門編トレーニング「初めての Google Cloud Platform」
- BigData 講座「GCP を活用した効率的なビッグデータの利活用方法」
- アーキテクト デザイン講座「アーキテクチャ原則とパターンで学ぶ、実践的な GCP 使いこなし講座」
- 機械学習 講座「エンドツーエンドで学ぶ GCP を活用した機械学習モデルの構築」
うーん、午前と午後でひとつずつしか選べない。どれも興味があったけどGCPはまったく触ったことがなかったので入門編とアーキテクトデザイン講座をチョイス。
午前中のセッション会場。写真は中間地点から撮ったので後ろにも同じくらいの席があってかなり広い。
入門編というだけあって、ざっくりGCPの全体像がわかった気になれるセッションだった。
Googleのインフラ投資は過去3年間で3兆5千億円。Google Cloudのネットワークは海底ケーブルで世界中と繋がっているんだって。シャークバイトに気をつけてください。
話の中でYouTubeにデータセンターツアー動画があるって言ってたけどこれかな。
www.youtube.com
お昼はお弁当とお茶が貰えました。ちらしとそぼろ弁当の二択だったけど、そぼろ一択ですよね。あっ、次回はシイタケ抜きでお願いします。
午後は別のフロアに移ってアーキテクチャのお話。
コンピューティング、データストア、機械学習などのサービスが盛りだくさん用意されているけど、どうやって組み合わせるのかって話とセキュリティについて。
アーキテクチャに正解はない(`・ω・´)
数ある選択肢から最適なサービスを選択できるようになりましょう。幅広く深くいろんなこと学びましょう(´・ω・)(・ω・`)
そういやどちらのセッションでもDockerやらKubernetes知ってて当たり前みたいな雰囲気で話が進んでたけど、みなさん着いていけてたんだろうか…。
私はこれから学ぶから( ^ω^)・・・
GCPとりあえず始めってみるかな(´∀`)
0→1となった有意義な一日でした。
VoiceText Web APIで遊んでみた
概要
PowerShellでVoiceText Web APIを使って遊んでみようと思い立ち、Visual Studio Code(以下VSCode)でスクリプトを書いてみました(・∀・)
環境
Windows10
PowerShell 5.1
VoiceText Web API
モヤさまのナレータでおなじみですね。
cloud.voicetext.jp
規約読んで利用登録してAPIキーを取得しましょう。
VSCodeを立ち上げスクリプトを書いて実行したら、わけわからんことしゃべってる?なんで?って颯爽と詰まる。
理由は日本語をしゃべらせようとして、ファイルのエンコードがUTF-8
のためスクリプトに書いた文字列が文字化けしたからですね。
PowerShell ISEで書いたスクリプトをVSCodeで開いたらUTF-8 with BOM
となっていたので、スクリプトの中で日本語を書くときはUTF-8 with BOM
にしておけば良さそう。あとShift JIS
でも大丈夫でした。
モジュール化してみた
エンコードがUTF-8
でもコマンドレットの引数で渡すんであれば行けたのでモジュール化してみました。
環境変数にVoiceTextAPI_KEY
という名前でAPIキーを登録しておきます。
■voiceTextModule.psm1
. $PSScriptRoot\voiceConverter.ps1 function ConvertTo-Voice { param( [Parameter(Mandatory)] [ValidateSet('show', 'haruka', 'hikari', 'takeru', 'santa', 'bear')] [string] $name, [Parameter(Mandatory)] [string] $text ) begin{ } process { $Speaker = [Speaker]::new($name, $text); $Speaker.Speak(); } end { } }
■voiceConverter.ps1
バージョン5からクラス構文も書けるようになったんすね。
Write-Host 'Loading...' class Speaker { [string]$Name; [string]$Text; [string]$Uri = "https://api.voicetext.jp/v1/tts"; Speaker ($name, $text) { $this.Name = $name; $this.Text = $text; } [string] GetAuthorization() { $t = $env:VoiceTextAPI_KEY + ":"; return "Basic " ` + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($t)) } [void] Speak() { $outFile = ".\voicetext.wav" if (Test-Path $outFile){ Remove-Item $outFile; } Invoke-RestMethod -Uri $this.Uri ` -Method POST ` -Headers @{Authorization=$this.GetAuthorization()} ` -Body @{text=$this.Text; speaker=$this.Name;} ` -OutFile $outFile; $player = New-Object System.Media.SoundPlayer -ArgumentList $outFile $player.Play() } }
あとはモジュールをインポートして実行するだけ(^q^)b
PS> Import-Module .\voiceTextModule PS> ConvertTo-Voice -name show -text 本当にありがとうございます。
実行ポリシーについて
概要
PowerShellスクリプトを実行したらなんか実行が無効だってエラーが出たよ!それは実行ポリシーのせい。ありがたいけど、ちょっと面倒な実行ポリシーについてです。
> .\hoge.ps1 .\hoge.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\src\hoge.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。 発生場所 行:1 文字:1 + .\hoge.ps1 + ~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
実行ポリシーについて
スクリプトを実行する際の条件設定が以下の6種類存在する。デフォルトではRestricted
となっているためスクリプトを実行することができない。誤操作防止的な理由ってことかな。
- Restricted: 構成ファイルの読み込みやスクリプトの実行を行いません。既定値は "Restricted" です。
- RemoteSigned: インターネットからダウンロードされたすべてのスクリプトおよび構成ファイルが、信頼された発行元によって署名されていることを要求します。
- Unrestricted: すべての構成ファイルを読み込み、すべてのスクリプトを実行します。インターネットからダウンロードされた署名されていないスクリプトを実行する場合、スクリプトを実行する前に確認を求められます。
- Bypass: 何もブロックされず、警告もメッセージも表示されません。
https://technet.microsoft.com/ja-JP/library/dd347628.aspx
- Undefined: 現在のスコープから現在割り当てられている実行ポリシーを削除します。このパラメーターは、グループ ポリシー スコープ内で設定された実行ポリシーは削除しません。
実行ポリシーの確認
現在の実行ポリシーを確認するには以下のコマンドレットを実行する。-List
パラメータを渡すと優先順で実行ポリシーの一覧が取得できるぞ。
> Get-ExecutionPolicy Bypass > Get-ExecutionPolicy -List Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Bypass CurrentUser RemoteSigned LocalMachine Restricted
実行ポリシーのスコープはProcess
はメモリに、CurrentUser
とLocalMachine
はレジストリに格納される。また、グループポリシーでも設定することができる。
実行ポリシーの設定
実行ポリシーを変更したい場合は、管理者権限でPowerShellを起動しSet-ExecutionPolicy
コマンドレットで変更することができる。ただ、ポリシー的に実行後に設定を戻しておいたほうがいいかも。
後でだと結構忘れちゃうんで-Scope
パラメータで特定のセッションに対してのみ変更をするほうがよさげ。これなら管理者権限でなくても変更できるし: )
> Set-ExecutionPolicy -Scope Process RemoteSigned -Force
PowerShell起動時に-ExecutionPolicy
パラメータで指定してもOK。設定したポリシーは閉じるときに削除される。以下はコマンドプロンプトからスクリプトを実行する例。
CMD> PowerShell -ExecutionPolicy Bypass -file .\hello.ps1
実行ポリシーはひと手間かかるけど、間違えて.batファイルを実行して血の気が引く思いをするよりかはマシかも?