XamarinでImageButton上に文字を表示するには

もうずく開発が終了してしまう Xamarin ですが使い物にならなくなるのはも少し先です。後継の .NET MAUI への移行もも少しまった方が安定し正しいHowToも蓄積するでしょう。他WEB記事では見つからなかったプログラミング方法を覚え書きしておきたいと思います。

アプリの要件によっては、ImageButton 上に文字を表示しいシチュエーションがあります。素の ButtonImageSourceプロパティ で画像を指定し、Textプロパティ で文字も指定できますが、画像の周囲に文字は配置されます。

画像の上に文字は描画するには、Grid に ImageButton → Label の順で 同じ行列位置に配置します。

でもこれだけだと文字が見にくいです。ポイントの大きい Label を白で Label の下に配置してあげるとGoodです。

Android でも iOS でも 同様です。実際の実装では、.cs 側で動的に生成しています。せっかく用意したのですがボツになりました。.NET MAUI でもHowtoとして生きるとよいのですが、、、

一人会社でIT系BtoBマッチングにTRYする

起業後、どうやって新しい案件を獲得していくかは大きなテーマです。弊方、今日のところ一人会社ででソフト開発系のBtoBマッチングへのTRY状況を紹介いたします。

敷居は低いのですが、その分、競争要し、案件応募に対してユーザの応答が得にくい傾向です。

参加資格個人、法人
参加手順マッチング事業者と面談後、参加を申し込む。利用可能まで2week程度。
費用月額固定、一月の申請数上限によって費用が定められている。
一月10件プランなら、一人会社でもまずまず支払っていける。
初期費用なし。
利用手順マッチング案件がメール配信され、希望するならWEB上で参加申請。
ユーザさんとの交渉は早いもの順。
→ その後はユーザさんと直接交渉。
加入期間2年
状況参加申込み:多数、受注 1件、NSD締結で発注待ち1件
メリット・参加の敷居が低い。
・稀に大企業の案件もあり。
・応募期間は 2week 程度と長め。
デメリット・’24.2月現在、2年前ごろからすると案件数は1/5程度に下がっている。
・早いもの順で、すぐ応募上限に達するため、常に案件メールの監視が必要。
・ユーザさんのヒアリングレベルは低い。文章で少ないときは2、3行。
・一般の方の案件も多く、それらの案件の本気度は怪しい。
・ユーザさんに連絡しても半分以上ノーレス。
・法人さんでもソフト開発の手間を知らないため、アプリ開発予算5万円
という案件もあり。
その他・応募数上限に達しても追加申請し、ユーザさんが許可すれば商談が可能。
・組込ソフト案件はこれまで1件あった程度。

まずますの敷居、自身がある案件、競合が少ないマイナ/特殊案件なら狙いやすい。選定されても理由も分からず、それがユーザニーズに合っているかは掛けです。

参加資格法人のみ。一人会社でも可。
参加方法マッチング事業者と面談後、参加を申し込む。利用可能まで割と早かった。
費用紹介1件につき固定額、一人会社でややつらいがIT専門系では安価な方。
初期費用なし。
利用手順マッチング案件がメール配信され、希望するならWEB上で参加申請。
ユーザさんとの交渉はマッチング事業者が選定。
→ その後はユーザさんと直接交渉。
加入期間1年
状況参加申込2件、選定2件、
選定された案件の内、ユーザさん応答なし1件、一人会社&免税事業者NG 1件
メリット・案件が多い。
・参加しなくてもトレンド情報としても勉強になる。
デメリット・参加申込み期間は、1日程度と短い。
・ユーザさんの受注に至らずとも、紹介料が発生。
・ますまずの紹介料てあるが、ユーザさんと連絡がつくまでは保証していない。
・案件内容のユーザヒアリングレベルは中。文章で20~50行といったところ。
・発注条件のまではヒアリングされていない模様。
・マッチング事業者で選定するためユーザさんの意向に本当に合っているか分からない。
・紹介料以下の予算案件(費用回収できない)もある。
その他・連絡がつかないユーザさんはフォローしてくれる。(が保証はない。)
・組込ソフト案件は稀にあり。

総じて共通する点は、

  • ユーザさんが、業者実績から選ぶというスタイルは今のところ無いようです。実績/地域/組織規模/支払条件から、ユーザさんから選んでもらい、マッチング事業者さんは転職サービスのようにそのサポートをするがムダが無い気がします。
  • ユーザさんは無償なので気軽に合い見積や予算取りも利用されている可能もあります。過去職場では「必ず合い見積をとる」と社内規定もありました。費用承認がないと、一個人の単なる思い付きも十分ありそうです。ユーザさんへも費用を徴収した方が、よりフェアでムダのないマッチングができるのではないかと思います。
  • 費用を出しているのは業者側だけです。それにしては業者側に不便で費用リスクのある仕組みとなっています。
  • 業者側からの空振り率はとても高い。

売上の何%で成功報酬タイプのマッチング事業者さんもあり面談だけしました。ヒアリング内容もA4びっちりで素晴らしく、受注に関しては3者間でフェアですが、初期費用と月費用も別払いなのでとて厳しいです。毎月サーバ利用費で一万円以下で、売上時にユーザと業者双方から成功報酬というスタイルが理想ですが、売上が生じるまで時間がかるリスクがあります。難しいですね。行政のサービスなどもあるらしいのでTRYしていきたいと思います。

以上、新しくソフト開発で事業をされる方の参考まで。

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。
Apple Developer に加入済みのお客様1~2時間。

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

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

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

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

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

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

以上で説明は終わりです。

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

弊方では、どうしても課税事業者に切替える理由がないため、今のところ免税事業者で運営しています。適格請求書の施行が開始されましたが、免税事業者が具体的にどう対処しているか、販売先での扱いについて弊方の実情を記載いたします。尚、弊方では消費税を希望されるお客様に対しては、売上額 - ( 売上額 ÷ 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スクリプトの修正が必要なようです。