Execlセル内でbase64エンコードする

外部に提出しないExeclは効率UPのため2003を使用しています。最新のExeclでは、base64 エンコードくらいあるかと思っていましたが、ないんですね。「Execl base64」で検索してもあまり出てこなかったので、マクロExecl .xlm で作成しました。

Win32 APIの暗号化ライブラリで、API:CryptBinaryToStringA があったのでそちらの .dll を動的参照います。使用します。1コールでいけます。コードは以下の通りです。2003や32bit版offsice ビルドスイッチで切り分けています。URLセーフ(URLで使えない記号を置き替え、%xxのURLエンコードとはだいぶちがう) は、APIないので作りました。VBAエディタで「標準モジュール」に挿入します。

ちゃんとAPIエラー、引数エラー、VBエラー検出も組込みましょう。ネット上のサンプルはそれがあまりできていないようで実用上問題です。Execlの記述は、

Google Testとは? その1

複数のプラットフォームで稼働するといわれている Google Test とはとんなものでしょうか? 単体テストツールということは存じています。

昔昔、PCはおもちゃで、高価なUNIXワークステーションでソフト開発をしていました。当然一人一台はありません。マシンでの作業の手戻りを少なくするため、単体テストは重要度が高かったです。しかし近年PCは一人2台以上、クロスプラットフォーム、OSシュミレータ等々あり、(新人さん以外は)どんどん作って動かした方が効率的ともいえます。

しかし組込みソフトは、基板が未だできていない場合、基板が全員分無い、実行時間と人の時間の差が大きく、実機リソースも小さいため、実全てのパスを通しそれを確認することが難しい。そこで自動車業界では、WinAMS がよく使われます。PC上でマイコンレスでコードレベルの検証を行うものです。GUI上で引数を指定して関数単位で実行しカバレッジを収集します。テスト項目の自動生成もある程度できていたかと思います。しかしとても高価です。

もちろんUNIX系でGUI無し以外では、このような場合 Google Test (以降 gtest と呼びます)の出番なのかと。GUI無しぱっと試した感じ以下のようでした。

テスト項目や条件、実行は人が行う必要があります。

いわゆるドライバ、スタブ(モック)の標準機構といえそうです。デバック用に関数の呼出しと結果判定、スタブの呼出しと切替えのための各種機構と部品がそろっているプラットフォームと言えます。ですから覚えることは色々あるようです。

C++ は gtest に合わせて少し直しが必要そうです。

基本は git-hub から落としてビルドする必要があります。テスト対象との結合方式は ライブラリ( XXXX.a もしくは XXXX.lib )。うまくできてたか心配になります。

基本結果はコンソール出力です。GUIアプリにマージできなくもないとは思いますが、イベントドリブン的な感じではなさそうです。

Visual Stdio 2019でも含まれていました。この場合はWindows上から直接実行できます。しかし2018くらいのバージョンの模様です。

Visual Stdio 2019でということで以下試した結果です。いつものプロジェクト作成から選べました。

スタテックリンクするかdllか聞いてきます。

しかしスタブ(モック)機構が Visual Stdio 2019 は入っていないので、NuGetからパッケージを入れます。mockとのネーミングとなっていますが、gtest 本体も含まれています。

インクルードとlibパスは手動で追加します。gtestのみのパッケージ、プロジェクトフォルダ\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.4 は参照しないようrenameしておく。

実際のコードです。Performance クラス の Acceleration メソッドのテストにて、Acceleration 内て呼び出している Parameter クラスの Speedメソッド と Weightメソッドを、テスト用に固定値を返すようにしたものです。クラス図を以下に示します。

コードは以下に示します。説明はコメントをみてください。

test_main.cpp:

test_class.h:

test_class.cpp:

Mock_class.h:

以下、実行結果です。

なるほど。UNIXサーバ上でtターミナルでログインして開発していたころを思い出します。


その他 gtest に付随して、カバレッジの取得と、カバレッジのhtmlでのビジュアル表示なども可能です。Mockについては、クラス化が前提となってるのが難点ですが、必ずしも使わなくてもよいです。何分、高価な単体テストツールを投資せずカバレッジがとれるので、組込みソフトの机上デバッグに最適かと。もしも急いで動かしたい方は、ぜひこちらよりご相談ください。

Xperia Z3 tablet Compact Wi-Fi 32GB版をAndroid11当にSetupする2 ‘24.4月編

前記事では基本的なセットアップを行いました。ここでは動作確認した結果の問題点を報告します。

LTE版のSGP621、後継10inch版の Z4 Tablet でも少し危うい感がありましたが、Wi-Fi版 32GB SGP612 では完全にGPSが動作しません。うんともすんともです。以下、GPSTestアプリの実行です。

以下のROMを試しましたが全てダメでした。

  • lineage-18.1-20230301-4microg-CUSTOM-WiFi-z3tcw.zip
  • lineage-18.1-20230428-UNOFFICIAL-z3tcw.zip
  • lineage-18.1-20231011-4microg-UNOFFICIAL-z3tcw.zip
  • lineage-18.1-20240321-microG-UNOFFICIAL-z3tcw.zip

iode-2.15-20230927-z3tcw.zip は試さずですが、祖先は同じでしょうから無理でしょうね。

一度純正ROMに戻して、ダイアル #*#*7378423*#*# によるfactorytestモードで確認してみます。衛星は見つかってますね。ハードウェアの問題ではないといえます。

海外の情報を調べてみます。有名な XDA に SGP621 – GPS can not found any statlites custom ROM というスレッドがありました。このスレッドは、2016年から始まっており、2023年10月21日の記事でも “does not woek” と投稿があります。最終的には改善したという投稿はなかったです。かなり潜在的で長期的な問題であるようです。

ストレージ容量の違うSGP611では動作したという投稿もありました。推測ですが、Wi-Fi版とLTE版でGPS制御方法が違うのではないでしょうか? それを合わせこもうとすると、調査とプログラミングで数日でできるようなハナシでは無くなります。費用体効果からみても誰もやらないのでしょう。SGP612ではGPSは諦めましょう。Z3 tablet Compact でGPSをどうしても使いたい方は、SGP621を手に入れるのが賢いでしょう。

FMラジオの周波数が表示されないです。どのみち周波数バンドが海外になっているので追及しても仕方ない感じです。とおもいましたが起動2回目で表示されるようになるようです。


カスタムROMは有志の方が作られたもので、メーカのような開発体制はありません。制約があって当然です。少し都合が悪くてもそれ理解しありがたく利用しましょう。

Xperia Z3 tablet Compact Wi-Fi 32GB版をAndroid11相当にSetupする1 ‘24.4月編

前回 Xperia Z3 tablet Compact LET版(SGP621) をAndroid11相当にupdateしました。Wi-Fi版もほぼ同じであろうと依頼を受付けた結果をレポートいたします。


  • 対象機種:SGP612、Wi-Fi版、ストレージ32GB。16GB版のSGP611 と 32GBのSGP612 の2種類が出回っているようです。SGP611 は異なる部分があるようです。詳しくはこちら。
  • GPSは使えなくなります。詳細は後術。
  • ラジオは使えなくなります。詳細は後術。
  • *#*#7378423#*#*から呼出す端末専用のサービスメニューは使用できなくなります。

各種用意するツールやROMデータは公開状況が日々変化します。当方は以下の構成で行いました。当方から配布はできないため、くぐって入手してください。https://androidfilehost.com/が主な入手先です。

Bootload unlockとリカバリ書換用アプリflashtool-0.9.36.0-windows.exeWindows用書込みソフトのインストーラです。GUIアプリ、Xperia用USBドライバ、CUIコマンドを含んでいます。
root化イメージ不要xperiaはroot化不要です。
Bootloader Unlock禁止の解除不要Wi-Fi版は出荷状態で「Bootloader Unlock Allowed: Yes 」です。
bootイメージboot.imgOSイメージを解凍し取り出す。
カスタムリカバリpbrp_9.0_z3tcw.imgPitchBlack Recovery 。twrpはOSインストールでエラーが発生した。
OSイメージLineage-18.1-20240321-microG-UNOFFICIAL-z3tcw.zipAndroid11互換。bootしない場合は、lineage-18.1-20230301-4microg-CUSTOM-WiFi-z3tcw.zip を試す。
OpenGappopen_gapps-arm-11.0-mini-20220215.zipArm32 bit用。パッケージはLTE版16GBでは「stock」 まででしたが、こちらは「mini」 までupできます。’24.9月ではGoogle Playが動作しない可能性あります。詳しくは SGP771の記事を見てください。

他のサイトでも多数説明されているため、分かりにくい部分、異なった部分を説明したします。

① サービスメニューの呼出し

LTE版は電話アプリがあるため、サービスメニューの呼出し番号「*#*#7378423#*#*を迷わず入力できますが、電話アプリの無いWi-Fi版ではどうするのでしょう。以下の手順でした。番号は同じです。

上記から、Services -> Configuration を開くと、「Bootloader Unlock Allowed: Yes 」が確認できます。LTE版と異なり、IDID IMEI で同じ意味を示すようです。メモっておきます。

尚、この端末情報には、「ETC Software version」という項目があり、「1287_1605_4」と「1287_1605_5」のものが見受けられました。セッティングには影響はない模様です。

② Bootloaderロック解除コードの取得

Sonyサイトにて機種とIMEIを入力し、Bootloader unlockの解除コードを発行します。機種の選択は、Wi-Fi版とLTE版は共通でした。

この後、2つの「🔲I acknowledge … 」にチェックを入れて、submit ボタンを押します。この後、ボット判定のためのダイアログが表示されます。LTE版のときは無かったような、、、 足し算の結果を入れますがNGで弾かれます。間違いようのない計算ですが何度やってもダメ。内部的に当ページが閉鎖したのでしょうか?

Stack Overflow に同様のお悩みが記載されいましたが、解決方法は未記載。カンどころで、ブラウザを Firefox から Edge に変えると、機種画像が表示されるように改善されましたがコード生成の同じ。 Chorme に変更すると、なんとボット判定がスキップされ、解除コード生成が成功しました。サーバ仕様が変わったようです。【これは’24.9月まで】 ‘24.10月以降では、Sony Developer に登録が必要なようです。登録はどなたでも可能なようです。登録時間は5分程度です。

③ Bootloaderロック解除

この操作は今までと同じでした。 解除の後、USBケーブルを抜いて電源ON、SONYロゴの後、Androidのロボット画面がしばらく表示されます。その後、再びSONYロゴが表示、初期化処理が行われ、OSが起動します。サービスメニュー -> Services -> Configuration を開くと「Bootloader Unlocked : Yes」の表示を確認します。(下図)

尚、Bootloaderロック解除後、純正ROMに戻すと「Bootloader Unlock Allowed: Yes 」に戻ってしまいます。そこでもう一度Bootloaderロック解除すると fastboot GUI版 はどこかからロック解除コードを取得しロック解除します。端末のどこかに記憶されているのかもしれません。

④リカバリの書換

fastbootでリカバリを書換えは成功しますが、Volume Down + 電源 ボタン でリカバリーが起動しません。一度純正ROMに戻してみても Volume Down + 電源 ボタン で純正リカバリーがも起動しません。 SONYロゴ横のLEDが黄色に点灯するだけ。他のWEB記事を拝見させていただくと、どうも boot.img の書換が必要みたいです。boot.img は、OSの.zip の中から取出し、電源offから VolumeUP + USB接続し、SONYロゴ左のLEDが青に点灯した状態で、以下のように fastbootのでbootを書換ます。

このあとリカバリPitchBlack Recovery を書きます。この操作は今までと同じでした。 失敗するとリカバリが起動せず、SONYロゴ画面が繰り返し状態になりました。一度 twrp-3.0.2-0-scorpion_windy.img を書いてみてそちらの起動を確認した上で、PitchBlack Recovery をもう一度書くと起動するようになりました。リカバリを認識すると SONYロゴ横のLEDが緑点灯青点灯します。このタイミングでボタンから指を離します。

⑤ OSの書換

これでVolume Down + 電源 ボタン でリカバリーが起動するようになりました。リカバリは当初TWRP公式サイトに置いてあった twrp-3.0.2-0-scorpion_windy.img を使いましたが、OS書込みで下図エラーが出てしまいました。

古いVersionもNG。ちなみに scorpion_windy とは Z3 Tabblet Compact Wi-Fi版のコードネームらしいです。z3tcw w は Wi-Fi版の意なのでデバイスの認識は合ってそうですが、、、代わりにPitch Black Recovery: pbrp_9.0_z3tcw.img を見つけて書込みし解消しました。Pitch Black Recovery の使用方法は、TWRPその他とほぼ同じです。左下がOS書込み成功時の画面です。ここで一旦OSを起動して確認します。初回起動は5分程度かかります。問題ないようです。(右下図)

⑥ OpenGappのインストール

【’24.9月追記 MindTheGapp をインストールした方がBestなようです。詳しくはこちら

Open Google Appは、これまでZipにてリカバリからインストールしていましたが、アプリ版もあるようです。試してみましたがうまくいかず。

これまでどおりZipにてリカバリからインストールします。Wi-Fi版は32GBと容量が大きいのですか、miniパッケージまでしか入りませんでした。(左下図) アプリのイントール状態は右下図のとおりです。OS と OpenGapp を同時にインストールすると error 20 が発生する場合があるようです。その場合は、インストール cash を wipeして、OpenGapp を追加インストールします。


これで一旦セットアップが完了しました。予想よりLTE版との違い、環境の変化もあり、冷や汗ものでした。

以上、Z3 Tablet Compact Wi-FiをAndoroid11相当にUpdateできました。しかしながら自分でやるのはメンドクサイ、忙しい、自身が無い方は、弊方でセットアップをお受けいたします。Xperia Z3 tablet Compact Wi-Fi版は難易度低、約1.0時間の個人様向け工数+事務費で税込3,500円~ 。ご相談、依頼はこちらから。

動作確認編パート2につづきます。

ライディングパンツのウエストを紐化する

趣味や得意なことを事業化できれば効率的です。簡単な自動車用品を加工をできないか模索しています。


ライディングパンツのウエストサイズは、インチの1つ飛びが多いです。例えば、28インチ、30インチ、32インチと。。。よって無いサイズは一つ大きいのを選ぶことになります。しかしライディングで前傾が強いとベルトは邪魔です。ベルト自体を使わない方もいらっしゃるでしょう。

プロテクターパンツを中に履く場合は、丁度よくなりますますが、街乗りではプロテクターパンツまでは履かない。プロテクターパンツを履く場合がある方は、ウエストを縫って詰めるのは避けたい

ベルトでなく、状況に応じて調整しやすくするには、、、ヒモ縛りに加工すればよい。

以下は、RSタイチ 30インチの加工例です。ヒモが外側に見えないよう内側出しとしています。

ベルト部の内側が、後ろセンターで縫合されていないタイプならヒモを通せます。スラックスなどは後ろセンターで縫合されていますが、ライディングパンツなどチノパン的なものは大抵縫合されていないです。ボタンの受け側と同じように、ヒモ入口は手縫いで外周を覆ってほつれないようにします。

ヒモは細すぎると役にたちません。ある程度丈夫で柔軟がありヒモは中々ないです。パンツと色も併せたいです。北陸に編み模様と太さを指定して作ってくれるヒモ屋さんがあり、パンツ柄に合わせて迷彩、太さ8mmでお願いしました。ただし5mからなのでどうしても余ってしまいます。

RSタイチ以外に、HYODOマックスフリッツなども、ヒモ仕様の加工を施しています。

ご興味のある方で自作は面倒な方はこちらまで。