Visual Studio 2022 でデバック中にコード変更した時の警告を非表示にするには

最近のVisual Studio では、デバック中にコードを修正すると、その部分に波下線で強調されます。コードエラーかな? とマウスオーバしてみると「プログラム再起動しないと反映しません」と大きなお世話です。初心者への考慮、Xamarinのホットリロードへの配慮と思いますが邪魔です。

具体的に以下の ENC1003ENC0011 、他 ENC0021 も発生します。

こちらはビルドの警告ではないので、AssemblyInfro.cs の以下の場所に抑止の記述を追加します。

無効にした警告をまとめると以下のとおりです。

国内記事には本件は見つからなかったため紹介いたしました。

Visual Studio 2019でfileクリックだけでエディタで開かれてしまう策

自己覚書です。

Visual Studio 2019では、プロジェクトツリーから、fileをOneクリックだけでエディタで開かれてしまう場合があります。製作者側は「便利」とおもったのかもしれませんが迷惑です。プロジェクトツリーを上下キーで移動する場合もあります。遅いPCならなおさらです。

以下を変更します。

TestFlightにてXamarinアプリをiPhoneにインストールするまで4:XamarinのIPAのUpload調査

前回記事

前回 Xcode の IPA は、TestFlight App Store にUPLOADすることが確認できました。Xamarin での IPA Uploadエラーについて調べていきます。

エラーの内容は、

文字通り「 IPA の容量が 60 MB を超えた」ということですがイマドキ少なすぎる気がします。Apple サイトをみると、iOS 7 ~ 8は60MBで、iOS 9以降か500MBと記載されています。 Appleに問合せるとDeveloper Forum で聞けと言われ、当Forumに書いてみましたが情報は得られず。StackOverflow の投稿によると、本当に60MB制限に容量を抑えなとダメなようです。

Xamarinのビルドオプションの見直しをしていきます。IPAの容量削減のための方法は、コアビルダであるApple側には説明はなく、Mircrosoft側の このページこのページ あたりに解説がありました。以下のように実施していきます。尚、画面キャプチャは Visual Studio For MAC のものです。

.iOSのプロパティから コンパイラ (Windows用はビルド) を開き以下のように設定します。 ほぼ当然の設定ですね。

.iOSのプロパティから iOSビルド (Windows用はiOS Build) を開きます。試した結果と設定を以下に示します。理論的に理解しにくい部分です。httpClient実装 は理解困難ですが、Visual Studio For MAC でのtooptip 表示によると、容量と実行速度に左右するとのこと。Monoインタープリタは、インタープリタ==遅い という一通念からoffとしました。

.iOSのプロパティから iOSデバック (Windows用はiOS Debug) を開き以下のように当然ながら設定します。

以上で、IPA 容量は、47 MB → 12 MB に削減できました。無論クリーンビルドにて。

そもそもは TestFlight は テスト/デバックなので、ビルト構成「Debug」を「TestFlight」にコピーしてしまうとつまづきます。ビルト構成「Release」を「TestFlight」にコピーして使いましょう

また Xamarinでは、ソリューション全体のビルト構成プラットフォーム毎のビルト構成 の2種類があります。この2つの関連付けを正しくしておかないと、意図しないビルドが実行され、いくら設定変更しても容量が変わらないというワナにはまります。以下、その設定箇所です。

以上でエラー要因は解消したはずです。

次記事 IPAの再UPLOADに続きます。

TestFlightでのテスト用アプリのアップデート手順

前回記事:TestFlightでのテスト用アプリのセットアップ手順

弊方のユーザ向けに、TestFlightでアプリのアップデート操作をまとめました。

アプリをApp Storeへアップデート後、e-mail等にてご連絡を差し上げます。

アプリをApp Storeへアップデート後、Apple側で認証が行われます。テストユーザの違いによって、以下の時間がかかります。

ユーザ所要期間
Apple Developer に未加入のお客様確実には1~2日。土日除きます。
タイムゾーンは多分USA。
平日のUAS時間であれば数分という場合もあり。
土曜も行ける場合もあり。
既に他ユーザのリリースしているバージョンであれば、基本待ち時間なし。(確実性は不明)
便利ではありますが、かなり気まぐれなので当ケースを期待したシステム運用は避けるべきです。
Apple Developer に加入済みのお客様10分程度。

Apple側で認証が完了すると、登録いただいたemailにAppleから連絡がとどきます。メールには、当方からのリリース説明も記載されます。

TestFlightにて自動アップデート(前回記事を参照)を無効にしていない場合は自動アップデートされ、以下のようなメッセージが表示されます。

次端末内にアプリのデータを保存する方式のアプリの場合、アップデートにより消去される場合があります。アプリの機能にて、データのエクスポートを必ず行ってください。以下その一例です。

次に、iPhoneにて TestFlightアプリ を開いて、アップデート をタップしてください。アップデートが始まります。概ね2分程度です。

アプリデータが空になっていた場合は、インポート機能でデータを復旧させてください。

(1) Appleから承認前でもバージョン番号がupされ アップデート がタップできる状態になっている場合があります。しかし実行すると以下のようにエラーが発生します。Appleからの準備完了メールをお待ちください。

以下のように操作します。

ただし仕様変更でデータや通信フォーマットが変更になった場合、不具合で不正確な情報やデータを壊したりするバージョンは、弊方側にて「テスト無効」にする場合があります。全ての過去バージョンが使えない場合があります。

関連記事: TestFlightが届かないとき

一人会社の免税事業者のインボイス対応実情

弊方では、どうしても課税事業者に切替える理由がないため、今のところ免税事業者で運営しています。適格請求書の施行が開始されましたが、免税事業者が具体的にどう対処しているか、販売先での扱いについて弊方の実情を記載いたします。尚、弊方では消費税を希望されるお客様に対しては、売上額 - ( 売上額 ÷ 1.1 ) で内税を算出して計上してます。弊社内会計上は消費税は無し、消費税による上増しは行っていません。

たいてい販売先から免税事業者か課税事業者番号を、各社独自の申請書を書いてと言われます。そのヒアリング状況です。事前確認と都度対応の2ケースに分かれるようです。

お客様ヒアリング状況備考
法人1申請書提出済み免税事業者で回答。
法人2申請書提出済み免税事業者で回答。
法人3申請書提出済み免税事業者で回答。
法人4特になし
法人5特になし
個人1特になし

一番の課題は、免税事業者との取引継続するかです。ヒアリングで免税事業者で回答し、苦情がなかった場合はほぼOKと解釈とします。個人様は関係がないので除外します。

お客様ヒアリ免税事業者との取引備考
法人1ほぼ可
法人2
法人3ほぼ可
法人4多分可
法人5不明

販売先への請求書への消費税計上方法です。定期的に取引があるお客様は、事前に取り決めされています。

お客様請求書への消費税計上顧客側の対応
法人1未定
法人210%3年間の経過措置で消費税額80%で仕入れ控除。
法人3未定確認中。
法人4未定
法人5未定
個人無し

そもそも免税事業者は「消費税」 は会計上、存在しません。本法の施行前では「消費税を仕入れに計上するかは仕入れ先の判断」でした。そこで販売先で「消費税仕入れ控除」します。販売先の利益が向上しますが無いハズの消費税を差し引くことは計算としては変です。しかし利益が向上すると法人税は増えます。

仮に売上20万円に対して以下の請求パターンが発生します。出ていく金額は多くてもCASE2が望まれる傾向があるようです。 「仕入れ控除」をしなければならないという旧来からの固定観念でしょうか?

CASE売上額消費税額
1200,000円0円
2200,000円20,000円

販売先での会計方法に着目すと、消費税は 税抜経理方式(仕入れ毎に消費税を計算) と 税込経理方式 (仕入れ総額から消費税を計算) があります。 税込経理方式 の販売先では、消費税0% と 消費税10% が混在すると、経理工数の増加、経理ソフトの不都合が発生しそうですね。ChatGTP にも聞くとそのような回答でした。経理の方が頑張ってくれれば、「免税事業者と取引しない」という会社さんも減りませんかね?


コンシュマーサービスの場合は、消費者に安価にサービス提供できるので確かに得です。

BtoBの場合、一人で会計も行う場合、消費税が無い方が工数的には楽ではあります。しかしソフト開発では仕入れ的要素が少ないため効果は低い。しかしOS、ミドルウェア、ソフトウェアサービス、ネットワークサービス、BtBマッチングサービス、PC、開発用端末、計測器、交通費 で、一月平均10万円は出ていきます。年間12万円の消費還元できると大きいです。

以上、新しく事業をされたい方のご参考まで。

AWSのサービス終了の操作

サービス終了時のAWSの片づけmemoです。AWSサービス機能は多数に分かれていて、どれかどう料金に影響かるのか判断が難しいため、それぞれでのサービスで掃除しました。「システム名を定義できて各サービスを紐づけでき一括削除」とできるようになるとGoodですね。

管理 -> モノ の一覧から、名前の左にチェックを入れて、削除 を選択します。設定のExcportはないようです。潔く削除です。注意点はサーバ毎に設定があり、「東京」以外にも使っていたらそちらも削除です。初期ログインでなぜか「バージニア州」に飛ぶことがあり、残骸が残っていました。


Lambda -> 関数 の一覧から、名前の左にチェックを入れて、削除 を選択します。Application Composer にエクスポートより関数をエクスポートできるようですが、S3(ストレージ) サービスが対象となるようです。ブラウザ上のLambdaエディタからドラックして、ローカルのテキストエディタへコピぺするのが手っ取り早いのようです。

レイヤー( 共通化ライブラリ的なもの ) も残っていたら削除します。こちらは「ダウンロード」からPCローカルにExportできます。バージョンが複数あると、バージョン毎に削除操作が必要です。


DynamoDB -> テーブル の一覧から、名前の左にチェックを入れて、削除 を選択します。Create文等にエクスポートは無いようですが、どこぞやにBackupするか聞いてきます。面倒なのでやめておきます。削除は少し時間がかかります。しばらく 削除中 の表示となります。


AWS Backup -> バックアッププラン から、設定ずみりバックアッププラン を選択し、削除を選択します。バックアップルールリソースの割当て も同時に削除されます。

AWS Backup -> バックアップボールト より、ボールト名 を開き、復旧ポイント名のチェックをいれて 全てを削除 を選択します。件数が多い場合は、一覧の表示件数を100件に切り換えてから操作します。

AWS Backup -> 保護されたリソース に Backup されたデータが残っています。前述のバックアップボールトで削除されます。


API Gateway -> API より、API を一つづつ選択して削除を選択します。こちらもエクスポートは無し。一回の操作で削除できないことがしはしば。数回繰返していると削除できました。


AWS Amplify -> すべてのアプリ から 対象のアプリを開き、削除を選択します。「バックエンド環境があるます」と警告がでます。問題なければ操作を進めます。1分程度かかりました。アプリ表示が残っている場合は、AWS Amplify からWEBページを再表示します。


Amazon S3 -> バケット から、パケットを開いて削除を選択します。


何度か調査で使いましたが、特になにもしなくて良いようてです。実験コードの掃除はしていたかと思います。


インスタンスの一覧では、削除の項目は見当たらず。インスタンスを終了だけしておきました。


ここには色々な権限の情報が残っています。IMA -> ロール を選択し、自分でつくったロール名だけチェックを入れて削除を選択します。

IMA -> ポリシー は、自分でつくったポリシー(タイプの列がカスタマー管理)だけチェックを入れて削除を選択します。ここは一件づつしか削除できません。


S3 よりも高度なストレージです。機能調査に一時使いました。使ったあと掃除していたようです。


バーチャルPC ですかね。機能調査に一時使いました。削除しておきます。

これでAWSサーバの掃除ができました。

以上、結構手間がかかります。半日仕事です。サーバ停止工数も見積に含めましょう。

WordPress のテーマScaffoldで投稿者を非表示にする

他のテーマでは、メニュー項目から投稿者表示をOFFできるようですが、テーマScaffold での情報がありません。調べてみました。テーマは吊るしで使ってるものだと思います。

htmlのコード展開をみると、”byline” “author vcard” のタグつけされています。

WordPress左メニュー「外観」→「カスタマイズ」→「追加CSS」から以下を追加しても効果なし。

動的生成されているなら、phpスクリプト内にありそうです。WordPress左メニュー「外観」→「テーマファイルエディタ」からphpを一つづつ開いて検索してみると以下の場所でした。

編集部を以下のようにコメントアウトして保存します。

これで投稿者名は非表示となりました。

他のテーマでは、cssやメニュー項目から投稿者表示をOFFできるようですが、テーマScaffold では phpスクリプトの修正が必要なようです。

TestFlightにてXamarinアプリをiPhoneにインストールするまで3:XcodeのIPAをUploadを試す

前回記事

次に Xcode で生成した IPA を TestFlight で Uploadとしてみます。 基本的なことができるかトータルの環境をチェックしてみました。Xcodeのバージョンは 14.2 です。

Xamarin.iOSアプリをiPhone上でデバックする場合、先にXcode Projectでダミーアプリ作って iPhone にインストールし、同じハンドル識別子で Vusual Stduio で Project を作り本アプリをiPhoneにインストールします。(当手順のMicrosoftドキュメントはこちら) そのダミーアプリTestFlight で Upload してみます。

デバッグ用のまま Upload すると、CFBundleIconName と 何か画像がないとエラーがでます。

以下のように処置していきます。xcodeの右ペインの「TARGETS」をアプリ本体を選択 → 「General」 → 「App Icons and Launch Screen」→ 「App Icons Source」 にチェックを入れます。この辺りの仕様は、folder指定にの場合があるなどXcodeのバージョンによって変遷があるようです。

Store公開時のアプリアイコンを割当てます。画像は1024×1024で作成し、Projectメニューから既存ファイルの追加で追加しておきます。左ツリーからアプリ本体の「Assets」を開き、「AppIcon」をクリック、AppIconのエリアに画像をドラックします。

Store公開時のアプリサンプル画像を割当てます。画像は、端末機種に合わせて数サイズ作り、Projectに取り込んでおきます。左ツリーからアプリ本体の「Assets」を開き、「Default」をクリック、Defaultのエリアに画像をドラックします。

AccentColor」は未処置でよいようです。

Apple Developer WEBページで、「Capabilities」を”App Attest”、「Distribution」を”App Store Connect”に切替えます。詳しくはこちら同じです

xcodeのメニュー「Product」→「Archive」で公開用buildを実行します。Archive画面が表示されたら、右側の「Distribute App」を押し、Uploadを開始します。

一分程度待ちます。なんと Upload は成功しました。

App Stroe の WEB ページを確認してみると、Uploadされています。

以上のことから、Xamain.iOS側の要因でUploadできない可能性が高いそうです。次回パート4に続きます。

TestFlightにてXamarinアプリをiPhoneにインストールするまで2:XcodeのUpdate後、Xamarinでビルド不能

前回記事

前回から、一か月後、’24年1月21日にアプリを改修してVisual Stdio 2019 For MAC でビルドし、Xcode経由でApp Store へ更新アップロードを試みましたが、エラーとなりました。

一月前はできていたました。弊方の MAC Book Pro 2015 Early で使える iOS Monterey  では、Xcode 14.0 止まりと認識していたのですが、 Xcode 14.2 までUpdate可能となっていたので、「2024になり Appleサーバ が変わり Xcode と互換がなくなった 」のかと、Xcode 14.2 に Update しました。

しかし、Visual Stdio 2019 For MAC 「xcrun: invlid active developer path:」なるBuildエラーが発生しました。

他WEB記事情報によると、コマンドラインから「xcode-select install」を実行すると解消されるとありましたが改善せず。

どうもXcodeに応じた「コマンドラインツール」が必要という理屈のようです。Visual Studio 上にも警告が出てており、そこから「今すぐインストール」を選択しましたがエラーでました。

Xcode 14.2 コマンドラインツール」は、dmg形式のダウンロードもあるので、そちらをインストールしてみても解消せず。

八方塞がりになりましたが、xcode-select コマンドのオプションを観察し、直観でリセット「sudo xcode-select -r」を実行すると解消しました。この時sudo は必須。以下、その時の bash history の内容です。

Visual Studio でBuild時、「Apple SDK Not Found」的なエラーも発生しました。これは Xcode 14.0 → Xcode 14.2 にUpdate にともないSDKパスが変わってしまったようです。これは Microsoft の WEBに説明がありました。Appleのケア不足でがっくりしているところ、Microsoft のケア深さに感銘。メニュー「Visual Studio」→「ユーザ設定」→「SDKの場所」→「Apple」にて、「場所:」を「/Applications/Xcode.app」に変更します。

これで Xcode 14.2 でビルドがとおりました。

しかし、App Store への Uploadエラーは解消せず。パート3につづきます

SHマイコンのC言語組込み関数set_imask中身は?

SHでC言語で作る場合の割り込み禁止は、set_imask関数 です。最近の他ルネサスマイコンでの _EI( )、_DI( ) のように気軽に呼出してよいのでしょうか? アセンブラならシステムレジスタの 割込マスクBit 3つを立てるだけなので、一行で済むはずですが、、、

set_imask() のアセンブラ展開は、

むろん set_imask() はライブラリではなく、直接アセンブラにインライン展開されています。SHは、システムレジスタを直接更新しないポリシーみたいですね。

SH-2A、SH2A-FPUユーザーズマニュアル ソフトウェア編」によりますと、

命令ステート数
システムレジスタ読出し2
20bitデータ転送1
マスク値(レジスタ同士の)の加算1
システムレジスタ書込み 3
7

所要時間は、7ステート × クロック分解能 。100MHzだと、0.07usec。アプリケーションにもよりますが、負荷を気にして使う必要はなさそうです。

しかしながら実際のところ1usオーダーで消費しているように見受けられます。SHの5段パイプラインがこの場合止まってしまうとすると、0.07 x 5 = 0.35usec、もろもろでざっくり 0.5usec。msecオーダーの制御周期であればよいですが、100usec、50us制御周期の場合は厳しくなりそうですね。

他マイコンですと、メインコントロールレジスタに1bit割禁フラグがあって、アセンブラ一行でビット操作命令で割禁フラグを上げ下げできます。RL78なら、

知らずに同じ感覚で念のため程度でset_maskを多用していたら、知らずに性能を圧迫してしまいます。デリケートな割禁部は、後からメンテする人は恐ろしくて外せないでしょう。お困りの方はご相談ください。