All Articles by Akky Akimoto

2559 Articles

PlantUMLでAWSサービスを含む図を作る

プレゼンテーション資料をMarkdown形式で書いていて、図を入れたいが図はどうやって用意しようか、となりました。

せっかくテキストエディタでプレゼンを作れるようにしているのに、図を描くのにテキストエディタでなくドローツールを開くのは面倒だな、テキストで図を描ければ、ソースコードとして管理できるから似たような図を量産するのも楽だし、バージョン管理で変更点もわかりやすい。

ということで探したところ、Plantuml が見つかりました。日本語のマニュアルもあるし、評判もいいみたい。

インストールしようとしたところ、図を1,2個作るだけならオンラインでできるようです。試すだけならハードルはとても低い。

マニュアルを参考にして作ったのがこちら


@startuml

[Github] as github
[さくらVPS] as vps
[local machine] as localmachine

:ユーザー: <.... github :1) pull :ユーザー: ....> localmachine :2) Sculpinで変換
:ユーザー: ....> vps :3) upload(scp)
:ユーザー: ....> github :4) push

:訪問者: .left.> vps:閲覧
@enduml

変換した図がこれ

要素の順序や線の向きなど、細かく指定する方法もあるみたいですが、それをやりだすと大変そう。「まあ大体わかればいいか」というレベルで済むなら、驚くほど簡単でした。

# png でも svg でも作れるので、svg で問題ない環境なら svg もいいですね。WordPress ではまだ大変みたいなので png で貼っておきます

PlantUML で AWS の構成図を描く

UML で使えるアイコンはもちろん広く用意されているのですが、サービスのアイコンについても利用者が作って公開しているようです。AWS のサービスを表す図を公開している milo-minderbinder/AWS-PlantUML を見つけたので、これを使ってみました。

Github 上のライブラリを、前記のオンラインエディタから参照できるので、こちらも簡単です。使いたいコンポーネントを AWS-PlantUML から探して、include するだけで使えるようになります。


@startuml
!define AWSPUML https://raw.githubusercontent.com/milo-minderbinder/AWS-PlantUML/release/17-10-18/dist
!includeurl AWSPUML/common.puml
!includeurl AWSPUML/Storage/AmazonS3/AmazonS3.puml
!includeurl AWSPUML/Storage/AmazonS3/bucket/bucket.puml
!includeurl AWSPUML/General/user/user.puml
!includeurl AWSPUML/General/AWScloud/AWScloud.puml
!includeurl AWSPUML/NetworkingContentDelivery/AmazonCloudFront/AmazonCloudFront.puml

[BitBucket] as bitbucket
[CircleCI] as circleci

AWSCLOUD(aws) {
AMAZONS3(s3) {
BUCKET(blog, "akimoto.jp")
}

AMAZONCLOUDFRONT(cloudfront,"CDN")
}

:ユーザー: -right-> bitbucket :**1**) push
bitbucket -right-> circleci :**2**) kick
circleci -right-> blog :**3**) upload
blog --> cloudfront :**4**) distribute
:訪問者: .> cloudfront:閲覧

note "ビルド&テスト" as note_build_and_test
circleci .u. note_build_and_test
@enduml

変換後

これも、コンポーネントの配置順が気に入らない、とかで調整しようとするとたちまち難しくなってきたので、まあ関係性が読めればいいか、で気にしないことにします。マニュアルを読み込んで頑張れば調整もできるのだとは思いますが。

プレゼン中の図も小さなテキストで管理できるようになったので満足です。

[可視化] ヨーロッパ各国で「子供の恋人が○○人でも気にしないか?」を訊ねた結果の地図

reddit の地図セクションで bezzelford さん発表したヴィジュアライゼーション。

この地図は、「あなたの子供が黒人と付き合っていたとして、問題ない(comfortable)と思いますか?」に対する回答で、問題ない人の割合が高いほど緑に、低いほど赤に塗り分けられています。

緑が濃い国ほど、気にしていないということですね(あるいは「気にしてないように振る舞う」可能性もなくはないですが)。同じヨーロッパと言っても、8割は気にしないスウェーデンやイギリスの寛容さと、7割が気にするチェコ・スロバキア・ブルガリア等では大きく違うことが見て取れます。

ヨーロッパで黒人がどう扱われようと、日本人の自分には関係ない? ではこちらはどうでしょう

「あなたの子供がアジア人と付き合っていたとして、問題ない(comfortable)と思いますか?」への回答。

黒人とアジア人の許容度の差は平均で5%ぐらいなので、「子供の交際相手として黒人はだめだがアジア人ならOK」という人の割合は、ヨーロッパ人が20人いる中で1人ぐらいということなんでしょう。人種差別の少ない社会は、日本人にとっても助かる社会と言えるのでは。

reddit のコメント欄では、「国によってその国の言葉で訊ねただろうから、翻訳のニュアンスが違うせいでこんな差がついたのでは?」と言った意見も出ています。「さすがにこんなひどくないだろう」という人もいれば「私も○○人だが、○○人の多くはレイシストだ」みたいな人も。

また、「アジア人(Asian)と言っても国によってさまざまで、たとえばイギリス人ならインドやパキスタン人を最初に思い浮かべるのでは?」とか、「そんなことはない、中国人や日本人をまず思いつく」という議論もありました。

元の投稿では、イスラム教徒、ユダヤ教徒についての地図もあります。

元データについて

このデータ、適当なアンケート結果ではなく、EU が実施した「EU における差別 2015年」という大きな調査 [pdf] の中の一部のようです。

24ページ目に、地図を塗り分けた元データの表があります。

東欧諸国の方で興味深いのは、「子供の恋人が白人だったら?」という質問ですら、「問題ない」が90%を割るところがいくつもあるところで、仮定の質問でも子供の恋人なんて考えたくない、のかもしれません。(ちなみにEU平均でも92%)

TweetReality – ARで実世界上にツイッターのつぶやきを展開

iOS用の新アプリ TweetReality は、AR技術を使ったツイッタークライアントです。スマートフォンの向こうにある景色の上に、ツイートを並べて表示させ、景色を見ながらツイッターの閲覧ができます。

デモ動画から。

よくあるARアプリのデモにあるように、実際に他人からこう見えるわけではなく、イメージ映像ですね。

ユーザー視点から見えるのはこんな感じ。字が小さい!

恰好はいいんですが、どんな時に使えますかね? 向こうが見通せるので歩きツイッターのお伴に?

「初のARツイッタークライアント」と自称されてますが、さすがにそんなわけはなく。たとえば 2009年の TwittAround が見つかりました。こちらは、位置情報からフォロー先のユーザーをそのユーザーのいる方角に表示するようなクライアントのようです。アプリ自体は AppStore からは消えてしまっているようです。

TweetReality

カテゴリ: Social Networking, Entertainment
言語: EN
価格: 無料
バージョン: 1.0

開発者: Oscar Falmer
公開日: 2017年12月5日
評価(全バージョン):
(10人のレビュー)
評価(現バージョン):
(10人のレビュー)

スクリーンショット

screenshot 0screenshot 1screenshot 2screenshot 0screenshot 1screenshot 2

via Digital Trends

サンタクロースに電話を掛けてもらう4つのサービス 2017版

以前、グーグル社が季節行事にあわせて公開していた、サンタから電話を掛けてもらうサービスというのを紹介したことがあります。2010年のことでした。

これが何年か前にサービス終了で消えてしまっていたのですが、クリスマスが近づくと紹介した記事のコメント欄などで「動きません」「使い方を教えてください」といった質問がたまに来ていました。「こんな電話が掛かってくるよ」というサンプル音声だけはグーグルのサーバに残ってるんですけどね

そんなわけで、「こどもがサンタから電話をもらう」ための他のサービスを紹介します。

ChristmasDialer

ChristmasDialer.com はその一つ。

サンタ(Santa)の他にクリスマスエルフ(Elf)を選ぶこともできます。あとは4種類の喋りのバリエーションを選び、”Send a free call now”(無料の呼び出し)ボタンを押すと、すぐに指定した電話番号にサンタからの電話が掛かってきます。

# 当然ながら英語です

電話番号はアメリカ国内のものしか入らないようです。Skype や Google Voice 等でアメリカの番号を持っていれば、スマートフォン等で受けることもできますが、日本で使うにはちょっと面倒かと。

PackageFromSanta

こちらはスマートフォンアプリベース。iPhone版とAndroid版があります。

アプリをインストールして利用開始すると、メールアドレスの登録とニュースレターの購読が要求されます。

無料コールが1回あり、それ以上の呼び出しをしたければ一回につき500円(5万6095ドル)程度を支払うというのがアプリのビジネスモデルのようです。クリスマスの前後の日付にあわせた様々なメッセージ(プレゼントが遅れてごめんね、なんてのもあります)や、年中いつでも通用するメッセージ(夏のバケーション先からの電話とか)、誕生日に仕えるメッセージ、なども選ぶことができます。

メッセージを選んだら、子供の名前や年齢、今いる国(Japanも)を選び、今すぐかスケジュールをセットすると、あとはアプリに電話が掛かってきます(=電話が掛かってきてるかのように動きます)。

本当の電話を使っているわけではないので、世界のどこにいても動きます。

Personalized Call from Santa

カテゴリ: Entertainment
言語: EN
価格: 無料
バージョン: 4.3

開発者: PackageFromSanta.com
公開日: 2014年10月31日
評価(全バージョン):
(211人のレビュー)
評価(現バージョン):
(82人のレビュー)

スクリーンショット

screenshot 0screenshot 1screenshot 2screenshot 3screenshot 4screenshot 0screenshot 1screenshot 2screenshot 3screenshot 4

A Call From Santa!なども、同様のスマートフォンアプリのようです。こちらは試していませんが。他にもいくつかあるようです。

DialMyCalls

DialMyCallsという、遠隔地で働く社員に一斉に電話を掛けて同じメッセージを伝えるのに使うようなサービスがありますが、ここもクリスマス毎にサンタからのコールバックを無料で提供しています

自社の通知など自由な音声を吹き込んでそれを送るサービスが元なので、有料プランを契約してサンタ以外のいろんな人から電話させたり、自分で日本語を喋るサンタのメッセージを吹き込み、それを掛けさせることも可能ですね。

ただし、サービスの提供先は米国とカナダのみ、となっています。

まとめ

北米の電話番号を持っていて電話が受けられるならどのサービスでも良いですが、そうでなければアプリ版の PackageFromSanta が簡単でしょう。

とはいっても、どれも英語のサービスなので、なんとなく雰囲気だけ楽しむ、ぐらいしかできなさそうではありますが。

dockerizeコマンドで他のDockerコンテナの立ち上げを待つ

「Docker で動くようにすること」(to dockerize)じゃない、ツールの方の dockerize (jwilder さん作)を使って、同じDocker network 内(setup_remote_docker したもの)に立ち上げ中のコンテナの準備ができるのを待たせる方法。

# 名前が紛らわしいのは検索性を低めてると思いますが

どうせならツールも自力でセットアップせずに docker hub にあるものを呼べばよいということで、

docker run jwilder/dockerize -wait http://sample.test/ -timeout 3m -wait-retry-interval 5s

上は、http://sample.test/ が応答を返すまで、最大3分間、5秒おきに問い合わせ。

CircleCI の中で待ちたかった(コンテナの立ち上げが終わってからテストを流す)ので、ターゲットのコンテナと同じ Docker network でこれを呼ぶと、.circleci/config.yml は

    - steps:
       (中略)
      - run:
          name: Run Docker Containers
          command: docker-compose up -d
      - run:
          name: Wait until the target docker container fully set up
          command: |
            docker run --network my_network \
              jwilder/dockerize -wait http://my_service/about/ -timeout 3m -wait-retry-interval 5s
      - run:
          name: テストとか

こんな感じでいけました。

CircleCI公式のDocker image には dockerize も入ってる

しかし、その後、CircleCIの用意してくれているDockerベースのDocker Container を使う場合、そのコンテナには Docker だけでなく Docker Compose や Dockerize も含まれているということに気づきました。

「あれ? じゃ上のコード無意味で、直接 dockerize を呼べばいいだけでは?」と思い直し、これを試してみたのですが、

      - run:
          name: Wait until docker container fully set up, from the same docker network
          command: |
            dockerize -wait http://my_service/api/doc -timeout 3m -wait-retry-interval 10s

ネットワークが違うのでアクセスできません。そりゃそうか。CircleCIの中で立ち上がったDocker MachineのIPアドレスが取れれば、それでアクセスできそうだけど。

ドキュメントにありました。同じコンテナか、同じネットワークのコンテナからのアクセスとするのが正しいやり方のようです。CircleCIが使ってるprimary のコンテナにはもう Dockerize コマンドの実体があるので、同じものを再度リモートから取得するのはもったいない気もしますが。

sleepでwait

CircleCI のドキュメントのサンプルでも

      - run:
          command: |
            git push heroku fan-in-fan-out:master
            heroku run rake db:migrate
            sleep 5 # sleep for 5 seconds to wait for dynos
            heroku restart

みたいなことが書いてあって、”sleep 5″って、それいつでも大丈夫なの? と思ったので調べました。まあサンプルはサンプルなので。

Wiredの「Facebookが顔写真認証をテスト中」は誤報のような気がする

これが発端のツイート、「フェイスブックにログインできなくなってると思ったら自撮り写真のアップロードを要求された」という体験なのですが、これをWired が取り上げて、フェイスブックが顔写真をCaptcha とした本人認証を実験中、みたいに報じ、他メディアもそれを参照する形で追ってるわけです。

しかし、7か月前にredditでまったく同じ体験が公開されていますし、フェイスブックのサポートコミュニティでも顔の映った写真をアップロードしろと出てきましたが、どうしてですか?というFAQ として公開されています。

自分の写真をすでにたくさん上げているユーザーなら、それらと同一人物か判定することも今ならできなくはないでしょうけど、写真をアップロードしたかどうかに関わらずこれは発動している(どちらかというと、二つ目のアカウントを使おうとしたら、とか、家から遠く離れたところでログインしようとしたら、とかの事例が多い)ので、AIで本人確認とかそういう高度な話ではなく、免許証のコピーをアップロードさせるとかと同じく、「スパマーやなりすましなら時間をかけて対応してこないだろう」という、以前からやってる人力確認の話ではないかなと思うんですよね。