MacOSの配布用Qtアプリケーション作りが難解過ぎた

黒基調のウィンドウは格好良いです。

1週間以上掛けて、ようやく配布用アプリケーションが作成できました。
MacOS版チケットぴあ自動購入の処理は、1年前のソースコードをそのまま持ってきました。(プラスnewspプラグインの処理を入れています)
MacOS版の方がWindows版よりも購入できるという報告をちらほら聞くため、敢えてそのようにしています。Success PostでMac版を使った時にはそれが分かるようにしているので、そこで判断できます。

今のバージョンである、macOS Sequoiaは、AppleシリコンのM1以降でのみ対応されており、そのCPUでビルドしたアプリケーションを作成する必要がありました。

別件でMac Miniを購入したことと、ユーザからの要望があったので作成してみようと思った訳ですが、情報が殆どないためAIサービスに頼るしかありませんでした。

最初は、ChatGPTに聞いていたのですが、開発者IDを取得するところで躓いてしまい、先に進めなくなってしまったため、ChatGPTよりも賢いと評判のClaudeに相談することにしました。

Apple M1以降のCPUを搭載しているMacOS用に配布するためのQtアプリケーションを作成するには、アプリケーションに開発者IDを署名する必要があります。

公式には以下に作成方法が書かれているのですが、中途半端な開発者ID証明書を作成するところまでは簡単にできます。
https://developer.apple.com/jp/help/account/create-certificates/create-developer-id-certificates/

結論から言うと、開発者ID証明書には、中間証明書とCA証明書を付加する必要があります。

Apple Root CAは以下からダウンロードして、キーチェーンアクセス.appにダブルクリックして取り込みます。
https://www.apple.com/certificateauthority/

中間証明書のありかは、Claudeに聞いて取得してきました。

1.G2の中間証明書を直接ダウンロード:
curl http://certs.apple.com/devidg2.der -o devidg2.der
2.ダウンロードした証明書をインストール:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain devidg2.der

コマンドで「find-identity -v -p codesigning」を実行して、Developer ID Applicationがvalid状態であり且つ、ルートCA証明書まで正しく登録できていれば証明書の作成は完成です。

次に、アプリケーションに署名を付与していきます。

プロジェクト内に「entitlements.plist」を作成し、内容を以下にします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>

proファイルに以下の項目を追加します。

macx {
ICON = res/ticketpia.icns
QMAKE_INFO_PLIST = Info.plist
ENTITLEMENTS.files = entitlements.plist
ENTITLEMENTS.path = Contents
QMAKE_BUNDLE_DATA += ENTITLEMENTS
}

ビルドを行い、macdeployqtにて必要なライブラリをapp内に取り込みます。QtWebEngine.appも同様に行います。

% macdeployqt ticketpia.app 
% macdeployqt ticketpia.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app

以下にてアプリケーションに署名していきます。

# 拡張属性をクリア
xattr -cr ticketpia.app

# メインアプリの署名
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: KAZUHIRO OZAWA (VSAYCF9RQD)" \
--options runtime ticketpia.app

# WebEngineProcessの署名(entitlementsを指定)
codesign --deep --force --verify --verbose \
--sign "Developer ID Application: KAZUHIRO OZAWA (VSAYCF9RQD)" \
--options runtime \
--entitlements ticketpia.app/Contents/entitlements.plist \ ticketpia.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app

この2つの署名を行わないと、例えばWebEngineProcessの署名を行わない場合、ticketpia.appのアプリは起動するがWebEngineが表示されずに落ちてしまう現象が発生します。

この情報がどこかに刺さったら嬉しいです。

久々に書いてみた

最近、晩酌をしなくなった関係で、書く意欲がなかなか沸かなくなってきたり、作りたい!!というBOTも無くなってきたり、DX関連のお仕事をようやく頂く機会ができて、その仕事をすることで頭を凄く使うのか夜11時には眠くなってしまい、夜ギンギンになって色々変なことを書くことが出来なくなってきたのが大きな理由である。

ここ2か月ぐらいで、変なことがあったといえば、うちの近くは細い道が多いのだが、30歳前後で保育園に車で送り迎えしている女性が運転する車が俺に接近してきて、サイドミラーに当たりそうだったので、俺が大げさに避けたらサイドミラーが折りたたまれた状態になり、運転している人はびっくりするのだが、俺の中ではよくあることである。

このとき、運転手のその後の反応は大きく分けて3パターンある。

1つ目は、そのまま走り去るケース。自動でサイドミラーが元に戻せない手動で戻すしかない車の場合、50m程走ったあとに、降りてミラーを直したあと、アクセルを吹かして去っていくケースもあった。

2つ目は、その場で一旦停止するケース。そういうときは、こちらも相手に向かっていくと逃げていく。

3つ目が今回遭遇した初めてのケースで、いちゃもんを付けてきたので、こっちは慰謝料払えと脅してみたが、警察を呼ぶと言い出して周りの住人を巻き込んで騒ぎまくってきたので、俺は一旦目の前の作業場に籠り、その日も仕事に追われていたので、頭おかしい女のことがチラチラ頭を過ぎりながらも何とか集中しようと頑張って作業していた。

1時間経ったのちに警察官たち(4人もいた)が作業場に訪ねてきた。大家が俺の居場所をチクったようで、俺の人権はどこにいったんだ?という想いがあったが、俺は白線の内側にいたのと、あほ女の車にドラレコがあると喚いていたのでそれを見れば車が寄ってきているのが判るのと、あとは俺が被害者であるということを訴えたところで、警察官たちは一旦引いてくれた。

そのあと、現場検証が行われていて、テレビでよく見る青が基調で黄色の線が入っている作業服を着た現場検証員の方が2人いて、あのあほ女のためにどんだけ税金使っているんだよと思った。女性というだけでそんなに人が来るとは、ほんと日本社会は女性には優し過ぎると思う。

現場検証のときは、あほ女の態度が明らかに自分のほうが分が悪いことを察していた感の振舞い方だったので、恐らく現場検証作業員に色々指摘されてようやく自分の行動に気づいたのだろう。

俺からすれば、白線の内側を歩いていたとはいえ、車の方が俺に寄ってきたし、サイドミラーが当たった後、わざわざバックして俺に近づいてきて「白線の外を走っていたのに、(サイドミラーを)ぶつけられた」と言い放った。これだけの行動をする理由として、サイドミラーが当たったのは実はこれで2回目だったようで、あほ女が俺に痛い目に遭わせてやりたいと思っていたようだった。

ぶつかったのが9時前後で、全ての現場検証が終わったのが11時ぐらいだったから本当に無駄な時間をあほ女は使って醜態を晒しただけという、お粗末な出来事だった。

日本の社会において、車より人間の方が弱い立場であるという点と、俺は白線の内側を歩いていたし、片側1車線しかない細い道路で人に近寄ってくること自体が問題行動である。

もう1つ俺をイラつかせたことが、仕事での出来事だが、自分の技量をわきまえて行動できないあほ女性である。

俺は勉強が元々苦手だったし、国語なんて猶更のことだったので、上流工程である提案書については作成したことが無かった。一方でその女(プロジェクトリーダ)は俺に作らせてはここを直せ、あそこを直せとうるさい。まるで自分が会社の上司だと言わんばかりに立ち振る舞う感じは、飲み会で話せば元上場企業の大手出身で、結婚・育児を経て、子供が大きくなったので、10数年を経て社会復帰しました状態だったが、時代遅れの体育会系の乗りを俺に押し付けてくる感じがとてもうざかった。

口は上手いはプログラムコードは読めない、こういう上司は俺は糞ダサいと思っているので、プロジェクトの後半になってそれが判ってきた当たりから俺はやつの言うことはあまり聞かないで自分が思ったようにやることにした。俺は物事がちゃんと進むようにやっているので、やつが何を言おうが進捗には影響が無いのでプロジェクトはちゃんと進んでいた。

外見はちゃんとしているように見えても、中身があほな女性を立て続けに2人も出会ってしまったので、日本社会と照らし合わせて「危いぞ日本!!」と考えるようになってしまった。

最近では、兵庫県の斎藤県知事の行動について、テレビやマスコミは批判している一方で、YoutubeやTwitterでは斎藤知事を応援しているという歪な関係があることについて、自分としては、斎藤知事についてはどちらかと言えば良い印象を持っていない。

公約したもののうちの9割は達成しているということで、実行力があるのは判るが、ポーカーフェイスで何を考えているか分からない雰囲気を持っているのが人々との誤解を生んでいるように思う。つい最近も、選挙前のTwitterでの応援について、人を雇っての応援だった疑いがあり、どこに行っても疑惑を持たれてしまう感じが好きになれない。

自分が見ていて好きなのは石丸伸二さん!!陰気な感じは全然なくて、彼の言っていることはとても論理もしっかりしていて、明快な感じが聞く側としても気持ちが良い!!都知事になって欲しかったなぁ。

中国経済が怪しくなってから、転売屋の需要がほぼほぼ0になって、当社の売り上げも下がることが見込まれてきた2年前、新たな事業として考えたのがDX推進だったが、2年経ってようやく芽が出た。これを機にこちらの方も伸ばして行けたらと思う。

自分一人でDX推進ソフトウェアの開発ができる会社の規模は100人未満が目安。それ以上は工数も跳ね上がるし1人で開発は困難になる。1人で作る点と普通のソフト開発会社に頼む5分の1の値段で開発できる点を売りにしていこうと思っている。

愛車を売ります CBR600RR 2015年逆車

いつかはこの日が来ると思っていました。その日のために大切に乗ってきた愛車ですが、遂に売る決意をしました。
このマシンは逆輸入車で、最高120馬力を出力するモンスターマシンです。新車を買ったときの販売店の方から言われたのが、CBR1000RRを車に例えたらNSX、CBR600RRはスカイラインGT-Rです。そのぐらい速いので気を付けてください!でした。私は最高でも180Km/hしか出したことがありませんが、それでも9,000回転ぐらいでした。レッドゾーンは15,000rpm~なのでそのぐらいの速度であればまだ加速する領域です。
とは言え、サーキット走行はしたことがありませんし、丁寧に乗ってきたと自負しています。

改造している箇所は特にありません。事故等もありません。
バックシートの下にETCが格納してあります。

気に入っているバイクですが、手放すきっかけは、長距離移動をすると腰が痛すぎてとても楽しいツーリングとはならなくなってしまったからです。

購入店で点検しました。新車購入時は別の名前のお店でしたが、今はカワサキ専門店になっています。

本体購入価格は、車両整備費込みで160万円でした。整備・点検は適度に行ってきたので、状態はかなり良いと思っています。

今のMotoGPのREPSOL HONDAは散々たる結果ですが、当時は常勝軍団でした。その時代のように強くなるまではREPSOLカラーは出ないと思うので、プレミアム込みの価格設定をする予定です。

近日中にYahoo!オークションに出品します。

エクストリーム!アニメーション!

世間一般的なお盆休みが終わり、通常の生活に戻っていく今日この頃。

最近はChatGPT 4oを使うことが多くなった。仕事をするとき今までは頭を悩ませながら作っていたプログラムコードだが、今ではChatGPTを使うことでこれまでの4割ぐらいは作ってもらっている。今まではどのように作れば良いか分からないものがあったときに、必死になってググってそれでも大した情報が得られない場合は、試行錯誤しながら作っていたが、その時間がほぼほぼ無くなった。

Google検索ではどうやっても見つけられないものであっても、ChatGPTであればおおよそ正しそうなものを答えてくれる。GoogleもChatGPTも情報源は同じだと思うのだが、なぜここまで違うのかが謎である。Geminiを使うと一番おしりに情報源のリンクが載せてくれるので分かるが、ChatGPTはそういうところは隠蔽されている。

サンプルコードを書いてくれとお願いするとき、言語によっても正確さに差が出ている気がする。PythonやJavascriptのようなスクリプト言語の場合、ライブラリもソースコードで提供されている点が大きい気がしており、かなり洗練されたサンプルコードを提供してくれる。それに比べてC++のようなコンパイラ言語は、ライブラリは基本的にはモジュールとして提供されているものなので、その違いがあるかないかは分からないが、洗練されたものというよりは、回りくどいと感じるソースコードが提供される。

自分自身がC++を熟知しているからということもあるだろうし、C++では現せられないような文法をPythonが持っているので、Pythonが詳しくない自分にとってはそう感じるだけなのかもしれない。

ここ1~2ヶ月は、ひたすらアニメを見ていた。流行り物が好きではないため、今までは見て見ぬふりをしていたが、正面から向き合おうと心に誓って観たアニメが以下である。

①チェンソーマン

②HUNTER x HUNTER

③Naruto(途中で挫折)

④ジョジョの奇妙な冒険(途中で挫折)

⑤進撃の巨人

⑥呪術廻戦

⑦僕のヒーローアカデミア(今ここ)

挫折した理由は、その他のものに比べてワクワク感が少なく単調な感じで途中で飽きてしまった。

それ以外のアニメについては、どんだけ伏線張っているんだと展開が読めなさ過ぎて期待が膨らみ、それらを回収したときの答え合わせが自分の想像を超えてきたときに、めちゃくちゃ考えて作られていると思い知らされる点が凄く面白い。日本のアニメが世界に広がっている理由が良く分かる。

今作っているChatBOTは、BOT側がWebSocketのサーバ側になり、各々のクライアントアプリと通信することで、まるでブラウザ版ChatGPTをChatGPTのAPIを使っている感覚で利用できることを目的としたものである。Word Pressのプラグインとしての利用も想定しており、手軽にChatGPTを使えるツールを目指している。

その次は、エルメス自動購入を予定している。Discordの通知は行わず、独自の方法で通知を高速にBOTに送り、購入手続きを進める。

通知システム自体もEmperor会員数が増えれば増強していきたい。

コカ・コーラを日本一売った男の学びの営業日誌

今読んでいる書籍である。私は営業行為に対して苦手意識を持っており、成功した試しがない。

私が苦手意識を持っている営業とは、飛び込み営業のことだ。営業職に就いたら必ず経験することになる新規顧客の開拓だ。このテクニックさえ身に着ければ一生食べていけると思う。

営業職は、ものを売ってくることが使命になっている。しかしこれは営業する側の立場で考えたものであって、ものを買う側の目線では無い。ここに落とし穴があることをこの本で思い知らされた。

ものを買う側の目線で営業するとはどういうことか。そのことがこの本に様々なケースとして書かれている。この本の著者自身が自ら経験した知識を惜しみなく伝えてくれている。

私が会社員として働いていたときに、上司や取引先の顧客を好きになったことがあるのは20年以上働いていた中で二人しかいない。(恋愛という意味ではない)

最初に出会った好きな取引先の顧客は、寡黙な方だったが決してこちらに押し付けることはせず、一緒になって考えてくれていた。まだ若かりし頃の私は今ではブラック企業に認定される程の信じられない働き方をしていて、とても続けたいと思うような開発環境ではなかったため、自分の会社を辞めたあともその方からお声がけを頂いたがお断りした。お声がけ頂いたことは嬉しいが、あの環境には二度と戻りたくはない。

誤解が無いように付け加えておくと、自社の働き方が異常なだけであって、取引先がブラックということではない。私も含め開発メンバー全員技術力がある訳でもなく、作ってはバグを出しての繰り返しで、永久ループを作っていただけの話である。

もう一人の好きになった方は会社の上司だった。歳は私より若かったが、見た目からは想像できないが話をすると知識の豊富さで頭が良さそうだというのが直ぐに分かる感じの方だった。

大手企業との打ち合わせのときに、私などは緊張しまくって話しても噛みまくっていた状態だったが、その上司は冷静沈着で分かりやすい口調で顧客と対等に話をしていたのがとても印象に残っている。

子供っぽい心も持っていたのが意外ではあったが、ガキだと上から見下ろそうと思うこともなかった。こちらの話には常に親身に聞いてくれるからこそこちらも頑張って仕事をこなして行こうと感じさせてくれていた。

私がこの事業を通して皆様に伝えたいことは、インターネットという技術を使った様々なサービスについて、様々な憶測がある点を取り払い、全て真実をお伝えするということです。

インターネットで使用されている技術は全世界共通言語であり、公平な環境が与えられています。回線速度の良し悪しはあれど、一般的に使う分にはそう大差ありません。その限られた技術の中で、如何に有利な立場を作ることができるかを常に念頭に置いて開発しています。

2年前にエルメスオンラインのリストック監視で限界を感じたのは、当時は持続可能な状態では無かったという点があります。今の仕組みについては、現状を維持できるのであれば、持続可能なものを構築できたと自負しています。

エルメスオンラインだけに限らず、リストック監視が困難な様々なサービスにおいてもこの技術は有効だと考えているので、気軽に相談してもらえたらと思います。

ちょっと気が早いがするが妄想は止まらない

リストック監視には難しいサイトには持ってこいのシステムが誕生しつつあるなかで、アイディアがまた沸いてきた。

zozotownのリストック監視もきついサイトであるが、リストック監視を代行することが可能なことに気づいた。

discordへの通知は遅延が激しいので、独自の通知サーバを建てることで、よりリアルタイムに近い通知を提供する。

しかも、通知先は当社のBOTなので、あとはカートインコマンドを発行するだけ。メンバー通しの争いになるのは仕方ないが、そういう状況になるのが理想である。

煽てられると乗り乗りになるので、今からEmperor AIOに加入しよう!!

ピコタンロック監視機能が完成した。

動作させている画面を見せたいところだが、企業秘密を晒すことになるのでアップすることはできないが、自分の思い描いていたもの以上のモノが出来上がった。

ブロックされにくいというのが一番の売りだ。

開発中に画像認証の仕様を変えられてしまうというアクシデントがあったが、こういうことをやってくる企業だと言うことは分かっていたので、違う方法で対処した。

お試し期間として1カ月動かしながら様子を見る予定だが、今回の改修は凝ったことは特にしておらず、ありのままの自動操作を行っているだけなので、エルメスオンライン側の対策で開発を断念せざるを得ないケースになるのは考えにくい。

また、お試し期間はどのぐらいの費用が掛かるのかチェックしたいため、監視速度は遅めに設定している。Emperor AIOの加入者が増えるにつれて機材を増強していき、監視速度をアップさせていくので、是非とも加入して欲しい。

今後の予定としては、独占契約予定のBOTを1本作ったあと、1か月のお試し期間を経てエルメスオンライン自動購入のアップデートを行っていく。

中国経済の落ち込みからか、転売するもの自体が減ったのか、転売する旨味が減ったのか、Emperor AIOの利用者は激減してしまったので、エルメスオンライン自動購入で再び加入者が増えることを期待したい。

過去に作ったエルメスオンライン自動購入は、ピコタンロック監視機能を稼働させていたのが2~3か月だけだった。購入に積極的だったユーザ1人を除き、居たのか居ないのか分からない状況で、私と積極的なユーザ1人がゲットしているので、速度的には十分他と戦えるものである。

ピコタンロックに詳しい方から18と22の情報を入手したが、お試し期間中は速度が遅いこともあるため数を絞るために18のみの監視にします。商品が出現したときは、販売サイトに表示しているDiscordにPostします。

新バージョンのブラウザについて(途中経過)

最近思ったように時間を取れないのが悩みの種ですが、少しずつ前進してはいます。これまで作ってきたBOTの機能を踏襲しようとした場合、タブウィンドウにする必要があるので、それを制作できたら完成にしたいと思っています。

先日同業者とお酒を飲む機会があり、OpenAIのトークンによる有料アクセスが高すぎると嘆いていたので、攻略を練っていました。

DevToolsのネットワークタブで受信したデータが見れたので、それをプログラムから取得しようと試みたのですが、そういう使い方をされるための防御が既に入っていてDevToolsの通信プロトコルからの取得は出来ないようになっていました。しかし、これで諦めるのは悔しいので、Domドキュメントから取得してBOT用API化する予定です。

C++やPythonからChatGPTに問いかける文字列をBOT用APIから呼び出したらChatGPTの画面に送信し、AIが応答してきたものをBOT用APIから応答する仕組みを考えています。月額2,000円にする予定です。

このBOTの恩恵を受ける人は、ChatGPTの有料版を使用していて常日頃から大量のトークンを使ってやり取りする方で、自動化したいがChatGPTのAPIは高いから使いたくないという方向けです。


最近、妙に政治家の動きに敏感になっています。良いことなのかはどうかはさておき、政治資金規正法の行方が非常に気になっています。

政治資金パーティーは何で必要なんですか?無くても政治活動できますよね??お金掛けないと政策が滞るのですか??お金掛けないと人気が無くなっちゃうんですか??そんな政治家は大した実績も残せないでしょうから、すぐに辞めて若い人に席を譲ってください。貴方は自覚が無いだけで実は立派な老害です!

GW突入!!

大型連休は何処も混むので、この時期に家族で旅行することはなく、大抵はバイクで旅に出たり、遠方の友人と飲んだりする。

高速道路は何処も渋滞な上に必ず事故渋滞でとんでもない待ち時間を喰らうことになる。事故の原因は単純に車が多すぎるのと、普段乗り慣れていない人が高速を走るからだと思っている。

GW廃止という意見は前から有ったらしく、こんな記事がある。

https://www.itmedia.co.jp/business/articles/2405/01/news030.html

大型連休を作ったことで観光業を盛り上げようとした安倍政権だが、実は今の自民党よりももっと興味がなかった。安倍政権になってから政治に無関心になったと言っても過言ではない。

安倍政権が何をやったのかを挙げること自体が難しい。興味がないから知らないのだ。なぜ興味がなかったのか自分で分析してみたが、発言の仕方がパフォーマンス的な感覚に見えていて、期待感が沸かない。3本の矢で日本は何が良くなったのか全く分からない。

カケイ学園問題は誰が見たって黒だし、宗教問題にそこまで染めていたのはビックリした。この世から居なくなっても尚、裏金問題で世間を騒がせている。何一つ一般庶民の生活が良くなったという実感がなかった。潤ったのは上級国民だけだろう。上級国民のための政治!がしっくり来る。

もっと日本を良くするために真剣に考える政権は無いの?本来そうあるべきじゃないの?目先の利益しか考えてない人しか上に立っていない。これじゃあ海外から舐められて当然だよ。にやにやしながらしゃべるな!!

当社の期の変わり目が4、5月のため、決算のための整理に追われ、またフリーランスという立ち位置でやっている仕事にも追われ、やりたいことができるのは5月下旬以降までずれ込みそう。

忙しくなる前にChromiumの中でもうちが必要としている部分の解析は既に終えており、今後はより最新ブラウザに近いもので動作させられることによる恩恵を全BOTに反映することを計画している。あとは実行に移すのみなのだが、もう少しお待ちください。。。