仕事の備忘録

IT系技術とか、カスタマーサービスとか

初めて仕事で Microsoft Azure を使っている

私はTwitterのプロフィールにも書いているがMicrosoftが好きである。20年以上前のことを書かせてもらう。昔話になる。

本当に私は入社時システム開発に向いてないと思われていたし、自分もそう思っていた。大学は理系だったが、授業で習うホスト機でのプログラムを全く面白いと感じがことがなく最低限しかやらなかった。当時国立大でも情報処理の勉強はホスト機が主流だった。PC-9801でのゲームは高校の部活で遊んでいた程度でプログラムを学生時代にやることはなかった。

そんな私にプログラムが面白いと思わせてくれたのは、会社に入って2年目に国内発売されたばかりの日本語版Visual Basic 2.0 だった。というか、Cを研修で習っても全く頭に入らず困っていた私に上司が「お前はGUIのほうが向いている」と言って買ってくれたのだ。

当時まだまだホスト機全盛で、ホスト機を貸し出すだけで儲けが出る状態。一方ホスト機以外、Unix系OSやMS-DOSなどを使うコンピューターを「オープン系」と呼んでいたが、会社内では「子供のおもちゃ」とホスト機部署の人たちに揶揄されていた。そのおもちゃの筆頭がWindows 3.1 だった。

でも、そのおもちゃのおかげで、Cを挫折した私は自分でPCを買うくらいにプログラムが好きになった。香取慎吾が10代の頃にCMをしていたIBMのPCを購入したのはこのころ。36万したので物価を考えると当時のボーナスをそれにあてたはずだ。そのPCにインストールを最初にしたのがVisual Basic 2.0 だった。

そこからさらに数年後、Windows 95 が発売され「おもちゃ」と揶揄されたPCは仕事の道具して爆発的に普及した。最初はPCが嫌いで自分で触らず報告書なども「これ清書しといて」で済ませていた上司もいたが、あっという間にPCは一人一台となり提出物はWordになった。契約書や議事録を部下に書かせていた人たちは、結局社長への報告書をPCで書けず会社をリタイアしていったし、Unix系はホスト機から移行されるようになり、データセンター内にPCラックがあっという間にホスト機の場所を奪っていった。Visual Basic 2.0 Visual Basic 4.0になり業務アプリを簡単に作成できると流行り始め、Visual Basic 6.0になることには業務アプリ開発の一大勢力となった。

と、いうことを思い出すたび、何がいつ流行って廃れるか本当にわからないんで、いつも勉強しとかんといけないなと思う。システムの勉強を家でやるべきかどうかという議論がちょっと前にあったが、好きでやってる人が数多くいるIT業界なので、そこで生業とするための努力として勉強は必要だと思う。とにかく知識が少ない私の唯一のとりえは、プログラムを面白いと思える気持ちとあきらめが悪い点だから、しつこく勉強するしかないと考えている。ましてや私は子育て優先してて、時短勤務な時が長かったので、短時間でも会社にメリットである様な成果を出すしかなかった。

で、最近では Microsoft Azureも好きだ。これまた社内で利用事例がありつつもなかなか仕事としては使うことなく、もくもくと一人で触っていた。Bot作成やPower BI作成などもボッチ開発であった。しかし、つい先週から社内でAzureの仕事に携わるようになった。別件で初体験のReactも平行なので大変なこと限りないのであるが、初めて仕事でAzureを触って楽しくて仕方ない。

正直、これは神様が試していると思っている。仕事以外に今月来月は町内会もPTAも忙しくて、明日はお祭りで焼きそば売っているだろう。でもやる。やるったらやる。こんな時間にブログ書いて、誓うくらいうれしい。仕事で好きなことができる幸せを目いっぱい味わっておきたいと思う。

※夜中の文章は見直すべきなのですが勢いのまま掲載

UdemyでReactの勉強をしてる

前月よりReactの勉強継続中である。別の仕事も運用も家事もしながらで、なんといってもHTML5開発自体が初めてな状況、結構きつい。来月からの設計開発開始で既にAWSで構築するインフラ周りはむっちゃすごいエンジニア達がいて、すべてお願いして終わってしまったので顧客対応とか開発とか体張る覚悟まではしてみた。

ということでReact。採用理由は会社の諸事情で別システムとの連携を今後考慮する必要があり、そちらに移植を考えてのこと。別システムの方にレクチャーは受けられても自分が理解しないと開発はできない。レクチャーではReact本家のHandOnでの勉強を進められたが、英語の理解とReactの理解を一緒には無理な語学力の為、日本語での即戦力が欲しかった。そこで日本語のオンライン講習探してを買ってみた。まだ7割しか終わってないが結構役立っているので紹介をしておく。

買ったサービスはudemy。ゆーでみーと読む。世界展開しているサービスですが日本語版はベネッセが主管。

www.udemy.com

オンライン学習はほかにも色々あるが、React+Reduxまで扱っているコースがUdemyが充実していたのが理由。Progateとかドットインストールとか周りで評判よかったので使ってみたかったけど今回は断念。かつその時最大92%オフで、個人で買いやすかった。今見たらまだセール中な模様。下はReactで検索した結果のコース一覧。英語コースも一緒に出てくる。

f:id:testedquality:20180825230327p:plain

2本購入。1本はCodeSandboxという別サービスを使ってクライアントでのReact開発環境構築なしで勉強できるもの。ブラウザとネットがあれば講習を受けられるため、子供と一緒に漫画喫茶に行ってなど夏休み中助かった。またこちらはテキストですべての講習を公開していることもあり動画が見れない開発時などにも、勉強しやすかった。動画が禁止されているとかの人も大丈夫である。

www.udemy.com

もう一つはクライアント環境の作り方からすべて動画で提供。APIを使ったアプリケーションをシーケンス図などを使って業務的な観点での講習。クライアント環境の作り方を学べるのがありがたい。

www.udemy.com

勉強の成果は来週からのプロトタイプ作成からだ。週末で残りを終わらせて100%完了にしたいもんだ。全く何もできてないのだが自分を追い込むためにここに書いておく。

はてなブログhttps化完了。そして仕事で勉強すること

はてなのhttps化は無事に完了した。全3ブログをすべて実施。いまのところ5年前から行っている水産高校応援ブログでも苦情は来てないので何とかなっている模様。すでに25日よりChromeが予告通りの警告表示を開始しているため、間に合ってよかったと思っている。

internet.watch.impress.co.jp

さて、6月にボットを公開してから、仕事の勉強が大量に発生してLINE bot化に着手できてない。数年ぶりのフロントエンド&バックエンドの新規開発担当となったのだ。人手がないため優秀な方々がフルスタックな活躍をしているので、せめて足を引っ張らないように自分ができるところを広げるためには勉強しかない。

というと「偉いねー、私にはできない」と言われることがある。部署の方針で現業と平行、かつ家事のワンオペは続いているため残業は最低限となれば家や昼休みしか勉強する時間は取れないし、最新技術を常に見るべき仕事であるのでプライベートときっちり分けられるものでもないと考えるが、「私にはできない」というのは「あなたはおかしい」が割と含まれていることが多いのがつらい。

 

ということで現在Reactの勉強をオンラインとKindleで実施中。

reactjs.org

ReactはFacebook、Instagramが提供するJavaScript開発技術。フロントエンド開発向け。公式のチュートリアルがよいと別プロジェクトでReactを利用した会社の若者たちにいわれたものの、実際にやると概要が見えづらい(実は日本語訳があると先ほど知ったので後悔している)

React 0.13 日本語リファレンス | js STUDIO

本もあるのだがまだ全般発展中なので、若者曰く本通りに動かないことが多々ありストレスがたまるらしい。そこでKindleの電子書籍でアップデートがあるものを数冊購入して読んだ。しかしWindows版KindleをPCで開き、掲載ソースを動かすためコピーしようとしたら、コピー防止のためか不要な半角がソースコード全般に追加される極悪仕様でかえってストレスがたまることになった。

非常に悩んでいたところ、Twitter経由で90%オフの広告を出していたオンライン勉強サイトUdemyを数日前に知り、割引になっていて評判がよかったReactの有料セミナーを2つ買ってみた。オンラインドキュメントと動画とオンラインテキストの3種類。テキストがあれば動画をみなくてもよい親切設計で、会社でも勧めることができている。

www.udemy.com

セミナー7時間を想定しているようなので、終了したら評価を書きたいと思う。全部自腹で買ったし!

Web App Bot でSkype公開申請向けの修正を実施する その2

QnA Maker を使ったボットがSkypeからRejectされた。その修正対応の続きを書く。

testedquality-tech.hatenadiary.jp

先に結論からいうと正式にSkypeボットとして認証を得た状態で公開できた。以下の説明よりボットを見てもらったほうが早いかもしれない。単純に水産高校&商船専門高等学校を探すボットだ。インストール先は以下に掲載した。

botsuisangogo.hatenablog.jp

続きを読む

https化道半ば

Chromeがhttps以外のURLを警告出すように変更されることもあり、思い切ってはてなブログのhttps化を始めた。まずはこの技術ブログを実施。こちらはもともとhttpsをリンク先に極力選んでいたこともあり問題なさそうだ。

一方数年前から実施している水産高校ブログは、リンク先がhttpしかないものも多い。変更は当面難しいかもしれないがどこかで行う必要はあるだろう。

 

Web App Bot でSkype公開申請向けの修正を実施する その1

前回RejectされたSkype側からの指摘点修正を実施する。再度内容を確認。

f:id:testedquality:20180530220003p:plain

訳すとこのような意味と認識した。

  1. 非黒と非白の背景色を持つボットのアバターのイメージにすること。
  2. ユーザーが連絡先としてボットを追加すると、ボットは自動的にウェルカムメッセージを表示する必要があります。これにより、ユーザーエンゲージメントが向上し、ユーザーへ正しくガイドできます。
  3. 不明なコマンドの受信時にヘルプ画面を表示します。

1.はアイコンを全般色を変えるかデザインを変える必要がある。

2.についてはBot Framework の初期動作では返答しないので全く気付いてなかった点。これの修正を実施する。できればFrameworkを変えてほしい(pull request しろということだろうが)

3.はヘルプメッセージというか使い方の説明はしていたのだが、改めてヘルプページを作成する。

 

それぞれ対応を実施した。

1.は最近話題のおすすめデザインを提案するPowerPointを使ってみることに。元の

f:id:testedquality:20180602223817p:plain

 をアイコンに入る様にレイアウト変更ののち、パワポに貼ってみた。色々提案してくれたのから色味とかアイコンを使って以下のようなアイコンを作成。

f:id:testedquality:20180602224312p:plain

2.は1日難航。実はAzure Bot Service で提供される QnA Maker 向けテンプレートはそのまま利用するとユーザが何か入力するまで待機する仕様になっている。もともと詳しくソースを見ていなかったので、何をどうしたらよいものかわからないので、一日Bot Framework のSDKを見て対応策を考えることになった。ドキュメントの中で以下の記述をみつけて愚痴ったりした。

最終的に単純にActivityTypes.ConversationUpdateの値が取れたら挨拶用のテキストをセットして、メッセージを受け取ったように見せかけた。

f:id:testedquality:20180602225150p:plain

3.はヘルプページを作成。はてなブログデフォルトでは日付番号になるため、エイリアス名をわかりやすくした。まだ機能がほぼないので書くのが恥ずかしかった。

https://botsuisangogo.hatenablog.jp/entry/help

 

ここまで準備して最終的に1.のアイコンを登録して最終確認をしようとした。が、今日完成しなかった。

f:id:testedquality:20180602225408p:plain

ボットプロファイルのアイコンをSkypeのアイコンとして利用するため、先ほどのアイコンをアップロードしようとしたが、画面を閉じて戻ってくると元のアイコンに戻ってしまうのだ。どうやらアップロードがエラーになっている模様。

f:id:testedquality:20180602225854p:plain

理由が全く分からないので、対応しようがない・・・もう少し調べることが必要そうだ。再申請はもう少しかかるかもしれない。

ボットの公開申請をしてRejectされる

前回で自分で使うボットを作った。が、目的は公開でもあるため機能追加より先に安心して公開できるのを優先することにした。Skypeは100人以上利用する場合レビューを受けて公開の許可を得る必要がある。得ない場合、検索メニューから名称検索で出てこない状態となる。(今回名称表示しているので検索してもらうとわかる)

 ということで、よく分からないままAzureのチャネルメニューを確認すると「公開」というメニューがある。

f:id:testedquality:20180530213309p:plain

公開時の設定画面があるので一通り設定してみた。ちなみに後で後悔することになるのであるが「レビューガイドライン」のリンクをクリックせずに入力した。ここでプライバシーポリシー&使用条件についてのページが必要なため、はてなブログを一つ専用に作って対応することにした。メールアドレスも専用のアドレスを作って対応する。

個人情報に当たるものは取得しないし会話ログも取得しないが、ポリシーはきちんと提示する。今後デバッグ時に不明になった文言を取得するなども考えられるからだ。(画像で値が入ってない箇所もすべて値を入れた)

f:id:testedquality:20180530213417p:plain

f:id:testedquality:20180530213510p:plain

f:id:testedquality:20180530214408p:plain

最後のボタンをクリックすると、ボタンが上記のように「送信しました」に変更される。初めてのレビューだ。

そして翌日自分が舞い上がっていたことを気づいた。「レビューガイドライン」のリンクをみつけクリックしたら以下の文章がでてきた。ちなみに※以下は読んだ感想。 

https://github.com/Microsoft/skype-dev-bots/blob/master/certification/CHECKLIST.md

Number Requirement Notes
100 Bot Profile Information  
101 Bot Name and Publisher Name

Your bot needs to have a clear and descriptive Bot Name and Publisher Name. Do not suffix ‘Bot’ to your bot name unless it is unavoidable and use spacing. E.g.: FooBot should ideally be Foo, or if unavoidable, Foo Bot.

『Bot という名前を付けるな。つけるならブランク入れなさい。』といわれたのでいま名付けている『botsuisangogo』は『Bot Suisangogo』とかに変更しないとダメそう。

102 Privacy Policy and Terms of Use documents published online and referenced by the bot

Your bot must have links to a valid Privacy Policy and Terms of Use.

プライバシーポリシー&使用規約のはてなブログあり。

103 Bot avatar image with non-black and non-white background color

Your bot must have an avatar image. You must not use the standard bot framework avatar. You must not infringe any copyrighted images.

※ここでのアバターは、アイコンを指している?文字アイコン作成。カタカタだとダメか?<白ではなくクリームにした/span>

 

104 Bot description explains the purpose of the bot

Your bot must have a clear and comprehensive description to help users understand its purpose.

※目的は書いていて、県名高校名からしか検索できない点は記載済み

200 Bot Functionality  
201 Automatically display a Welcome message

When a user adds the bot as a contact, the bot must automatically display a welcome message. This increases user engagement and guides the user to success.

※挨拶を表示する。これ対応できてない。いまメッセージがなんらか送られない限りメッセージ送信しない。Bot Framework そのまま使ってたらダメだ。

202 Display a Help screen when receiving unknown commands

Whenever a user sends any message / command to the bot that the bot doesn’t understand, the bot must respond with a help message, providing usage guidance.

※わからない文字の場合には必ず使い方をメッセージとして返信しているのでここは大丈夫か。

 

203 Bot functionality works correctly

Your bot must function correctly. Bots with obvious broken functionality will be rejected and / or removed from the directory.

※正しく動いているはず。こう書かれると心配になる。

204 Bot must be fast

The bot must respond to user commands without extensive delays.

※遅延する要素はないけど、region が米国中部なのはバグ回避で全部同一 region じゃないと新規作成できなかったのだ。せめてアジア系で作成したかった。

205 Bot must be mobile-friendly

The bot must be designed in a way that enables users to be able to interact with it on a mobile device. For example, the bot should not send excessively long individual messages (instead it can send a sequence of several messages). To ensure the bot is mobile friendly, please test on a mobile device (Android or iOS) with the latest versions of Skype.

※これは大丈夫なはず。Andriodでテストは済ませた。

300 Compliance  
301 Your Bot Submission must PASS Azure Online Service Terms See Azure Online Service Terms
302 Your Bot Submission must PASS Microsoft Channel Publication Terms See Microsoft Channel Publication Terms

 

正直速攻修正したくなったが、レビューを受けている最中に変更されたらもっと失礼に当たるので恥ずかしい気持ちを堪え数日。見事に「拒否」の返答がAzure Portal に戻ってきた。(ちなみに申請中になると「InReview」となる)

f:id:testedquality:20180530220907p:plain

詳細メッセージが確認できるので反省していた点と一致するか確認。

f:id:testedquality:20180530220003p:plain

想定していたことと違うのは

  1. アイコンの白い背景への修正
  2. 不明な時にヘルプへのリンクが必要(ヘルプページを作成するか・・・)

あとポイントは先に挨拶する点。これはBot Framework のデフォルト仕様部分を変更しないとできない。ということできちんと仕様書を読めという反省で修正に入る。