自動電話発信機能連携の追加

前回の便利ツール(Androidアプリ)と連携する機能を、チケットぴあ自動購入に追加しました。

使用するには、最新のインストーラをインストールする必要があります。

ヘルプメニューの「MQTT Settings」を選択すると、以下の画面が表示されます。

MQTT Brokerに接続のための情報を設定後、Connectボタン押下で、接続されます。

次に、Topicを指定します。指定後、TabキーでSubscribeボタンが有効になります。

Topicは、便利ツール(Androidアプリ)と同じにする必要があります。

試しに、Publish欄に、「tel:xxxxxxxxxxxx」(x=電話番号)を設定してPublishボタンを押下すると、便利ツールが起動状態であれば、その電話番号に発信することが確認できます。

以下は、チケットぴあ自動購入ツール自身も「tt」TopicをSubscribeしているため、送信したデータを受信しているのが分かります。

チケットぴあ自動購入の右側には、MQTTの状態が表示されており、以下の表示になっていれば、繋がった状態になります。この状態であれば、電話認証が表示されたときに、スマホと連携する動きになります。

Global interpark 自動購入が完成しました。

座席指定のチケットを扱うのが初めてだったからか、対応する画面の量がいつもの倍以上あったため、予定外の時間を費やしてしまいました。

画面遷移の仕組みも、自分は今まで出会ったことが無い作りになっていて、最初はすんなり行けそうと思っていたのですが、なぜか最後の購入完了のところでサーバに弾かれてしまい、その理由が全く分からず、仕方なく通信とブラウザ遷移のハイブリット型と言ったらよいのか、とにかく今までの形とは異なるものが出来上がりました。

動作速度については、最速にはしておらず、失敗しない速度にしています。

最後の画面遷移は入力はしていません。裏でデータは全て取得済みのため、そのデータを足しているだけです。

便利ツールv2.0.0をリリースしました。

この便利ツール(Androidアプリ)は、v1.0.0ではYahoo!ショッピングのSMS認証で、スマホに受信された認証コードをBOTに連携するツールとして、Emperor AIOで使用するためにリリースしたものです。

名前は適当です。当初はGoogle Playに登録しようかと思い、分かりやすい名称ということで選んだものですが、当方の時間的余裕が全く無いので、Google Playからのインストールではない方法でインストールするやり方を採用しています。

野良アプリをインストールするやり方をググれば色々出てきます。

APK(Androidアプリ)は、https://zatturight.com/fastbot/products/detail/38 の下の方にダウンロードリンクがあります。

LAN環境以外でも利用できるようにするため、MQTTというプロトコルを使用することにしました。以下が便利ツールアプリ画面です。

便利ツールはMQTTのクライアント側で、サーバ(Broker)はPublic Freeなところを使用することを想定しています。
個人で使用する分には、有料になることがまず無い程のリソースが用意されている以下のサーバを使用することを前提に進めていきます。
https://www.emqx.com/ja/pricing

MQTTは、世界規格統一された通信プロトコルで、LINEやDiscordなどのチャットシステムで利用されています。

MQTTを簡単に説明すると、Publish アンド Subscribe モデルで動作するマシン間接続プロトコルです。

MQTT クライアントは、MQTT を使用して MQTT サーバーへのネットワーク接続を作成するプログラムまたはデバイスであり、 ブローカー とも呼ばれます

通信が確立されると、クライアントはブローカーにメッセージを送信できるようになります。

他のクライアントは、クライアントから送信された特定のトピックに関する通知を購読できます。

Brokerとして今回利用させて頂くのが www.emqx.com 、SubscribeするだけのClientが便利ツールアプリ、PublishするだけのClientがチケットぴあ自動購入ツールとなります。

何をしたいのかというと、チケットぴあのログイン後にたまに電話認証になりますが、これを自動化したいというのが目的です。

Cloakでリストック監視を行っていると、1日に2~3回は遭遇します。手間でも認証を通しておけば、発生頻度は減ります(と思う)が、電話を掛けること自体が手間です。例え自動化させても、電話認証が出た段階で速度的に不利になることは間違いないので、電話認証が出たときは厳しいかもしれませんが、自動化によってストレスフリーになることをモチベーションとしています。

スマホ側のセットアップが完了したら、次はBroker側の準備です。

https://cloud-intl.emqx.com/console/deployments/new
上記リンクから、無料開始ボタンを押して、アカウントを作ります。

個人情報を入力する欄がありますが、クレカは登録しなくても使用できます。

無料枠は個人利用としては使いきれない程の上限幅なのでクレカを登録する必要は無いでしょう。

アカウントを作成したら、ログインします。
https://cloud-intl.emqx.com/console/

Console画面に行くと、接続先が表示されているので、便利ツールの接続先に指定します。

左側の認証メニューから、ユーザを作成して、便利ツールのユーザとパスワードを指定します。

便利ツールアプリ側でConnectボタンを押して、接続されたら、動作確認をしてみましょう。

サーバ側Consoleメニューのオンラインデバッグを開きます。Connection Nameは適当で構いません。

Topicは、便利ツールのTopicと合わせる必要があります。tel:の後に電話番号を入れてPublishボタンを押してみてください。スマホが自動的に電話発信されたら成功です。

チケットぴあ自動購入ツールの対応後に続きを書きます。

チケットぴあCloakの対応は結構きつかった

リストック監視はいつ来るのか分からない点と、今回の様に、普段出ない画面がプレミアムチケットのときだけ出現するというのがあると対応が厄介だ。

以前からCloak対応して欲しいという要望があったのだが、先着で取れば良いのでは?と思っていたが、時代はそうじゃないことに今回初めて気づいた。

転売禁止の法律が出来てから、チケットは電子的なやり取りに変わっていたのは知っていたが、流通自体も変わっているのは知らなかった。。。

今回は長期にわたってリストックし続けるという性質があったお陰で、苦労はしたが結果は残せた。

Cloakの画面にチケットがあるのは新鮮だ。。。

1枚チケットでも2枚チケットでも対応しており、2枚目は、BOTの右側に個人情報を入れておけばOK。
残件として、電話認証を自動化するAndroid用のアプリの開発が残っている。Google Playには置かずに、ローカルからインストールする形にします。
※iPhone用は作りません

次は、Global interparkを対応します。
Pythonはちょっと弄りたいときに手軽に作れるのが気持ち良い!!

エルメス人気の凄さ

エルメスの商品はバカみたいに高額だと思うが、欲しい人からすると喉から手が出るほど欲しいもののようで、欲とは?という感覚になった話をしたい。

エルメスオンラインは、先着の商品を扱っており、早い者勝ちではあるものの、グローバルIPアドレスのブロックが世界一激しいところでもある。それだけみんなが狙っているということなのだが、つい最近ユーザに成り掛けた人から色々な話を聞いて、なんか凄いことになっているなぁと思うことがあったので、隠すようなことでもないので、ダラダラ書いていく。

日本は円安真っ只中で、世界から見てもかなり割安感があり、エルメスなどのハイブランド商品も他国と比べれば圧倒的に安いのだそう。それをビジネスにしようとしているのが中国人だ。

1つ目は、人気商品がリストックされたらそれを通知することを商売にしている輩。サブスク契約で月額10,000~15,000円程度らしいが、ラッキーじゃなければまず取れないだろう。それでも通知が来てカートに入っただけでも夢見るのだそうだ。「次は取れるのではなかろうか!!」と。

2つ目は、自分たちで取ったものをTwitterで自慢しつつ、かなりの手数料を取って売り捌く輩。なんでも輩にはいくつかの組織が存在していて、序列によってその商品の色を取ってよい輩とダメな輩という括りがあるらしい。

インターネットという仕組みは、世界共通の仕様に基づいており、速度の違いはあれど誰がやっても同じ仕組みを使っていることに変わりはなく、ショートカットなどというものも存在しない。

あそこは良く取れるというものがあるとしたら、品質の良い機器や通信環境を使っている程度である。

エルメスを高く売り捌けるなら、私も本業にしたいぐらいだが、どの色が高く売れるのかなんて分かる訳ないし、そもそもハイブランドに興味が無いので、途中で飽きてしまいそうだし、モチベーションも下がってしまいそうだ。例え取れたとしても、取れるまでの経費を考えると、日本で売るのは赤字にしかならなさそうだ。

ウィルスバスターのようなウィルスチェックソフトウェアは、本来ならWindowsのチェック機構で十分なはずなのだが、未だに年間契約をしている人がいるのにも驚かされる。情弱な人たちをカモにするビジネスモデルは、情弱な日本人をターゲットにしたモデルだと言える。

今やITは生活に無くてはならないものだからこそ、知識を付けなければ日本の衰退は加速していく一方だと思う。IT技術者が学ぶ基礎知識の一部を学校教育でも必須科目にする必要があるんじゃないか?

「ここから先は、ローソンエンタテインメントが運営・管理するサイトです。」チケットに対応しました。

以下のページからローチケのチケット詳細ページに入る形式のチケットに対応しました。

最初のログインは不要で、自動購入時にローチケログイン or メアド+電話番号のビジターログインがあります。

発売前でも購入手続きを行おうとしますが、エラーが起きるので途中で止めています。

本番時は、発売後に実行するようにしてください。

流行りに触れたら、そこは沼だった

ここ1か月は、今の今まで触れたことが無かったPythonと機械学習(Deep Learning)について、時間の許す限り色々触ってみた結果、今流行っているAIって、実は・・・という感覚に落ち着いたことについて触れます。

当社は今後BtoB市場で戦うべく、新しいプロダクトの開発のため寝る間を惜しんで開発しています。目玉はAI-OCRであり、そこにはAIが欠かせない技術となっています。

当方がプログラマとして社会で働きだしてから25年以上経過していますが、これまで一度もPythonとDeep Learningに触れたことがありませんでした。それは、流行りものは触れたくないという根拠のない気性からでしたが、今回は必要に迫られて初めて経験しました。

Pythonは今一番ホットなプログラミング言語と言っても過言ではないでしょう。インタプリタ言語であり、ライブラリはC言語で書かれているので、一見速そうに感じますが、体感は無茶苦茶遅い。Ubuntu環境で利用するシーンを想定してのことか、Windows環境では顕著に動作速度の遅さを感じます。

なんでこんなに流行っているかといえば、デバッグ実行のし易さとライブラリの豊富さだろう。構文エラーや実行エラーになったときは、必ずコールスタック(実行停止するまでの呼び出された関数が表示される)が表示されてどこで止まったのかがすぐに判るので、直してまた実行という反復がし易い点である。

あとは、C,C++に比べて痒いところに手が届く感じがする。感じがするのはプログラムコードの行数を少なく書けるという意味であり、やっていることはC,C++と何ら変わらない。

Deep Learningのフレームワークはいくつか存在しますが、PyTorchを使って試していました。PyTorchは旧FaceBook社が開発したフレームワークで、ここ4~5年でかなりの利用者数を増やしてきたと思われ、実際ネットで漁っていたサンプルコードは、PyTorchしかありませんでした。

他のフレームワークを試していないので予想でしかありませんが、PyTorchは後発な点と使い易さ・分りやすさが受けているように思います。

機械学習・Deep Learningには、GPUを使うことで高速化できます。NVIDIAのグラフィックボード専用のプログラミング言語であるCudaを使うことで、GPUに搭載されたCuda Coreを並列化処理させることが最大の魅力となっており、一番ホットな開発手法です。Cuda CoreはNVIDIAのグラフィックカードが高価であればあるほど多く搭載されており、多いほどに使用する電力が馬鹿にならないぐらい消費します。

最近そこまで騒がれていないChat-GPTですが、その生みの親であるOpenAIは、Chat-GPI4の学習コストはデータセンター1個分に相当するらしく、既に大規模言語モデルの成長は終わったというようなことを言っていました。機械学習させるコストが膨大過ぎて、これ以上の学習は利益が出せないからといった感じだったと記憶しています。
https://www.gizmodo.jp/2023/04/chatgpt-ai-openai-carbon-emissions-stanford-report.html

で、今回実際にDeep LearningをPCにやらせてみたわけですが、Cuda Core数が多くなければ学習時間はモノによっては1週間あっても足りず、Cure Core数が3倍あるグラフィックカードを使うと1日で終わったので、お金を出せば出すほど優位になります。機械学習自体が予測した通りに動くかはやってみないと分からない点があり、試行回数は重要な要素になります。試行回数を増やすとそれだけ機械学習を回さないといけないので、速く学習できることに越したことはありません。

結局、お金がある企業や研究室が一番優位に立てるモデルになっていると感じました。

機械学習において肝になるのが、データセットです。これはコンピュータにDeep Learningさせるための元となるデータなんですが、これを集める(作る)のが一番大変な作業です。

Deep Learningのアルゴリズムは研究論文が一般公開されており、データセットも公開されているのですが、ことOCRに限っては、英字(アルファベット)しかありません。英字は大文字小文字合わせても50~60通りしかないもので検証されたものしかないため、日本語に対応するためには、新たに機械学習をさせるしかありません。

ここで厄介になるのが、日本語の場合は5万件以上の文字の種類があるのを個人で学習させる煩雑な作業が必要な訳ですが、ここが一番の肝な部分なため、如何に機械学習させていくかが製品品質の向上の鍵となります。

と、ここまで手が掛かるAIなのですが、つい最近までAIの規制についての話題がちらほらありました。
https://nordot.app/1045220482553791140?c=113147194022725109

AIに触れた今、直観人間として思うことは、

「AIが人間を超えることは絶対に無い」

と思いました。

人間が機械を調教しているに過ぎませんから。

未だにOCRで認識率95%以上のアルゴリズムを見たことがありません。英語ならあるかもしれませんが、5万件以上ある日本語の精度を100%にすることは不可能だと思います。

ここまでの実情が分かった1か月でしたが、だからこそ優位に立てるやり方を模索しています。

私がやろうとしていることは、如何に手間を省くかという点です。次回からは、手法そのものはブラックボックスにしますが、精度を向上させた結果について順次記載していきます。

ディズニーレストラン自動予約をリリースします

コロナ禍の2019年のいつかは忘れましたが、ショーレストランが営業休止状態になっていました。

先月からディズニーショーレストランが再開しているので、これを機にBOTの販売を再開します。

ディズニーレストラン予約サイトは、一見変わってないようにみえますが、ログイン周りと棒人間の登場により、自動予約で動かす部分を縮小しました。

今までは購入手続きの完了まで動かすことができましたが、色々な条件で動作確認を行ったところ、棒人間システムに関連しているからだと思うのですが、予約画面を表示後30分後に動作開始するよう設定した状況だと、なぜか「ユーザ情報確認・お支払方法選択」画面から「確認」画面への遷移ができなくなります。
予約画面を表示後、すぐに開始ボタンを押したときは問題ないため、恐らく棒人間システムによるBOT対策だと考えています。

「ユーザ情報確認・お支払方法選択」画面に来ていると、すでに座席は10分程度確保されている状態のため、ここで自動動作は停止して、以降の画面遷移は手動で行うように変更しました。

9時10時の混雑時は、ログイン時のコード認証が出ると思ってください。既に座席は確保されているので落ち着いて入力すればよいですが、それが手間と思う場合は、動作開始前にログインボタンにてログインを済ませておくと、予約手続き中にログイン画面が出ません。

ショーレストランのS席については、ほぼ確実に取れると思います。当方の通信環境において、大人2人の状態で空席がどのくらい残っているのか確認したところ、9:00:40ぐらいまではありました。

上の動画を見てもらうと、1回目は取りこぼしていますが、2回目で座席確保に成功しています。この時点で9:00:10でした。

ショーレストランは9時からの販売ですが、通常のレストランは10時になります。その中で人気なのがシェフミッキーです。

このレストランは、ディズニーランドの提携ホテルに宿泊すると、その特典としてWEBサイト予約よりも早く予約できるため、WEBサイト販売当日に空きがあるか分かりません。
当方が試したところ、
09:59:59.902(11144)[781542 msec]request
10:00:16.966(11144)[798606 msec]Finished: NO_Error(200)
予約リクエストから17秒後にやっと応答があるぐらい混雑している状況がうかがえます。このときは既に空きがありませんでした。もう少し早くアクセスしても良いのか分かりませんが、空売りという可能性もあります。

2023/08/14 追記

棒人間システムの対策をしたところ、開始時間を30分後のタイマー設定にした自動予約処理において、「ユーザ情報確認・お支払方法選択」画面から「確認」画面への遷移が正常動作したので、購入完了まで動くことを確認しました。