パソコンのこと

GPT-5.5 リリース:現状と今後の展望を読み解く

1 Mins read

はじめに

2026年、OpenAI は GPT-5.4 の後継となる GPT-5.5 をリリースした。本記事では、GPT-5.5 の特徴、競合モデルとの比較、API 移行時の留意点、そして日本企業の業務システムへの影響を整理する。

GPT-5.5 の位置づけ

GPT-5.5 は、OpenAI のフラグシップモデルとして GPT-5.4 から進化したバージョンである。汎用的な言語理解・生成タスクを担う基盤モデルという位置づけは変わらず、文章生成、要約、翻訳、コード補助など幅広い用途に対応する。

GPT-5.4 からの主な改善点としては、以下が挙げられる:

  • 推論精度の向上
  • マルチモーダル対応の強化(画像・音声入力の統合)
  • エージェント機能の高度化(外部ツール呼び出し)
  • トークン上限の拡張

主要国の AI 使用率

GPT-5.5 をはじめとする AI モデルの普及状況は、国によって大きく異なる。

主要国の AI 使用率(2025〜2026年)。インド 72%、中国 65% が上位。日本は 32% と低め。

インドや中国が高い使用率を示す一方、日本は 32% と主要国の中では低い水準にとどまっている。日本企業が AI を業務に取り込む余地は依然として大きい。

競合モデルとの比較

GPT-5.5 の主要な競合として、Anthropic の Claude シリーズおよび Google DeepMind の Gemini シリーズがある。

Anthropic は Claude を「The AI for Problem Solvers」と位置づけ、問題解決に特化したアプローチを採用している。Google DeepMind の Gemini は「Learn, build, and plan anything」をコンセプトに、汎用性と専門領域(Veo による動画生成、Imagen による画像生成、AlphaFold による生命科学応用)の両立を図っている。

項目 GPT-5.5(OpenAI) Claude Opus 4.6 / 4.7(Anthropic) Gemini 3.1 Pro(Google)
主な強み エコシステム成熟度、プラグイン連携 長文コンテキスト処理、安全性設計 マルチモーダル統合、Google サービス連携
API 提供形態 OpenAI API、Azure OpenAI Anthropic API Vertex AI、Gemini API
日本語対応 高水準 高水準 高水準
価格帯 中〜高 中〜高(Opus 4.7 は高め)

機能面での差別化は縮小傾向にあり、選定基準は「既存システムとの親和性」「ベンダーロックインへの許容度」「社内セキュリティポリシーとの整合性」に移ってきている。どのモデルを選ぶかよりも、自社の要件にどう合わせるかが重要である。

API 移行時の留意点

GPT-5.4 以前から GPT-5.5 へ移行する際は、以下の変更点を確認しておく必要がある。

  1. モデル名の変更:API リクエストのモデル指定を gpt-5.5 に更新する
  2. レスポンス形式:新しいメタデータフィールドが追加されている場合がある
  3. トークン上限:入出力の最大トークン数が変わっている可能性がある
  4. 非推奨パラメータ:古いパラメータが廃止されていないか確認する

移行時のチェックリスト:

  • 既存プロンプトの動作検証
  • エラーハンドリングの見直し
  • レートリミット設定の再確認
  • コスト試算の再計算

日本企業の業務システムへの影響

帳票・ワークフローとの連携

請求書の締め日処理、稟議書の回覧フロー、年末調整書類の自動生成など、日本固有の商習慣に関わる処理は、プロンプト設計の日本語精度に大きく依存する。GPT-5.5 の日本語性能が向上しているため、従来手動で行っていた「てにをは」の修正工数が削減できる可能性がある。

Azure OpenAI での提供タイミング

金融機関や医療機関など、データを国外に出せない要件がある場合は Azure OpenAI Service 経由での利用が選択肢となる。Azure OpenAI での新モデル提供は、OpenAI 本体から数週間〜数か月遅れるのが通例である。本番導入スケジュールを立てる際は、Azure 側の提供開始日を確認してから計画すべきである。

保守運用の注意点

モデルのバージョンアップに伴い、出力傾向が微妙に変わるケースがある。日本の業務システムでは「同じ入力に対して同じ出力が出ること」を暗黙に期待する運用が多いため、以下の対策を推奨する:

  • 回帰テストの自動化
  • 出力サンプルの定期的な目視確認
  • 重要業務ではモデルバージョンを固定する

今後の展望

GPT-5.5 のリリースにより、LLM 市場の競争はさらに激化している。Google DeepMind は Gemini ファミリーで Veo(動画生成)、Lyria(音楽生成)といった専門モデルを展開しており、OpenAI も同様の専門化を進めている。

日本市場では、Azure OpenAI の国内リージョン拡充、日本語特化のファインチューニングオプション、国内 SIer による導入支援サービスの整備が進むと見込まれる。

まとめ

GPT-5.5 は、GPT-5.4 からの順当な進化であり、競合が激しい LLM 市場で OpenAI のフラグシップとしての地位を維持するアップデートである。日本企業が導入を検討する際は、単純な性能比較だけでなく、既存システムとの統合容易性、Azure OpenAI の提供タイミング、保守運用体制を含めた総合的な判断が求められる。

Read more
パソコンのこと

「IPv8」は来るのか?次世代インターネットプロトコルへの期待

1 Mins read

「IPv4 の次は IPv6、その次は IPv8 か」という話を耳にすることがある。ただ、IPv8 という正式な規格は存在しない。IPv4 のバージョンフィールドは 4bit で、0〜15 まで使える。IPv5 は 1979 年に Internet Stream Protocol(ST)が使用済みで、IPv6 は意図的に IPv4 との非互換を選んだ設計になっている。IPv7 以降も断片的な提案はあるが、IETF で標準化されたものはない。

では「次世代プロトコル」として実際に研究・標準化が進んでいるのは何か。IPv4 が抱えた課題をどう解決しようとしているのか。この記事ではその実態を整理したい。

IPv4 は今も現役だが、課題は積み上がっている

まず現状を確認しておく。IANA の未割り当て IPv4 は 2011 年に枯渇した。ただ現場では、NAT、CGNAT、CDN、プロキシ、アドレス移転市場のおかげでまだ十分に機能している。

主要国の IPv6 普及率を見ると、国ごとに大きな差がある。

主要国の IPv6 普及率

フランスやインドは 70〜90% に達している一方で、日本や韓国は 50% を下回る水準だ。IPv6 の普及が遅い理由は規格の問題ではなく、「NAT で当面しのげる」から移行の優先度が上がらないことにある。

一方で、固定回線速度を見ると国によってかなりの差がある。

主要国の固定回線速度

速度の主因は回線インフラの投資差だが、余計な NAT やプロキシの層が遅延を積み上げていることも無視できない。IPv4 の延命策が増えるほど、経路のシンプルさは失われていく。

IPv6 が「クリーンブレーク」を選んだ理由と、その代償

IPv6 は IPv4 との後方互換を捨てた。これは意図的な判断だ。アドレス長を 32bit から 128bit へ拡張するだけでなく、ヘッダ構造を見直し、NAT を前提としないエンドツーエンド設計に戻すことを目指した。

ただ、この「クリーンブレーク」が移行の摩擦を生んだ。IPv4 と IPv6 を並行運用する dual stack 期間が長引き、監視、FW、ログ解析、許可リストを二重管理する必要が出た。コストが増えるわりに、エンドユーザーへの目に見えるメリットが薄く、「今やる理由が弱い」で止まりやすい。

この反省から、「IPv4 との互換性を保ちながら拡張できないのか」という発想が生まれた。それが SRv6 や各種トランジション技術につながっている。

SRv6:IPv6 を拡張し、IPv4 もカプセル化する

SRv6(Segment Routing over IPv6)は、IPv6 の拡張ヘッダを使ってパケットの経路を明示的に指定する仕組みだ。RFC 8986 として標準化されている。

ポイントは、IPv4 パケットを SRv6 の中にカプセル化して転送できること。つまり、IPv4 のトラフィックを IPv6 の経路制御の上で動かせる。IPv4 の「上位互換」に近い発想を、IPv6 の拡張として実現しようとしている。

SRv6 が解決しようとしている課題はいくつかある。

  • MPLS ラベルなしで経路制御できる(ラベルスタックの複雑さを減らせる)
  • 経路ごとにトラフィックエンジニアリングを細かく設定できる
  • クラウドとキャリア網の境界を越えた経路制御が統一的にできる
  • IPv4 と IPv6 の混在環境を一つの転送プレーンで扱える

NTT、中国電信、Alibaba などが商用導入を進めており、特に大規模データセンター間の接続や 5G コアネットワークでの採用が増えている。

SCION:経路そのものを再設計する

SRv6 が IPv6 の拡張であるのに対し、SCION(Scalability, Control, and Isolation On Next-generation networks)はより根本的な再設計を目指している。スイス連邦工科大学(ETH Zürich)が主導する研究で、IEEE Security & Privacy 2011 で発表された。

SCION の核心は「経路の選択権を送信側に渡す」ことだ。現在のインターネットは BGP(Border Gateway Protocol)によって経路が決まり、送信側はどの経路を通るか制御できない。SCION ではパケットを送る側が経路を明示的に指定できる。

これにより次のことが実現する。

  • ISP や国家の恣意的な経路変更を防げる(経路ハイジャック対策)
  • 遅延・帯域・信頼性に基づいて送信者が経路を選べる
  • 障害が一部の AS(自律システム)に局所化されやすくなる
  • 認証がアーキテクチャに組み込まれているため、なりすましが難しい

スイスの政府・金融機関向けネットワーク「SSFN」(Swiss Secure Finance Network)では実際に本番運用されている。IPv4/IPv6 の上でオーバーレイとして動かす構成も可能なため、既存インフラとの共存ができる。

NDN:IP アドレスではなく「コンテンツ名」でルーティング

NDN(Named Data Networking)は、アドレスではなくコンテンツの名前でパケットをルーティングする発想だ。NSF(米国国立科学財団)が支援する Future Internet Architecture プロジェクトの一つとして研究されている。

現在のインターネットは「どのホストに送るか」を軸に設計されている。NDN は「何を取得したいか」を軸にする。コンテンツに名前を付け、その名前でルーティングする。

これで解決できることがある。

  • 同じコンテンツをネットワーク内でキャッシュできるため、CDN に近いことがインフラ層で実現できる
  • コンテンツの完全性を名前に含めることで、改ざんが検出しやすくなる
  • 送信元アドレスに依存しないため、モバイル環境でのハンドオーバーが自然になる

ただし、既存の IP インフラとの互換性が低く、普及の見通しは現時点では不透明だ。IoT やエッジコンピューティングの分野で部分的な採用が進んでいる。

QUIC/HTTP3:IP バージョン差を上のレイヤーで吸収する

アーキテクチャを変えるのではなく、上のレイヤーで IP バージョン差を吸収する方向もある。QUIC(RFC 9000)はその代表だ。

QUIC は UDP の上で動き、IP アドレスとポートの組み合わせをコネクションの識別子として直接使わない。接続 ID というコネクション固有の識別子を使うため、IP アドレスが変わっても接続が継続できる。

これにより、IPv4 でも IPv6 でも同じ品質で通信できる構造が上位レイヤーで実現している。HTTP/3 は QUIC の上で動く。現在、主要ブラウザとサーバーのほとんどが対応済みだ。

「IPv4 上位互換」はどこまで実現しているか

「IPv4 の上位互換」に最も近い方向で実用化が進んでいるのは、SRv6 と MAP-T などのトランジション技術の組み合わせだ。

MAP-T(Mapping of Address and Port using Translation, RFC 7599)は、IPv4 パケットを IPv6 ネットワーク内で転送し、出口で IPv4 に戻す仕組みだ。エンドポイントが IPv4 のまま、バックボーンを IPv6 に移行できる。

これらを組み合わせると、

  • エンドユーザーは IPv4 のまま使い続けられる
  • コアネットワークは IPv6 で設計できる
  • 経路制御は SRv6 で統一できる

という構成が実用レベルで動く。「IPv8」という新しいバージョン番号は必要なく、既存の規格の組み合わせで近い目標に到達できる。

実際に進んでいること

研究や規格の話だけでなく、現時点で実際に動いていることも整理しておく。

  • 5G SA(スタンドアローン):コアネットワーク設計が IPv6 前提。3GPP 標準に組み込まれている
  • SRv6 商用運用:中国電信、NTT、Softbank などが国内バックボーンに採用
  • SCION 本番運用:スイスの金融ネットワーク(SSFN)で稼働中
  • Apple App Store 審査:IPv6-only 環境での動作確認を要求。アプリ側の対応を強制
  • Cloudflare / Google:IPv6 トラフィックの比率が年々上昇。エッジで IPv4/IPv6 を吸収する構成が標準化

IP プロトコルの「次のバージョン」は単一の規格として登場するのではなく、こうした技術が層ごとに置き換わっていく形で進む。

今できることは、IP アドレスへの依存を少しずつ減らすことだ。固定 IP 許可リストをやめ、証明書と ID ベースの認証に移行し、DNS を正しく使い、CDN とエッジを活用する。それが、どの次世代プロトコルが来ても対応できる設計の準備になる。

私見:IPv4 を 8 オクテットに拡張すれば良かったのでは

最後に私見を書いておきたい。

IPv6 が「クリーンブレーク」を選んだことで 30 年近く移行が進まなかったのを見ると、そもそも設計の方向が違ったのではないかと思う。

私が理想的だと思うのは、IPv4 のアドレス記法をそのまま 8 オクテットに拡張した形だ。

255.255.255.255.255.255.255.255

つまり、今の x.x.x.x(32bit)を x.x.x.x.x.x.x.x(64bit)に伸ばす。

これだけで何が変わるか。

アドレス空間は劇的に広がる

32bit の IPv4 は約 43 億アドレス。64bit にすると約 1844 京アドレス(2 の 64 乗)。IoT 機器が 350 億台になっても、地球上の砂粒より多い数のアドレスが確保できる。NAT で延命する必要がなくなる。

IPv4 との後方互換を保ちやすい

既存の IPv4 アドレスを 0.0.0.0.x.x.x.x として扱えば、現行の IPv4 パケットは新しいプロトコルのサブセットとして機能する。ルーターは上位 4 オクテットが 0.0.0.0 のアドレスを IPv4 互換として転送できる。dual stack の混乱期を大幅に短縮できた可能性がある。

人間が読める表記を維持できる

IPv6 の 2001:0db8:85a3:0000:0000:8a2e:0370:7334 は、現場での障害対応、ログ確認、FW ルール設定で扱いにくい。8 オクテット表記なら、IPv4 の知識がある人間がそのまま読める。

# 現行 IPv4
192.168.1.100

# 拡張 8 オクテット案
0.0.0.0.192.168.1.100   (IPv4 互換空間)
10.48.0.0.192.168.1.100  (新しいグローバルアドレス空間の例)

セキュリティ運用でも IPv6 より優位になり得る

ここで言う優位は、暗号や認証機能そのものではなく、現場運用上の優位だ。8 オクテット表記で IPv4 互換を保てれば、既存の FW ルール、IP 許可リスト、SIEM の相関ルール、WAF や VPN 装置のアドレスベース設定資産を流用しやすい。dual stack 期間も短くできるため、IPv4 用と IPv6 用のルールを二重に管理する期間を減らせる。

IPv6 は表記が長く、省略記法も複数あるため、人間のレビューで見落としや設定ミスが起きやすい。8 オクテット案なら、監査ログ、許可リスト、障害時の切り分けを IPv4 に近い感覚で扱える。特に、日本の業務システムで多い固定 IP 許可運用では、IPv6 よりセキュリティ運用負荷を低く抑えられた可能性がある。

現実的な課題はある

もちろん、これが完璧な設計というわけではない。

  • 64bit でも将来の超大規模 IoT や AI エージェント網に足りないかもしれない(IPv6 の 128bit はここを見越している)
  • ルーターのアドレス処理ロジックを変える必要があり、当時の 1990 年代のハードウェアには重い変更だった
  • セキュリティ機能(認証、暗号化)はアドレス拡張だけでは解決しない

それでも、「表記を変えずにオクテット数だけ増やす」という発想は、30 年かけて普及しなかった IPv6 の移行コストを考えると、現実解として十分あり得た選択肢だったと思う。

IPv6 の設計者たちもこのジレンマは分かっていたはずで、それでもクリーンブレークを選んだのには理由がある。ただ結果として、今も世界の半分は IPv4 で動いている。その事実は重い。

私見:NAT のボトルネックは銅線の問題でもある

もう一つ付け加えたい視点がある。

NAT がボトルネックになる理由は、アドレス変換の処理コストだけではない。そもそも現在のネットワーク機器は、光ファイバーで届いた信号を受け取るたびに、いったん電気信号に変換してから処理している。電気信号は熱を持ち、干渉が起き、信号劣化が起きる。NAT の変換処理もこの電気回路上で行われるため、大量のセッションを捌くほどその限界が見えてくる。

NTT が推進する IOWN(Innovative Optical and Wireless Network) 構想、その中核にある APN(All-Photonics Network) は、この構造を根本から見直そうとしている。

従来のアーキテクチャはこうなっている。

光ファイバー → [電気変換] → ルーター(電気処理)→ [光変換] → 光ファイバー

APN の目指すものはこうだ。

光ファイバー → ルーター(光のまま処理)→ 光ファイバー

「光波長パス」を end-to-end で張り、電気変換を挟まずにパケットを転送・制御する。さらに IOWN はネットワーク層だけでなく、デバイスや半導体レベルまで光技術を広げることを視野に入れている。NTT はこれにより、従来比で消費電力を 1/100、伝送容量を 125 倍、端末間遅延を 1/200 にすることを目標として掲げている。

これが実用化されると、何が変わるか。

NAT の処理コストが根本から下がる

電気変換が不要になれば、変換に伴う遅延と発熱が消える。CGNAT が抱えるセッション数の壁が大幅に緩和される可能性がある。現在「NAT は遅い」と言われる根本原因が、プロトコルではなく物理層にあることが改めてわかる。

IPv4 の延命がさらに延びる可能性

逆説的だが、APN が普及すると「NAT でもまだいける」という状況がさらに続くかもしれない。ただ、処理能力のボトルネックが消えることで、より多くのデバイスを少ない装置で捌けるようになる。消費電力も劇的に下がるため、インフラのランニングコスト構造が変わる。

アドレス設計とは別の軸でブレイクスルーが起きる

IPv4 か IPv6 か、8 オクテットか 128bit かという議論は、アドレス空間と経路制御の話だ。IOWN/APN はその議論とは別の軸——物理的な転送速度・消費電力・遅延——でブレイクスルーをもたらす。

プロトコルの設計と物理インフラの進化は別々に進む。APN が「どのプロトコルが来ても高速・低遅延に捌ける基盤」を作れば、IPv4 であれ IPv6 であれ、新しいアドレス体系であれ、その上で動かせる選択肢が広がる。

NTT は 2030 年代の実用化を目指しているとしており、現時点では研究・実証段階だ。ただ、「光ファイバーで来た信号を電気に戻さず、光のまま処理する」という発想がインターネットの物理基盤を根本から変える可能性を持っていることは確かだ。アドレス設計の議論と並行して、こちらも注目しておく価値がある。

Read more
パソコンのこと

Android 16対応とAndroid 17先回り確認

1 Mins read

結論から言うと、targetSdkVersion を Google Play の要件より低いままアップデートを提出すると、アップロードの時点で拒否される。 ストアに更新を出せなくなるという意味だ。新機能の話ではなく、既存ユーザーへの配信継続とストア掲載維持のための義務対応である。

Google Play は毎年8月31日に targetSdkVersion の最低ラインを1段引き上げてきた。現行(2025年8月〜)では API 35(Android 15)未満のアップデートがすべて拒否される。

施行時期 要件 未対応の場合
2023年8月〜 API 33(Android 13)以上必須 アップロード拒否
2024年8月〜 API 34(Android 14)以上必須 アップロード拒否
2025年8月〜 API 35(Android 15)以上必須 アップロード拒否
2026年8月頃(予測) API 36(Android 16)以上必須 アップロード拒否

(出典:Google Play 対象 API レベル要件

このペースから API 36(Android 16)の強制化は 2026年8月頃が有力視されている。強制化される前に対応を完了させるため、2026年06月を社内の締め切りとして逆算したのがこの記事のスコープだ。Android 17 は Beta 3 で platform stability に到達しているので、同時期に別レーンで先回り確認を回しておくと正式版が来たときに慌てずに済む。

優先順位の整理

項目 期限 優先度 いまやること
targetSdkVersion 36(Android 16)対応 2026年06月まで 最優先 主要導線の回帰、CI 固定、リリース計画確定
Android 17 Beta 3 検証 今から前倒し 高・別レーン emulator と実機で互換性確認、behavior changes 棚卸し
Android 17 新機能採用 正式版以降 低め 影響範囲が小さい箇所から PoC

ツールの足場を先にそろえる

Android 16 対応でも Android 17 先行検証でも、最初に詰まるのは OS の API より build 周りのことが多い。足場を先に固める。

要素 基準 理由
Android Studio Panda 3 stable targetSdkVersion 36 対応の作業足場として安定している
AGP 9.1.0 R8 挙動差・lint 差分を吸収しやすい
JDK 17 AGP 9.1 の前提
Kotlin 2.3.20 安定版の基準をそろえる
plugins {
    id("com.android.application") version "9.1.0" apply false
    id("org.jetbrains.kotlin.android") version "2.3.20" apply false
}

CI の JDK 17 固定・AGP 更新・R8 差分の吸収は、Android 17 の準備を兼ねつつ Android 16 対応を通すための整地でもある。

補足:現場の Kotlin バージョン実態と移行コスト

表の「Kotlin 2.3.20」はあくまで推奨基準。実際の現場では 1.9.x 系がまだ多く残っている。日本の金融・公共・大規模案件は特に保守的で、「安定しているから上げない」判断が長く続きやすい。

下図は JetBrains の公開エコシステムデータおよびコミュニティ観察にもとづく 2026年初時点の推計

現場の Kotlin バージョン分布(2026年初・推計)

(推計値。正確な版別シェアは JetBrains Developer Ecosystem Survey の最新版を参照)

1.9.x から 2.x に上げる場合、Kotlin 単体ではなく Compose・Coroutines・AGP の一括更新になることが多い。K2 コンパイラへの切り替えで型推論の挙動が一部変わり、ビルドエラーが出るケースがある。「今の 1.9.x で動いているアプリを今すぐ上げる必要はない」という判断も現実的な選択肢。

現在の Kotlin Compose Compiler 方式 最低 AGP 升格時の主な注意
1.9.x 従来の compose_compiler_extension_version 8.x 現状維持可。ただし EOL 近い
2.0.x Compose Compiler Plugin(Kotlin plugin に統合) 8.4 以上 Plugin 方式への切り替え必須
2.1.x 同上 8.7 以上 K2 デフォルト化。Compose の安定度最良
2.3.x 同上 9.0 以上 2026年現在の最前線。AGP 9.1 前提

Android 17 で先に押さえたい動作変更

新機能より動作変更のほうが既存アプリへの影響が大きい。全アプリに効く変更に絞って先に確認する。

変更点 影響を受けやすいアプリ 先に確認するところ
usesCleartextTraffic 非推奨化の流れ HTTP を許可しているアプリ全般 検証環境・社内接続を network security config へ切り替え
URI 権限の暗黙付与廃止方向 共有・カメラ・添付ファイル渡しがあるアプリ 明示的な権限付与に書き直し
IME 可視性(回転後)の挙動変化 入力フォームを持つすべての画面 ログイン・申込・検索導線で回帰確認
バックグラウンドオーディオ制約強化 再生・通話・音声通知系アプリ フォアグラウンドサービス移行の要否確認

Android 16 ・17 同時対応のテスト優先度

Android 16 対応と Android 17 先行検証を並行するとき、「どちらの検証に何を必ず遭すべきか」が曖昧になりやすい。下表は「対応済みと見なせる条件」を紏展できるよう、テスト領域ごとの必須・優先度を定義する自分たちの QA 制御記刻として使う。

テスト領域 Android 16 本番 Android 17 先行
ログイン・会員導線 必須 必須
WebView 画面 必須 必須
push / 通知復帰 必須 優先
バックグラウンド処理 必須 優先
MDM / 企業端末制約 優先 優先
Android 16/17 の新機能採用(予測変換・Compose 新 API 等) 後回しでよい 余力があれば

日本の業務アプリに固有のリスク

海外発信の一般的な Android 対応記事ではほぼ触れられないが、日本の金融・公共・会員基盤系アプリには固有の引っかかりどころがある。「Android 16/17 が追加した新機能(通知チャネル変更・権限モデル刷新・Compose 新コンポーネント等)を積極的に取り込む」より「ログイン・決済・通知など既存の主要な画面フローが壊れていないか」を先に確認するプロジェクトは、下表の項目をチェックリストにして先に回すこと。

論点 詰まる理由 先にやる確認
WebView 会員・申込・決済導線でまだ多い 認証、Cookie、リダイレクト、表示崩れ
証明書・企業 Wi-Fi 社内・業務端末で詰まりやすい 通信失敗、証明書更新、社内 NW 動作
MDM 制約 企業配布アプリで影響大 権限、バックグラウンド、配布制御
push / バックグラウンド 会員・金融・運用通知に直結 復帰、遅延、強化後の動作確認
端末更改タイミング 利用者の OS バラつきが大きい 対応 OS 範囲、QA 端末計画の見直し

今やるならこの順番

  1. targetSdkVersion 36(Android 16)を含んだ更新を 2026年06月までにリリースする前提でリリース計画を確定する
  2. Android Studio・AGP・Kotlin・JDK の足場をそろえる
  3. Android 16 の主要導線テストと回帰を先に通す
  4. 並行で Android 17 専用ブランチを切って emulator と実機の検証レーンを立ち上げる
  5. behavior changes を security / media / connectivity から順に確認する
  6. targetSdk 37 を上げた CI を別で回す
Read more
パソコンのこと

Java 26 は入れるべき? 良さそうな点と注意点を現場向けに整理

1 Mins read

Java 26 が 2026/03/17 に GA。

今回も preview 系は多いんだけど、HTTP/3、G1 GC、仮想スレッドまわりなど、地味に効きそうな変更が結構ある。

逆に、古い API や昔の JVM フラグをそのまま抱えてる環境だと、上げた時に引っかかりそうな点も見えてきた。

特に Java 8 からだと差分が大きいので、Java 26 の新機能だけ見るより、どこでハマるかを先に見たほうがいい感じ。

ざっくり図

Java 8 から Java 26 への移行フロー
Java 8 から Java 26 へ上げる前に、まず LTS で中間整理を入れる流れ

Java 8 運用中
	|
	+-- 古い API / ライブラリ棚卸し
	|      - javax.xml.bind
	|      - Thread.stop
	|      - sun.*
	|      - 古い JVM フラグ
	|
	+-- まずは LTS で検証
	|      - Java 17 か 21 で一度テスト
	|
	+-- その後 Java 26 の差分確認
			 - HTTP/3
			 - G1 改善
			 - 仮想スレッド周辺
			 - セキュリティ既定値の変化

良さそうな点

java.net.http.HttpClient が HTTP/3 対応になった。

アプリ側のコードを大きく変えずに、HTTP/3 が使える余地が広がるのは素直に便利そう。

あとは G1 GC の同期削減、巨大オブジェクト回収の改善、AOT Object Cache の Any GC 対応など、性能系の修正がわりと堅い。

仮想スレッドも、クラス初期化待ちで carrier thread を握りっぱなしにしにくくなってるので、変な詰まり方を減らせそう。

地味にうれしいのはこのへん。

  • ProcessAutoCloseable 対応
  • UUID.ofEpochMillis() が追加されて UUIDv7 系の扱いがしやすい
  • ByteOrder が enum 化されて switch で扱いやすい

例えば HTTP Client は、こんな感じでコードの見た目を大きく変えずに恩恵を受けやすい。

var client = HttpClient.newBuilder()
	.version(HttpClient.Version.HTTP_3)
	.build();

var request = HttpRequest.newBuilder()
	.uri(URI.create("https://example.com/api/status"))
	.GET()
	.build();

var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());

それと ProcessAutoCloseable になったので、外部コマンド実行の後始末も少し素直になる。

try (var process = new ProcessBuilder("java", "-version").start()) {
	var exitCode = process.waitFor();
	System.out.println("exit=" + exitCode);
}

注意したい点

まず Thread.stop() は削除済み。

昔の保守コードに残っていると、JDK 26 ではもうコンパイル段階で止まる。

Applet API も削除されているので、古い資料やサンプルをそのまま引っ張っている環境は当然ながら要注意。

それと、JVM フラグ整理も進んでいて、-XmaxjitcodesizeMaxRAMAggressiveHeap あたりを惰性で使っていると見直し対象になる。

RMI over TLS は endpoint identification が既定で効くので、証明書の SAN が雑な環境は通信失敗が出るかもしれない。

HttpRequest.Builder.timeout() がレスポンス本文受信まで含むようになった点も、既存の timeout 設計次第では体感差が出そう。

あと Java 8 のまま長く運用していた環境は、Java 26 へ一気に上げる前に、新旧対比でこのへんを意識したほうがいい。

  • Java 8 は classpath 前提で動いていたが、Java 9 以降のモジュール境界や内部 API 依存が表に出やすい
  • Java 11 で Java EE / CORBA 系モジュールが削除されているので、javax.xml.bind などが残っていると別途対応が要る
  • 反射やセキュリティ既定値が厳しくなっていて、昔は動いていたコードが警告や失敗になることがある
  • 古い TLS 設定、keystore、RMI 通信は上げた直後に事故りやすい

それと日本の業務システムだと、文字コードも地味に本丸。

特に銀行系や基幹系は、バックオフィスやホスト連携でいまだに Shift_JIS 系が前提のことがある。

ここで雑に「今どき UTF-8 でしょ」と寄せると、画面は動くのに帳票や外部連携だけ文字化け、みたいな嫌な事故が起きやすい。

Java 8 の時代は、Windows 上でたまたま default charset が windows-31j になっていて動いていたコードが結構ある。

でも JDK 18 以降は default charset が UTF-8 基本になっているので、new String(bytes)FileReader のような「暗黙の文字コード頼み」は、そのまま持っていくと差分になりやすい。

さらに実務では Shift_JISwindows-31j を同一視しすぎないほうがいい。

Java の charset 一覧上はどちらも使えるけど、windows-31j / MS932 は Windows 系拡張を含むので、丸数字、環境依存文字、IBM/NEC 拡張の扱いで期待値がズレることがある。

銀行系のファイル授受やホスト接続だと、相手が求めているのは「Shift_JIS と言いながら実質 CP932」なのか、「本当に Shift_JIS の範囲だけ」なのか、あるいは IBM 系ホストコードまで含むのかを先に確認したほうが安全。

日本語周りで見るなら、このへんは移行前チェックに入れておいたほうがいい。

  • バイト列変換で charset を明示しているか
  • Shift_JISwindows-31j を混同していないか
  • 丸数字、波ダッシュ、全角チルダ、機種依存文字、外字の round-trip を確認したか
  • 帳票 CSV、固定長ファイル、ホスト送受信の文字単位とバイト単位を取り違えていないか
  • 置換文字で握りつぶさず、変換不能文字を検知できるか

なので、Java 8 からなら「いきなり 26 本番」より、まず 17 か 21 の LTS でビルドとテストを通して、そこで古い依存を削ってから 26 を見るほうが現実的。

Java 26 自体は面白いんだけど、Java 8 からの差分を吸収する作業のほうが実務では重いはず。

上げる前に見るところ

まずは古い API とフラグを雑にでも洗うのが早い。

grep -R "Thread\.stop\|Xmaxjitcodesize\|AggressiveHeap\|MaxRAM" ./

Java 8 由来の依存もまとめて見たいなら、これも追加で流しておくと良さそう。

grep -R "javax\.xml\.bind\|javax\.activation\|CORBA\|sun\." ./

文字コード前提を雑に洗うなら、このへんも引っかけておくと見落としが減る。

grep -R "Shift_JIS\|MS932\|windows-31j\|Cp943\|Cp930\|EBCDIC\|file.encoding" ./

Java 側でも、暗黙の default charset に乗らず、変換不能文字を検知する書き方に寄せたほうが事故りにくい。

var charset = Charset.forName("windows-31j");
var encoder = charset.newEncoder()
	.onMalformedInput(CodingErrorAction.REPORT)
	.onUnmappableCharacter(CodingErrorAction.REPORT);

var bytes = encoder.encode(CharBuffer.wrap("顧客コード①"));
System.out.println(bytes.remaining());

ざっくり比較するとこんな感じ。

  • Java 8 から見た Java 26: 差分が大きいので移行案件
  • Java 17 から見た Java 26: 新機能評価と既定値差分の確認が中心
  • Java 21 から見た Java 26: 追従コストは比較的軽め

もう少し実務寄りに並べるとこう。

観点 Java 8 Java 17 Java 21 Java 26
現場での立ち位置 古い基盤がまだ多い まず移行先として堅い いまの主力候補 先行評価と追従候補
移行難易度 ここから上げるのが重い 8 からの受け皿にしやすい 17 からなら延長しやすい 21 以降からなら比較的軽い
気にする点 Java EE 系削除、内部 API 依存 反射や module 境界 仮想スレッド導入判断 HTTP/3、GC改善、既定値差分
向いている進め方 まず棚卸し 先に CI を通す 本番標準化しやすい 検証環境で差分確認

Java 8 の案件だと、Java 26 の新機能に目が行く前に、まず Java 8 時代の負債をどう剥がすかのほうが本題になりやすい。

逆にすでに Java 17 や 21 にいるなら、Java 26 は「全面移行」というより、性能改善や既定値変更をどう取り込むかを見るフェーズだと思う。

あとはこのあたりを CI で確認しておくと安心。

  • HttpClient の timeout やヘッダまわり
  • 証明書検証が絡む RMI / TLS 通信
  • jlink を使ったランタイム作成
  • XML Signature や古い keystore 依存
  • Shift_JIS / windows-31j / ホスト連携ファイルの round-trip テスト

preview / incubator 機能は面白いんだけど、本番投入というよりは評価用として見たほうがまだ自然かなという印象。

まとめ

Java 26 は派手な一撃というより、性能、標準 API、運用上の安全側変更が積まれている感じ。

普通の業務システムだと、HTTP/3、GC、仮想スレッド改善あたりは前向き。

一方で、古いコードや古い運用フラグが残っている現場ほど、先に棚卸ししてから上げたほうが事故は少なそう。

日本語環境なら、特に文字コードは後回しにしないほうがいい。

Shift_JIS 系やホスト連携が残っている現場では、Java 26 の良さを評価する前に、default charset 依存と日本語 round-trip をつぶすほうが優先度が高いはず。

特に Java 8 からなら、先に 17 か 21 で中間整理を入れて、そのうえで Java 26 の恩恵を取りに行くほうが筋が良さそう。

Read more
LinuxPHPWordpressパソコンのこと

Wordpress "mixed content the page at ' url ' was loaded over https" nginx reverse proxy

1 Mins read

Nginx のリバースプロキシ環境において、フロントエンドの Nginx が 443 (HTTPS) でリクエストを受け付け、内部では 80 (HTTP) でラウンドロビン方式の負荷分散を行っている場合、Chrome で Mixed Content エラー が発生することがあります。

この問題を解決するために、wp-config.php の冒頭に以下の設定を追加すると効果的です。

/** mixed content the page at ' url ' was loaded over https wordpress nginx */
/** プロキシ設定の場合、httpsでリダイレクトするように設定が必要! */
/** HTTP_X_FORWARDED_FOR の環境変数名はAWSなどお使いのサーバー環境により若干変更されている時があるので要確認すること */
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $_SERVER['HTTPS'] = 'on';
}

内部では 80 (HTTP)側の nginx.conf ファイルを操作できる方は、以下の設定でも対応可能です。

どちらかお好みでOK

location ~ \.php$ {
    include fastcgi_params;

    # mixed content the page at ' url ' was loaded over https wordpress nginx
    # プロキシ設定の場合、httpsでリダイレクトするように設定が必要!ここから
    fastcgi_param HTTPS on;
    fastcgi_param HTTP_X_FORWARDED_PROTO https;
    # ここまで

    fastcgi_intercept_errors on;
    fastcgi_pass php-fpm;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Read more