あじゅらーの成長日記

にわかITインフラエンジニアがMicrosoft AzureなどIT関係全般を綴ります。

趣味がない人はランニングを趣味にしよう!

趣味が見つからず何か趣味を始めたい。 そのように考えている人も多いのではないのでしょうか。

そんな人には是非ランニングを始めることをおすすめします。 大学を卒業してランニングを始めた僕が、ランニングをおすすめする理由を紹介します。

ランニングをおすすめする理由

痩せる

ランニングを継続的に行うと間違いなく痩せていきます。

ランニングで消費するカロリーは

距離(km)✕体重(kg) = 消費カロリー(kcal)

で計算することができます。 例えば体重70kgの人が10km(大体一時間くらい)走ると700kcal消費することができ、週に2回走るだけで一月でおおよそ1kgの脂肪を燃焼することができます。
ダイエッターにもランニングはおすすめする痩せる方法です。

疲れにくくなる

ランニングしていると体力がついてきます。 日常生活の階段等で疲れることも少なくなります。 普段走っている距離より全然少ないですからね。(笑)

行きたい街が増える

ある程度走れるようになると知らない街を走るのがとても楽しみになります。 僕は東京に住んでいるのですが、東京を走り回るのも楽しいですし、全く知らない街を走るのも楽しいです。 たまの旅行や出張がある場合には、必ずランニングシューズを持っていき走るくらい知らない街を走るのが楽しくなります。

旅行に行きたくなる

知らない街を走るのが楽しいので、知らない街に行きたい欲望が出てきます。 特に海外でのラニングは格別です。

練習を重ねていき、ハーフマラソンやフルマラソンくらいの距離を走れるようになると、各地で大会があるのでマラソン大会に出るようになります。 毎年の楽しみがマラソン大会になっていきます。

ランニング仲間ができる

ランニングをきっかけに色んな人と仲良くなることができます。
実際私も職場の先輩、後輩や同期など、色んな人と仲良くなり、休日に一緒にランニングしてお酒飲んで友好を深めました。

またSNSでも仲良くなることがあります。 Instagramには日々ランナーが楽しいランニングの軌跡を投稿していますので是非フォローしましょう。 ランナーに悪い人はいないので、大体の場合は仲良くなることができます。

地理に詳しくなる

ランニングしているととても地理に詳しくなります。 僕は東京に住んでいるのですが、東京を走りすぎてか23区であれば地図なくても目的地にたどり着くことができます。

彼女とデートしている時に方向感覚があることをアピールして彼女から高評価もらいましょう。

思考を整理できる

ランニング中は思考の整理のタイミングを行うチャンスです。 私はランニング中によく仕事のことを考えて思考の整理をしています。

  • 将来自分がどうなりたいか
  • 今のPJをどうしたらうまく進めるか
  • これから身につけたいスキルは何か

とか考えて走ります。
もちろん何も考えず景色を観ながら走ることもしばしばあります。

達成感を味わえる

日常生活ではなかなか達成感を味わうことができません、ランニングは簡単に達成感を味わうことができます。

  • 一日に走った距離
  • 月間距離
  • タイム

色んなKPIで達成感を味わうことができます。

食事を美味しく感じる

ランニングは圧倒的にカロリーを消費するので、その後の食事はとても美味しいです。 お酒もあればなおのこと美味しいでしょう。

休日は朝から昼にかけてランニングして、ランニング終わりでお酒飲むことが大好きです。

まとめ

いかがでしたでしょうか。
みなさんも是非ランニングを初めて、有意義な人生を過ごしてください。
では。

【Azure】Azure Cloud Shellがプレビューになりました。

2017/5/10にAzure Cloud Shellがプレビューしました。

これはAzureポータル上から利用できるShellベースのコンソールで、わざわざローカルマシンで実行しなくても管理系のコマンドが利用できるようになるものです。

とても便利な機能になりますので紹介いたします。

Azure Cloud Shellの利用方法

MicrosoftのDocumentは以下になります。

https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview

Azureポータルにログインして上部の_>ボタンをクリックします。

f:id:hayato320:20170614214540p:plain

はじめに$HOMEディレクトリの永続化を行うための設定画面が入りますが、その後ポータル下部にShell画面が登場します。

f:id:hayato320:20170613231824p:plain

この画面で.NET、Go、Node.js、Pythonのコマンドを操作することができます。
また、azコマンドを実行する際にわざわざログインコマンドを実行しなくてもAzureポータルにログインしているユーザーでコマンド実行をすることができます。

手打ちでコマンドを実行しても良いのですが、ファイルをアップロードして実行することもできます。
アップロードやダウンロードするには以下のコマンドを実行してマウントします。

clouddrive mount -s [mySubscription] -g [myRG] -n [storageAccountName] -f [fileShareName]

[mySubscription]:共有ファイルをマウントするサブスクリプションのIDです。
[myRG]:上記サブスクリプションIDに紐づくリソースグループす。
[storageAccountName]:上記リソースグループに作成したストレージアカウントです。
[fileShareName]:上記ストレージアカウントに作成した共有ファイル名です。

事前にスクリプトを作成しておいてアップロードして実行するのが良さそうです。

まとめ

Cloud Shellは現在Bash環境をサポートしておりますが(プレビューですけど)、今後はPowershellも使えるようになるようです。
簡単なスクリプトならCloudShellを使用して実行するのが良さそうです。

Bluetoothで整えるのが最強のPC環境かもしれない

今年は僕の中でBluetooth元年と言えるくらい色んなデバイスをBluetoothのデバイスに買い替えています。

PC環境周りも同様でマウスやキーボード周りのBluetooth接続に切り替えており、今日は皆にも快適になってもらうべく僕のPC周りの環境を紹介したいと思います。

逆にこのデバイスをこれに変えると便利だよとか、これを買い足すと捗るよなど色々意見を伺えるとうれしいです!

僕のデスクトップの紹介

f:id:hayato320:20170611163443j:plain

MacBook Pro 15

f:id:hayato320:20170611164758j:plain

作業はすべてこのMacBook Proで行っています。
外で作業するときもこのMacBookPro 15インチを持ち運んで作業します。
重さは1.8kgですが、本体が薄いため全然重さを感じません。

控えめにいって最高です。

Spinidoのノート PC スタンド

MacBook Proを載せているのがSpinidoのノート PC スタンド

f:id:hayato320:20170611164943j:plain

外付けディスプレイにMacBook Proを接続すると外付けディスプレイと高さが合わず、作業がしづらいです。
このノートPCスタンドがあると、外付けディスプレイと高さを合わせることができるので、作業が捗ります。
また、スタンドの下にはキーボードを収納できるスペースがありますので、作業が終わったわキーボードを収納できるため、机がとてもスッキリしますね。

マウスはApple Magic Trackpad 2

さっきの写真の下にちょっと写っているのですが、マウスは Apple Magic Trackpad 2 を使っています。

f:id:hayato320:20170611171509j:plain

このアイテムをとても素晴らしいアイテムです。
まるでMacBook ProのTrackpadがリモートで使える、そんなアイテムです。

キーボードはHappy Hacking Keyboard

Trackpadと同じようにBluetooth接続して利用しているのが、 PFU Happy Hacking Keyboard Professional BT です。

f:id:hayato320:20170611171731j:plain

仕事で有線のHHKBを使っており、その使い心地にほれて家用にも購入しました。
一度このキーボードを使うと他のキーボードが使用できなくなるくらい最高のアイテムです。

ディスプレイはiiyama IPS モニター ディスプレイ

次に紹介するのがメインのディスプレイの iiyama IPS モニター ディスプレイ です。

f:id:hayato320:20170611172225j:plain

このディスプレイはFullHDなので悪くはないのですが、RetinaディスプレイのMacBook Proと比べると残念ながら天と地ほどの差があります。笑

今後買い替えるとしたらこのアイテムですかね。

デスクは無印良品

これらすべてのアイテムを乗せているデスクがこれ。

https://img.muji.net/img/item/4934761361901_1260.jpg

無垢材で落ち着く見た目のデスク。

椅子も同じ無垢材のため、まるで気分はおしゃれなカフェに居るような気分で作業ができます。

まとめ

今回は僕のPC環境を紹介しました。

キーボードやマウスはBluetoothで接続しているため、見た目がスッキリしてとても心地よく作業ができています。

普段はこのデスク周りで作業することが多いので、PC環境周りは妥協せず整えていくつもりです。

格安SIMでも爆速!IIJmioからLINEモバイルにMNPしてみた

まさかこんなに快適になるとは思いませんでした。

昨年4月にNTTdocomoからIIJmioにMNPして格安SIMデビューしました。

はじめはとても快適に過ごしていたのですが、IIJmioが有名になるにつれてか、どんな時間帯でもとてもじゃないけど満足に利用できない速度になってしまいました。。。

そこで思い切って、通信速度にとても定評があるLINEモバイルにMNPしてみました!

まさかこんなに快適になるとは思いませんでした。

Amazon CAPTCHA

圧倒的に速い通信速度

まずはMNPしてからのLINEモバイルの速度がこちら。 格安SIMとは思えない速度が出ています。 f:id:hayato320:20170609225228p:plain

IIJmioのときの速度がこちら。
左にアンテナマークが立っているのがIIJMioです。
WI-FIマークは自宅なので無視してください。
f:id:hayato320:20170609225456p:plain

下りが数Mbpsしか出ていないですね。
IIJmioはテザリングができるので、休日はよくPCをもってカフェで作業するのですが、ページを読み込めないこともしばしばありました。
LINEモバイルに変えてからはそのようなことは起こっていません。
とても快適にテザリングできています。

MNP方法

Amazon等でエントリーパッケージを購入して手続きすると、事務手数料が1/3になります。
時間に余裕がある方はこちらでも良いでしょう。

僕はあまり時間に余裕がなかったのでビックカメラのLINEモバイルカウンターで開通処理を行いました。
LINEモバイルカウンターでは即日開通が可能です。
なお、エントリーパッケージを購入して届いてから申し込み手続きを行い、SIMが手元に届いて開通するまで数日以上はかかるようです。

LINEモバイルカウンターで申し込むと手続き開始から手続き終了までとても短い期間で終了することができます。

日時
2017/6/1 3:47 MNP 予約番号発行お申し込み(IIJmio)
2017/6/1 23:00 MNP 予約番号発行完了(IIJmio)
2017/6/2 20:07 MNP 転入手続き完了(LINEモバイル)

MNP 予約番号発行申し込みから、MNP転入完了まで2日で完了しました。

カウントフリーが素晴らしい

LINEモバイルはLINE、Facebook、Twitter、Instagramで発生した通信料は購入した通信料にカウントされません。
テザリングを行っていてもカウントフリーになります。

これは本当に素晴らしいです。
ゲームをやらない僕は基本的にLINE、Twitter、Instagram、はてブ、インターネットブラウジングくらいしかしません。
カウントフリーでSNSを利用できるのはとても嬉しいですね。

ヘルプや契約者情報はLINEで

利用した通信量の確認やLINEモバイルに関する問い合わせはLINEから行うことができます。

あと、他の格安SIMはLINEの年齢認証ができないのですがLINEモバイルに限ってはできます。

LINEのID検索を使用する人にはとても良いですね。

料金

LINEモバイルと一番近いIIJmioのプランの料金比較すると同じ金額で使えます。
LINEモバイルの方が1GB分使える容量少ないけど、カウントフリー分があるので人によっては通信料もお得かもしれません。

LINEモバイル IIJmio
2,220円 2,220円
5GB 6GB

まとめ

格安SIMを使うと通信速度が遅いと考えてしまう人がいますが、LINEモバイルはびっくりするくらい速いです。

テザリングもできるし、とてもおすすめの格安SIMです。

みなさんもぜひLINEモバイルを使って、爆速な格安SIMライフを手に入れましょう。

SONYワイヤレスノイズキャンセリングヘッドホン MDR-1000Xが最高すぎてヤバイ!(レビュー)

とんでもないヘッドホンと出会ってしまいました。

SONYのヘッドホンでBluetooth接続、それでいてノイズキャンセリング付きのヘッドホン。

MDR-1000Xです!!!

Amazon CAPTCHA

f:id:hayato320:20170609220921j:plain

f:id:hayato320:20170609220904j:plain

とにかくノイズキャンセリングがすごい!

ノイズキャンセリングがすごいのです。

ノイズキャンセリングといえば、今まではBoseが他の追随を許さないくらい圧倒的な性能を誇っていました。

そのBoseと匹敵する、もしくはそれを凌駕するほどのノイズキャンセリングの性能です!!!

  • ユーザーの装着状態に合わせてノイズキャンセリング機能を最適化する「パーソナルNCオプティマイザー」
  • より静かな環境で音楽を楽しめる「デュアルノイズセンサーテクノロジー」
  • 周囲の騒音に適したモードを自動で選択する「フルオートAIノイズキャンセリング機能」

家にいても電車に乗っていてもうるさい家電量販店でもびっくりするくらいの静寂を手に入れることができます。

SONY音質が素晴らしい!

Boseの音質も素晴らしいのですが、どうも好きになれずQuietComfort 35を購入することができませんでした。

SONYのかっちりとした重低音で、高音もしっかりなる音質が好きなのです。

  • ワイヤレスでもハイレゾ相当の高音質
  • 高音質コーデック「LDAC」に対応

しかもノイズキャンセリングがあるので、静寂な環境でSONYの音質が楽しめるのはとても素晴らしいと思います。

耳元操作が素晴らしい!

耳元操作が素晴らしいです!

スマホを操作しなくてもヘッドホンで音量アップ/ダウンや曲送り/戻しなどができます。

http://www.sony.jp/products/picture/original_MDR-1000X_003.jpg

わざわざスマホをいじらなくても色々操作できるのはとても助かりますね!

まとめ

私は普段iPhone7 やMacbook Proと接続して使用しているのですが、音が切れることがなく遅延もなく、本製品を購入してからとても快適に過ごしております。

みなさんもぜひ快適な日常を手に入れてください!では!

【まとめ】Global Azure Bootcamp 2017@Tokyo

Global Azure Bootcamp 2017@Tokyoに参加してきたので、内容を備忘録も兼ねてまとめます。
重要そうなところを抑えつつ、気になったところをまとめていきたいと思います。
(★〜)は僕のコメントです。

<目次>

Azureって何よ2017年の最新情報をゆるまとめ

スライド

https://www.slideshare.net/jazug_girls/azure2017

メモ

  • BLOBストレージアカントだとHOTとCOOLを使い分けることができるが、Page Blobはない。つまりVMのディスクは格納できない。
  • Managed Disksが登場したおかげて、ストレージアカウントを意識しなくてよくなった。
  • Marketplace/カスタムイメージを扱いやすくなった。
  • VMディスクの暗号化ができるように。(201609GA)。ただしKey Vaultが必要。
  • App Service
  • Web Apps
  • Mobile Apps
  • Logic Apps(201607GA)
  • API Apps(201608GA)
  • My SQL in App.Web Apps内で利用できるローカルのMySQLインスタンス。(201703GA)
  • 高度なアプリケーション再起動のより、自分で設定した秒数によりアプリを再起動できる。アプリの全断を避けられる。
  • Functions(201611 GA)
  • サーバーレスで処理の実行が可能。
  • FunctionsがVSを使ってローカルで開発できるようになった。
  • Face API(201704 GA)
  • Av2,Dv2(汎用型),F(コンピューティング最適化),L(ストレージ最適化),N(GPU),G(最適化されたメモリと),H(ハイパフォーマンス)
  • VNET Peering.VNET同士の接続が可能に。(★今までも vnet to vnetでできたのでは?)
  • シングルインスタンスでSLAの対象になったインスタンスも。
  • リージョン自体の切り替えはMS側で判断するため、ストレージの切り替えは個別に行われない。
  • azure security centerを使うとポチポチとウイルス対策ソフトをインストールしたりできる。

    Azure 2017年3月障害Deep Dive

    スライド

    https://www.slideshare.net/YutoTakei/azure-75296598

    メモ

  • Azure.moe slack channel(auto invite)
  • ラジオをやっている。毎週木曜日12時。
  • 議題は3月の一回目の東日本のストレージ障害。
  • Root Cause Analysisが大きな障害が発生した場合は公開される。
  • RCAを理解するにはStream Managerの理解が大事なので、Stream Managerが何をしているものか理解するのが目的。
  • ストレージ内にあるオブジェクトに対してのURLはそのままURIになるように設計されている。
  • ストレージの構成
  • ロケーションサービス
  • VIP
  • ストレージスタンプはラック10-20本くらいのサーバの塊
  • フロントエンドレイヤ
  • パーティションレイヤ
  • ストリームレイヤ
  • ロケーションサービスはURLの中身がどこにあるか知っている。
  • Frond End Layer
  • ユーザーからの要求を受け付ける役目
  • パーティションの名前とパーティションが存在しているサーバーとのマッピングを保持して管理している。
  • Partition Layer
  • データの管理(blob,table,queue,file)
  • 強い一貫性を確保する。(★多分書き込み完了するまで、古いの見せるとかなんだろう。)
  • 分割によるスケーラビリティの実現
  • Stream Layer
  • 最終的にデータを永続化する役割
  • データセンタ内で3つのレプリカを作成して維持する。
  • GRSのレプリケーションはPartition Layer。LRSはStream Layer.
  • スタンプ内レプリケーション
  • HW障害のためのデータ耐久性の保持が目的
  • レプリカは同期
  • Stream Layer スタンプ間レプリケーション
  • レプリカは非同期
  • Partition Layer
  • Paxosプロトコル
  • 合意を形成するためのプロトコル
  • 複数の参加者の間で、ある1つの結果について承認を得ること
  • Stream Managerはストリーム、エクステントを管理する。
  • エクステントノードはエクステントとブロックを管理する。
  • Stream Managerへの要求はPartition Layerから。
  • プライマリ1個とセカンダリー2個を決めてPaxosクラスタを形成する。
  • パーティションレイヤがデータを書き込む際にはStream Managerは介在しない。
  • あるエクステントが壊れたらStream Managerがプライマリのエクステントノードに新しく用意したエクステントノードにレプリケーションを支持。
  • (★東日本のRCAに戻ると、「Stream Managerが不健全な状態になったから、エクステントノードに命令が出せなくて落ちた」ということかな?)

    bitFlyerを支える仕組み - Azure障害の中1時間未満でサービス復旧を実現-

    スライド

    まだ公開されていません。

    メモ

  • マイクロソフトのページに事例紹介あり。
  • ビットコインのシステムをAzure上で運用
  • 2016/9/15 DNS障害
  • システム上で発注が一切出せなくなった。
  • 緊急時にはIP直打ち、DNS冗長化が良い?
  • 2017/3/8 東日本ストレージ障害
  • Redis Cacheが死ぬ。
  • Azure Statuで東日本ストレージ障害を確認。
  • 西日本に切り替えた。
  • Multi-AZ構成を事前に検討することが大事
  • 影響範囲と依存関係の明確化。
  • 緊急時手順と予行演習をしていないと見落としがある。
  • 2017/3/28 西日本ストレージ障害
  • Redis Cacheが死ぬ。
  • AWSでは警告アイコンがS3に入ってて出せなかったが、Azureはでた。
  • (すぐに東、西を切り替えられたのはすごい)
  • 2017/3/31 東日本ストレージ障害
  • 22:44に未処理の注文がキューにたまり、監視システムからアラート
  • 22:54 Cloud ServiceのVMに接続ができなくなる。Azure Statusページ確認は「正常稼働」
  • 23:13 Azure Statusページ確認は「正常稼働」.DB以外を西へ移行開始した。
  • 23:28 Azure Portal「東日本サービスが停止しています」
  • サポートに問い合わせするもイケてない。
  • ジオレプリを使っても死ぬときは死ぬ。
  • GRSは実は発動したことはないらしい。(勝手にMSが切り替えるもの?)
  • DNSの設定変更を忘れることなく。必要なところはTTLを短く。
  • Redis Cache
  • 起動までに30分かかるので、事前に作っておくことなども考慮したほうがよい.
  • Geoレプリ
  • とりあえずFailoverしてからスケールアップ
  • SQL Database
  • 1つのDBから同時コピーすると遅くなる。
  • コピーよりgeoリストア推奨
  • コピー元DBでreconfigurationが発生していた。それによりDBのコピーに時間がかかってしまった。
  • SQL Databaseクエリプランの強制に失敗する場合がある。
  • SQL Databaseはセカンダリもプライマリと同じ100%.
  • (QA)返金は障害があった翌月までにSRをサブスクリプションごとにあげる必要がある。
  • (QA)プレミアじゃないとサポートは過去の情報が引き継がれない。
  • (QA)3つのリージョンでサービスを提供して、2/3返ってきたらOKという構成にしてはいかがですか。

    サポートエンジニアが紹介する、Azure Portal/CLI 使いこなし

    スライド

    https://docs.com/tanaka-takayosh/a8d11684-d658-4789-9405-744106cbbb96/2017-04-22-azure-portal-cli

    メモ

  • 最近はAzure CLI 2.0推しを感じる。
  • Azure CLI Shell 2.0もGAした。コマンドの補完もしてくれるしとても便利そう!
  • リソースはタスクごとに作成している。新しい機能を調査する場合も新しいリソースグループで。
  • レイテンシーが気にならない場合は一番安いwestus2か少し安くレイテンシ遅くないjapanwestに。
  • 無駄遣い帽子のために、Azure Automationで定期削除を。
  • Azure AutomationはAzure版のタスクスケジューラ。実例入りのドキュメントもたくさん。高度な作業はDSC、単純作業はRunbook。
  • UnmanagedなVMにManagedなDiskはattachできない。
  • MarketplaceのVMがもともとUnmanagedだとManagedにするには変換が必要。
  • Managed Diskはさいずによる課金が階段状.32GBと33GBの値段は倍。(standard)
  • Azure上ではOSディスクのLVNは非推奨
  • OSディスクをLVMにするとUUIDがかぶるので復旧が大変。
  • OS Diskの暗号化はディストリビューション次第.
  • ImageからVMを作成する際は予約語を使うとMarketplaceのものが使用される可能性がある。
  • 課金明細をダウンロードしてあたりを付けてからサポート問い合わせすると楽。

    Azure ML系 「practice over theory」

    スライド

    https://docs.com/user142134/1717/japan-azure-boot-camp

    メモ

  • Cortana Intelligence GalleryにMLのサンプルがたくさんおいてある。
  • Cognitive Servicesは英語版の方がデモ環境が整っている。
  • BotFrameworkでQ&AをBot化できる。
  • BotFrameworkはWest USリージョンが良い。裏で動いているファンクションが同一リージョン。

    DocumentDB DeepDive

    スライド

    まだ公開されていません。

    メモ

  • SQLでクエリができるスキーマフリーなNoSQL
  • 勝手にindexing
  • レイテンシが保証されている。
  • Read:<10ms,write:<15ms
  • Partition KeyによってどこのPartitionが使われるかが選択されるため、Key選びは大事。
  • 全体に負荷がかかるよなkeyにする。
  • トランザクションはPartitionをまたげないので、Partition Keyの選択は大事。
  • Partition key rangeを取得することができる。
  • Partition切る設計を間違えると、思い通りの性能がでない。 
  • クエリにPartition Keyを指定しないとクライアント側で処理が必要で大変。

オルターブースさんのAzure事例(松村さん、森田さん.NET CoreとACS、Web Apps)

スライド

メモ

  • Web AppsをフロントにバックはAPIを呼び出す方式。
  • ログはfluentdを動かしてelasticsearchに入れて、kibanaで可視化。
  • エンドポイントの監視はZABBIX.結果はslackに
  • コンテナの監視はOMS.ZABBIXのリソース監視はうまく動かなかった。
  • Route53からプライマリでWebApps、セカンダリはCloudFront.
  • Route53はAlias機能でZone Apexが使えた。Azure DNSとTraffic Managerは使えなかった。
  • チケット管理はBacklog.プルリクストはコードレビュー。
  • Backlogの通知が多すぎるから、Web hookからAzure Functionを使って個人のSlackに通知。
  • Docker pullでAzure Container Serviceにデプロイ。
  • リリース管理はGit Tag.
  • Tagは2種類(staging/honban)
  • tagの指定で本番デプロイ
  • chromeの操作履歴をトレースして負荷テストできる。VS Team Testの機能
  • 自社サービスで徹底的にいばらの道を楽しむ。受託開発は安定.
  • アイデアソンは肉食べながら、寿司食べながら、ビール飲みながら。
  • Dockerを使った本番運用は調べても全然出てこない。
  • (QA)DockerがHostプロセスを巻き込んで死ぬ減少があるがどうか。->今のところない。

Application Insights Profiler

メモ

  • App Insightsはポータルからぽちぽちして作れる。
  • Site Extension(App insightsとProfiler)を入れると使える。
  • ポータルからインストールすると表示上は失敗するが、裏では動いていてインストールできる。
  • Windowsのイベントログも見れるようになる。

    DocumentDBとFunctionsの良い関係

    メモ

  • DocumentDBはレイテンシが早い、スケーラビリティがある。
  • 429問題で苦労した。キューを使ってRUの調整。

    Azureにフィードバックしよう

    メモ

  • フィードバック方法はフィードバックサイトに投げましょう。
  • https://feedback.azure.com/
  • BUG対応もしてくれる。
  • 最悪日本語でOK.

    Azure Media Serviceで初めてPower Apps使ってみた

    メモ

  • プログラムしなくても動画配信ができる。

    Kubernetes Helmから始めるコンテナ生活

    メモ

  • Kubernetes
  • コンテナオーケストレーション
  • Helmを使うと管理が簡単に。
  • Helmを使うと使いたいアプリのデプロイが簡単.

    その他

  • JAZUG TOKYO NIGHT 6/22(木)
  • JAZUG 女子部主催 インフラ野郎 5/17(水)

【Azure】Azure Translator Text API使ってみた!

ひょうんなことからAzure Translator Text APIに興味を持ったので、どのようなサービスか、実際の使い方など調べてみました。
同じようにAzure Translator Text APIを使いたい方の参考になれば幸いです。

<目次>

概要

Azure TranslatorはREST APIで呼べるAzureの翻訳サービスです。

docs.microsoft.com

マイクロソフトのTranslator APIは今までは統計的なマシンラーニングを使っていたようですが、最近ニューラルネットワークに置き換えられたそうです。

それだけでも随分精度が上がったそうですが、 Collaborative Translations Framework (CTF)という仕組みでユーザーが翻訳エンジンに翻訳結果をレーティングでできるような仕組みとなっています。

Azure Translatorを使うには

以下の手順で作成していきます。

  1. Azureにサインイン

  2. Microsoft TranslatorをSubscribeする。

  3. Authentication Keyを発行する。

  4. 実際にAzure Translatorを使う。

Azureにサインインする部分は省きます。

Azure TranslatorはCognitive Serviceの一部なのでCognitive Servicesから作成します。

f:id:hayato320:20170421155905p:plain

f:id:hayato320:20170421160317p:plain

f:id:hayato320:20170421160528p:plain

Translatorを作成するとキーを取得できるようになります。
このキーは使用してREST APIを発行するので、このキーは重要です。

f:id:hayato320:20170421161350p:plain

さて、3まで完了したので、実際にTranslatorを呼び出してみましょう。 githubにマイクロソフトのサンプルコードがあるので、今回はその中からpythonを使います。

https://github.com/MicrosoftTranslator

"""                                                                                                                                                                                                                                          
Example application showing the use of the Translate method in the Text Translation API.                                                                                                                                                      
"""

from xml.etree import ElementTree
from auth import AzureAuthClient
import requests

doItAgain = "yes"

def GetTextAndTranslate(finalToken):

    fromLangCode = " "
    toLangCode = " "
    textToTranslate = " "

    print " "
    print "   Language List"
    print "     English"
    print "     German"
    print "     Italian"
    print "     Spanish"
    print "     French"
    print "     Japanese"

    # Get the source language                                                                                                                                                                                                                 
    while (fromLangCode == " "):
        sourceLang = raw_input("Type the name of a language from the list that you want to translate from: ")

        if (sourceLang == "english") or (sourceLang == "English"):
            fromLangCode = "en"
        elif (sourceLang == "German") or (sourceLang == "german"):
            fromLangCode = "de"
        elif (sourceLang == "Italian") or (sourceLang == "italian"):
            fromLangCode = "it"
        elif (sourceLang == "Spanish") or (sourceLang == "spanish"):
            fromLangCode = "es"
        elif (sourceLang == "French") or (sourceLang == "french"):
            fromLangCode = "fr"
        elif (sourceLang == "Japanese") or (sourceLang == "japanse"):
            fromLangCode = "ja"
        else:
            print " "
            print "You need to pick a language from the List"

            raw_input("Press any key to continue")

    print " "

    # Get the destination language                                                                                                                                                                                                            
    while (toLangCode == " "):
        destLang = raw_input("Type the name of a language from the list that you want to translate to: ")

        if (destLang == "english") or (destLang == "English"):
            toLangCode = "en"
        elif (destLang == "German") or (destLang == "german"):
            toLangCode = "de"
        elif (destLang == "Italian") or (destLang == "italian"):
            toLangCode = "it"
        elif (destLang == "Spanish") or (destLang == "spanish"):
            toLangCode = "es"
        elif (destLang == "French") or (destLang == "french"):
            toLangCode = "fr"
        else:
            print " "
            print "You need to pick a language from the List"

            raw_input("Press any key to continue")

    print " "

    textToTranslate = raw_input("Type the text that you want to translate:  ")

    print " "

    # Call to Microsoft Translator Service                                                                                                                                                                                                    
    headers = {"Authorization ": finalToken}
    translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text={}&to={}".format(textToTranslate, toLangCode)

    translationData = requests.get(translateUrl, headers = headers)
    # parse xml return values                                                                                                                                                                                                                 
    translation = ElementTree.fromstring(translationData.text.encode('utf-8'))
    # display translation                                                                                                                                                                                                                     
    print "The translation is---> ", translation.text

    print " "


if __name__ == "__main__":

    client_secret = 'YOUR SECRET KEY'
    auth_client = AzureAuthClient(client_secret)
    bearer_token = 'Bearer ' + auth_client.get_access_token()

    while (doItAgain == 'yes') or (doItAgain == 'Yes'):
        GetTextAndTranslate(bearer_token)
        print ' '
        doItAgain = raw_input('Type yes to translate more, any other key to end: ')

    goodBye = raw_input('Thank you for using Microsoft Translator, we appreciate it. Good Bye')

githubにあるauth.pyも同フォルダに置く必要がありますが、かなりシンプルなコードですね。

実際に実行してみるとこんな感じです。
日本語から英語に翻訳できているのがわかります。

$python MTPythonSampleCode.py
 
   Language List
     English
     German
     Italian
     Spanish
     French
     Japanese
Type the name of a language from the list that you want to translate from: Japanese
 
Type the name of a language from the list that you want to translate to: english
 
Type the text that you want to translate:  こんにちは
 
The translation is--->  Hello

もちろん単語ではなく文章も翻訳できます。

python MTPythonSampleCode.py
 
   Language List
     English
     German
     Italian
     Spanish
     French
     Japanese
Type the name of a language from the list that you want to translate from: Japanese
 
Type the name of a language from the list that you want to translate to: English
 
Type the text that you want to translate:  私はAzureが好きです。
 
The translation is--->  I like Azure.
 

料金

200万字までは無料のプランで使用することができます。
使用する量に応じて料金が発生しますが、翻訳ロジックを簡単に使用できるのはとてもうれしいですね。

https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/translator-text-api/

まとめ

今回はCognitive Servicesの中からTranslator Text APIを使ってみました。
Translatorには他にもTranslator HUBというものがあり、こちらだと学習させながら精度を上げることが可能になります。
Translator HUBについてはまたどこかで。