1.21 jigowatts

Great Scott!

Java案件にアサインされた

ずっと.NETでの開発プロジェクトに携わってきたけど、ついにJava開発案件にアサインされた。Javaなんて何年も前に資格だけは取ってみたものの実際に業務で使うチャンスはなかったため、Java界隈の動向はまったくウォッチしていなかった。

ちょっと調べたら有償化されるとか人気がPythonに抜かれるとか、そんなことになっていたんすね。

これからJavaを始めるには何から手を付けたらいいかわからなかったので、以下3冊を買ってみた。しばらくは設計フェーズらしいので少しずつ読み進めていこう。

Javaエンジニア養成読本 [現場で役立つ最新知識、満載!] (Software Design plus)

Javaエンジニア養成読本 [現場で役立つ最新知識、満載!] (Software Design plus)

Spring Boot 2 プログラミング入門

Spring Boot 2 プログラミング入門

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

Cloud OnBoardに行ってきた

概要

Google Cloud Platform (GCP) トレーニングイベントに参加してきました。会社から案内がきたのですが、GCPが気になっていたのでちょうどいいタイミング\(´¬’)/

大切なお知らせ
日記なので特に内容はありません。
日記なので特に内容はありません。

Cloud OnBoard - 東京

当日

2018年4月25日、場所は渋谷で朝から大雨!電車も遅れて開始時刻ぎりぎりの到着。渋谷駅はいつまで工事してるんすかね。
f:id:sh_yoshida:20180425134614j:plain:h400

セッションは全部で4つ。

  • 入門編トレーニング「初めての Google Cloud Platform」
  • BigData 講座「GCP を活用した効率的なビッグデータの利活用方法」
  • アーキテクト デザイン講座「アーキテクチャ原則とパターンで学ぶ、実践的な GCP 使いこなし講座」
  • 機械学習 講座「エンドツーエンドで学ぶ GCP を活用した機械学習モデルの構築」

うーん、午前と午後でひとつずつしか選べない。どれも興味があったけどGCPはまったく触ったことがなかったので入門編とアーキテクトデザイン講座をチョイス。

f:id:sh_yoshida:20180425090015j:plain:h400

午前中のセッション会場。写真は中間地点から撮ったので後ろにも同じくらいの席があってかなり広い。
入門編というだけあって、ざっくりGCPの全体像がわかった気になれるセッションだった。
f:id:sh_yoshida:20180425085856j:plain:h400

Googleのインフラ投資は過去3年間で3兆5千億円。Google Cloudのネットワークは海底ケーブルで世界中と繋がっているんだって。シャークバイトに気をつけてください。

話の中でYouTubeにデータセンターツアー動画があるって言ってたけどこれかな。
www.youtube.com

お昼はお弁当とお茶が貰えました。ちらしとそぼろ弁当の二択だったけど、そぼろ一択ですよね。あっ、次回はシイタケ抜きでお願いします。
f:id:sh_yoshida:20180425125218j:plain:h400

午後は別のフロアに移ってアーキテクチャのお話。
コンピューティング、データストア、機械学習などのサービスが盛りだくさん用意されているけど、どうやって組み合わせるのかって話とセキュリティについて。
f:id:sh_yoshida:20180425132345j:plain:h400
アーキテクチャに正解はない(`・ω・´)
数ある選択肢から最適なサービスを選択できるようになりましょう。幅広く深くいろんなこと学びましょう(´・ω・)(・ω・`)

そういやどちらのセッションでもDockerやらKubernetes知ってて当たり前みたいな雰囲気で話が進んでたけど、みなさん着いていけてたんだろうか…。
私はこれから学ぶから( ^ω^)・・・

GCPとりあえず始めってみるかな(´∀`)
0→1となった有意義な一日でした。

VoiceText Web APIで遊んでみた

概要

PowerShellでVoiceText Web APIを使って遊んでみようと思い立ち、Visual Studio Code(以下VSCode)でスクリプトを書いてみました(・∀・)

f:id:sh_yoshida:20180414131937p:plain

環境

Windows10
PowerShell 5.1

VoiceText Web API

モヤさまのナレータでおなじみですね。
cloud.voicetext.jp

規約読んで利用登録してAPIキーを取得しましょう。
VSCodeを立ち上げスクリプトを書いて実行したら、わけわからんことしゃべってる?なんで?って颯爽と詰まる。

理由は日本語をしゃべらせようとして、ファイルのエンコードUTF-8のためスクリプトに書いた文字列が文字化けしたからですね。

f:id:sh_yoshida:20180414132046p:plain

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 本当にありがとうございます。