-
Notifications
You must be signed in to change notification settings - Fork 0
MS_MobileDevelopment
nishi_74322014 edited this page Aug 21, 2026
·
1 revision
- 戻る(プログラミング)
モバイル系(と言うかフロントエンド系)
開発に関する情報リンクを纏めています。
-
昨今、広告系のフロントエンド界隈では、
ユーザー・エージェントと言う指標が重要視されるようです。 -
そうではない業務系では、GraphQL, Apollo GraphQL, Apollo Client
などを導入して、開発していこうとしているケースもあるもよう。
補足(挙げられている 2 つの潮流): 一見脈絡がないが、
どちらも「フロントエンドがどうデータを取るか」の話である。① ユーザー エージェントについて
【広告系で重視された理由】 ・端末・ブラウザを判別してコンテンツを出し分ける ・トラッキング(フィンガープリンティング)の材料になる 【現在の状況】★ 大きく変わった ・【User-Agent 文字列の凍結・削減】が進んでいる → Chrome は詳細な版番号を出さなくなった → プライバシー保護のため ・代替として【User-Agent Client Hints】 Sec-CH-UA / Sec-CH-UA-Platform / Sec-CH-UA-Mobile → 【必要な情報だけをサーバが要求する】方式 【業務システムでの指針】 ・UA での分岐は【できるだけ避ける】★ → 端末が増えるたびに条件が増え、破綻する ・【機能検出】(その API があるか)で分岐する ・画面幅は【CSS のメディア クエリ】で扱う② GraphQL について
【REST の課題(モバイルで顕著)】 ・過剰取得(Over-fetching) 1 画面に必要な項目は 3 つなのに、30 項目返ってくる ・過少取得(Under-fetching) 1 画面を描くのに API を 5 回叩く必要がある ★ → モバイル回線では往復が重い 【GraphQL の解】 クライアントが【必要な項目だけをクエリで指定する】 → 1 回の往復で、必要な形のデータが返るquery { order(id: 5) { id total customer { name } items { name qty } } }【GraphQL の代償】★ 採用前に必ず検討する ・【任意のクエリを受ける】= 重いクエリを投げられうる → 深さ制限、複雑度制限、コスト分析が必要 ・N+1 問題が起きやすい(DataLoader で解決) ・キャッシュが難しい(すべて POST /graphql になる) → CDN・HTTP キャッシュが効かない([CDN](MS_CDN)) ・認可が【フィールド単位】で必要になることがある ・監視・ログが読みにくい(URL でエンドポイントを識別できない) 【現在の評価】 ・「REST の上位互換」ではなく【トレードオフのある別方式】 ・画面ごとに必要なデータが大きく異なる場合に効く ・そうでなければ【REST + BFF】でも十分なことが多い ★ → BFF(Backend For Frontend): 画面に合わせた API をサーバ側で用意する.NET での GraphQL:
・HotChocolate(最も使われている) ・GraphQL.NET → いずれも .NET で GraphQL サーバを立てられる
補足(.NET 開発者から見たモバイル開発の現在地): 選択肢の一覧に
.NET 固有の事情を補っておく。
手段 .NET との関係 現況 .NET MAUI 公式。Xamarin の後継 現行 ★ Blazor Hybrid MAUI の器に Blazor の UI Web と共有できる ★ Blazor WebAssembly + PWA ブラウザで動く(WebAssembly) インストールも可 Uno Platform XAML で多方面 サードパーティ Avalonia XAML。デスクトップ中心 サードパーティ SPA(React 等)+ Web API .NET は API のみ 最も一般的 ★ Xamarin 2024 年 5 月サポート終了 移行が必要 【業務システムでの現実的な判断】 ① まず【Web(SPA / MPA)で足りないか】を検討する ★ → ストア審査が不要、更新が即時、端末を選ばない → [ネイティブ vs SPA(Single-page Application)](MS_NativeVsSPA) の 「ストアの存在が障害になる」参照 ② 足りない場合、何が足りないのかを特定する ・オフラインが必須 → PWA で足りるか検証 ・カメラの連続利用 → ネイティブ寄りへ ・プッシュ通知が中核 → ネイティブ寄りへ ・バックグラウンド処理 → ネイティブ一択 ③ ネイティブ寄りにする場合、 ・C# の資産・人材を活かすなら → 【.NET MAUI / Blazor Hybrid】 ・Web の資産・人材を活かすなら → Capacitor / React Native ・UI にこだわるなら → Flutter またはフル ネイティブ
-
スマホ(
DNET_Smartphone.md) -
JavaScript(
DNET_JavaScript.md) -
クロスプラットフォーム開発ツール(
DNET_CrossPlatformDevTools.md)
-
フロントエンドと単位画面あたりの単価的な話
https://www.osscons.jp/joicpdhoq-537/#_537 -
ReactにFragmentのPKCEを実装してて
思った事、要件のコンテキストが違う。
https://www.osscons.jp/jo8x24w2i-537/ -
結局、WebAPIのフロントエンドUIの使いドコロってさぁ。
https://www.osscons.jp/jorwrrjui-537/
- .NET MAUI とは
https://learn.microsoft.com/ja-jp/dotnet/maui/what-is-maui - ASP.NET Core Blazor Hybrid
https://learn.microsoft.com/ja-jp/aspnet/core/blazor/hybrid/ - User-Agent Client Hints
https://learn.microsoft.com/ja-jp/microsoft-edge/web-platform/user-agent-guidance
Tags: 移行, プログラミング, .NET開発, モバイル系開発
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。