# PIC

PICマイコン(Peripheral Interface Controller)は、マイクロチップ・テクノロジー社([Microchip Technology Inc.](https://www.microchip.co.jp/))が開発/製造し、広く使われている1チップ構成のマイコンです。

このチャプターでは、PICに関する情報を提供します。

# 起動途中でレインボールで止まる

MPLAB X IDE v6.30 が macOS Tahoe 26 で起動途中にレインボーのビーチボール化して止まる問題に関しての対応方法を記載しています。

# 概要

##### 問題の概要

PICマイコン用の開発アプリ「MPLAB X IDE v6.30」がmacOS Tahoeで起動途中で停止する状態を修正する方法です。

状況は、最終的にクラッシュでアプリが終了する事は無く、 macOS Tahoe 25(Java 8 +) の組み合わせで起動処理が極端に重くなり、UI スレッド(EDT)が長時間更新されずレインボーのビーチボール化して進行しない状態となります。数分待っても起動しないことが多く強制終了でアプリの起動を中止する状態になります。

# 主な原因

起動ログから主な要因は以下の3つだと推測。

1. スクリーンメニューバー構築が時間がかかる状態  
    ログ: WARNING \[org.openide.awt.Toolbar\]: Too long AWTTask: 8,466 ms  
     for ... Menu/File  
     → 起動時にでのメニュー構築に 8.4 秒ブロックしている。  
     これがビーチボールの直接原因と考えられます。
2. オフライン時の更新チェック待ち  
    ログ: UnknownHostException: ww1.microchip.com / www.microchip.com  
     → 起動毎に Microchip 更新サーバへアクセス(plugin.manager.check.interval=  
     EVERY\_STARTUP)して、オフライン時に待たされている状況を発生します。
3. 前回プロジェクト(今回は「Lチカ」プロジェクト)の自動復元  
     → 起動時に前回セッションを復元し、インデックス＆メニュー再構築が起動負荷増をと成っている状態です。

# 対策

#### 対策1

mplab\_ide.conf の default\_options にフラグ追加・修正(要 sudo権限)します。

##### 対象ファイル

 /Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab\_ide/etc/mplab\_ide.conf

##### 変更内容

<table border="1" id="bkmrk-%28a%29-%E5%85%88%E9%A0%AD%E3%81%AB%E8%BF%BD%E5%8A%A0--j-dapple." style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 21.131%;"></col><col style="width: 53.9584%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>(a) 先頭に追加</td><td>-J-Dapple.laf.useScreenMenuBar=false</td><td>← 主因対策</td></tr><tr><td>(b) 既存値を変更</td><td>-J-Dplugin.manager.check.interval=EVERY\_STARTUP</td><td>  
</td></tr><tr><td>  
</td><td>→ -J-Dplugin.manager.check.interval=NEVER</td><td>← 更新待ち解消</td></tr></tbody></table>

#####  各変更点の意味

- [ ] (a) apple.laf.useScreenMenuBar  
    \- macOS 特有の「画面上部のシステムメニューバー」に Java アプリのメニューを載せる連携機能の ON/OFF を決めるフラグです。true だとメニューが画面最上部に表示されます。  
    \- 既定は有効(true)。だが Java 8 + macOS Tahoe 25 ではこのスクリーンメニュー バー構築が非常に重く、起動時に UI スレッド(EDT)が約8.4秒ブロックしてレインボール化していました（ログの "Too long AWTTask ... Menu/File" が該当）。  
    \- false にすると、メニューを各ウィンドウ内に描画する方式へ切り替わり、この 重い処理を回避できる。今回のビーチボールの主因に対する直接的な対策です。  
    \- 副作用: メニューバーが画面最上部ではなく MPLAB X のウィンドウ内に表示される事になります(Windowsのようにな)。ようになります（機能上の支障はなく、見た目・操作位置が変わるだけ）。
- [ ] (b) plugin.manager.check.interval  
    \- MPLAB X(NetBeans 基盤)がプラグイン/更新の有無を Microchip サーバへ確認する「頻度」を決める設定です。  
    \- 変更前 EVERY\_STARTUP = 起動するたびに毎回オンラインで更新チェックを実行します。オフラインや回線が遅いと、ここでサーバ応答を待たされ起動が固まる一因になっていました（ログの UnknownHostException: ww1.microchip.com 等が該当）。  
    \- 変更後 NEVER = 起動時の自動更新チェックを実施しなくなります。これによりネットワーク待ちによる起動遅延・ハングを回避します。  
    \- 副作用: 更新が自動通知されなくなります。アップデート確認は必要時に手動でTools(ツール) &gt; Plugins(プラグイン) から実行する事になります。

##### バックアップ

同フォルダに mplab\_ide.conf.bak を作成します。

##### 実行したコマンド(参考)

  
\# バックアップ

```bash
sudo cp -p "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf" \  "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf.bak"
```

\# メニューバー無効化フラグを先頭に追加

```bash
sudo perl -i -pe 's/^default_options="/default_options="-J-Dapple.laf.useScreenMenuBar=false /' \ "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf"
```

\# 更新チェックを NEVER に変更

```bash
sudo perl -i -pe 's/-J-Dplugin\.manager\.check\.interval=EVERY_STARTUP/-J-Dplugin.manager.check.interval=NEVER/' \ "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf"
```

\# 確認

```bash
grep -n '^default_options=' \ "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf"
```

##### 変更後の default\_options(先頭抜粋)

 default\_options="-J-Dapple.laf.useScreenMenuBar=false -J-Dprism.allowhidpi=false  
 ... -J-Dplugin.manager.check.interval=NEVER ... -J-Duser.region=en"

#### 対策2

キャッシュと前回ウィンドウ状態のリセット(sudo 権限は不要)します。

##### 実行したコマンド

  
 # キャッシュ削除(設定は保持・低リスク)

```bash
rm -rf "$HOME/Library/Caches/mplab_ide/dev/v6.30"
```

\# 前回ウィンドウ状態を退避(自動復元時の負荷の除去)

```bash
mv "$HOME/Library/Application Support/mplab_ide/dev/v6.30/config/Windows2Local" \ "$HOME/Library/Application Support/mplab_ide/dev/v6.30/config/Windows2Local.bak.<日時>"
```

##### 結果

\- キャッシュ: 削除済み（次回起動時に再生成。初回は起動が少し遅い）  
\- Windows2Local: Windows2Local.bak.20260602152146 に退避済み

# 起動確認

#### 確認手順

1. MPLAB X IDE v6.30 を通常どおりアイコンから起動します。
2. 初回はキャッシュ再生成で1分程度かかることがあります(正常動作)。
3. 起動時のレインボーのビーチボールが解消し、IDE が開けば対策成功となります。

#### 各種調整

起動時の自動プロジェクト復元を抑える対策です。

##### Preferences設定

MPLAB X v6.30 の Preferences設定には前回開いたプロジェクトを開く」というチェックボックスは存在しません(該当ラベル・設定キーともにアプリ内に無い)。MPLAB X は「終了時に開いていたプロジェクト一覧」を記憶し、次回起動時に自動で開き直す動作になります。

##### 方法1

IDE 終了前にプロジェクトを閉じる方法。

Projects ペインでプロジェクトを右クリック &gt; Close、または開いているプロジェクトをすべて閉じてから IDE を終了します。次回は「プロジェクト無し」で起動し、自動復元の負荷がかからないようにします。

##### 方法2

 IDE 終了中に記憶先ファイルの該当行を削除する方法。

対象ファイル:

~/Library/Application Support/mplab\_ide/dev/v6.30/config/Preferences/org/netbeans/modules/projectui.properties

削除する行(前回プロジェクトの登録):  
 mainProjectURL=...  
 openProjectsURLs.0=... ※ openProjectsURLs.\* をすべて  
 openProjectsDisplayNames.0=... openProjectsIcons.0=... も合わせて  
 ※ RecentProjects\*（最近使ったプロジェクト履歴）は消さなくてよい。

##### projectui.propertiesの説明

場所: ~/Library/Application Support/mplab\_ide/dev/v6.30/config/Preferences/org/netbeans/modules/projectui.properties

形式: NetBeans の設定ファイル(key=value)。日本語等は \\uXXXX でエスケープされる(例: L\\u30c1\\u30ab = 「Lチカ」)。"openProjectsURLs.0" の末尾 .0/.1... は配列の添字で、複数開いている分だけ増えます。

【起動時に自動で開くプロジェクト（= 方法2で削除する対象）】

- mainProjectURL  
    メインプロジェクト（太字表示・ビルド/実行の既定対象）のURL  
    例: file:/.../Lchka.X/
- openProjectsURLs.0, openProjectsURLs.1, ...  
    前回終了時に開いていたプロジェクトのURL一覧。起動時にこれらを自動で開き直す。自動復元を止めたい場合の主削除対象。
- openProjectsDisplayNames.0, ...  
    上記で開くプロジェクトの表示名（Projects ペインに出る名前）。
- openProjectsIcons.0, ...  
    上記プロジェクトのアイコン画像をシリアライズ(Base64)したキャッシュ。長い文字列だが意味は単なるアイコンデータ。  
       
     【最近使ったプロジェクトの履歴（消さなくてよい）】  
     recentProjectsURLs.0, recentProjectsURLs.1, ...  
     「最近のプロジェクトを開く(Open Recent Project)」に出る履歴のURL。  
     RecentProjectsDisplayNames.0, ...  
     その履歴の表示名。  
     RecentProjectsIcons.0, ...  
     その履歴のアイコンデータ(Base64)。

【新規プロジェクト作成ウィザードの記憶値】

- lastOpenProjectDir  
    「プロジェクトを開く/作成」ダイアログで最後に開いたフォルダ。
- projectsFolder  
    新規プロジェクトの既定の保存先フォルダ。
- lastSelectedProjectCategory  
    新規プロジェクトウィザードで最後に選んだカテゴリ（例: Embedded）。
- lastSelectedProjectType  
    同ウィザードで最後に選んだプロジェクト種別  
    (例: newApplicationProject)。
- recentTemplates.0, ...  
    最近使ったファイル/プロジェクトのテンプレート（例: Templates/cFiles/file.c）。

【その他】

- setMainProjectContextEnabled  
    メインプロジェクトをコンテキスト（選択状況）に応じて切り替える機能の有効/無効（true/false）。

補足: 「自動で開くのを止めたいだけ」なら

mainProjectURL と openProjectsURLs.\* / openProjectsDisplayNames.\* / openProjectsIcons.\* の行だけを削除します。Recent\* や lastOpen\* 等は履歴・利便性のための値なので残しても問題有りません。編集は必ず IDE を終了した状態で実施します(起動中は終了時に上書きされ、変更が消えます)。

# 未だ問題が解決出来ない時

起動を試した直後に以下を実行し、出力（特に "Too long AWTTask"、Exception、Secure coding、UnknownHostException 等）を確認します:

```bash
tail -n 60 "$HOME/Library/Application Support/mplab_ide/dev/v6.30/var/log/messages.log"
```

結果サンプル

```bash
$ tail -n 60 "$HOME/Library/Application Support/mplab_ide/dev/v6.30/var/log/messages.log"
	-XX:+UseConcMarkSweepGC
	-XX:+CMSClassUnloadingEnabled
	-Dapt.limit.expanded.params=1000
	-Dplugin.manager.check.interval=NEVER
	-Dsun.java2d.noddraw=true
	-Dorg.netbeans.modules.extbrowser.UseDesktopBrowse=true
	-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade
	-Duser.language=en
	-Duser.region=en
	-XX:+HeapDumpOnOutOfMemoryError
	-XX:HeapDumpPath=/Users/管理者/Library/Application Support/mplab_ide/dev/v6.30/var/log/heapdump.hprof
Compiler: HotSpot 64-Bit Tiered Compilers
Heap memory usage: initial 256.0MB maximum 8117.1MB
Non heap memory usage: initial 2.4MB maximum -1b
Garbage collector: ParNew (Collections=81 Total time spent=1s)
Garbage collector: ConcurrentMarkSweep (Collections=6 Total time spent=0s)
Classes: loaded=17460 total loaded=17464 unloaded 0
INFO [org.netbeans.core.ui.warmup.DiagnosticTask]: Total memory 34,359,738,368
INFO [null]: Total physical memory 34,359,738,368
.....
略
.....
INFO [com.microchip.mplab.nbide.productreleaseprompt.hardware.HardwareRegistration]: Internet connection detected.
INFO [com.microchip.mplab.nbide.toolchain.license.monitor.LicenseMonitor]: Checking Toolchain License(s) 06/02/2026 16:04:42
INFO [com.microchip.mplab.nbide.toolchain.license.monitor.LicenseMonitor]: XC8: no license exists
INFO [com.microchip.mplab.nbide.toolchain.license.monitor.LicenseMonitor]: XC16: no license exists
INFO [com.microchip.mplab.nbide.toolchain.license.monitor.LicenseMonitor]: XC32: no license exists

```

##### さらに強力な対策候補(必要時)

<span style="color: rgb(224, 62, 45);">**注意**</span>: 未確認です。

- JavaFX/JRE を新しものへ差し替えます(jdkhome 変更）。ただし MPLAB X 6.x はJava 8 前提のため互換性に注意してください。Apple Silicon では必ず arm64 版を使用します。
- macOS Tahoe 側のインデックスループ対策:  
    システム設定 &gt; Spotlight &gt; 検索プライバシーに起動ボリュームを一旦追加 →  
    設定を閉じて再起動 → 再度開いて削除(再インデックスを正常化）。
- セーフモード起動で常駐物(カーネル拡張/セキュリティソフト)の干渉切り分けます。

# 元に戻す方法

ロールバック方法

1.mplab\_ide.conf を戻します

```bash
sudo cp -p "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf.bak" \ "/Applications/microchip/mplabx/v6.30/MPLAB X IDE v6.30.app/Contents/Resources/mplab_ide/etc/mplab_ide.conf"
```

2\. 前回ウィンドウ状態を戻します

```bash
mv "$HOME/Library/Application Support/mplab_ide/dev/v6.30/config/Windows2Local.bak.20260602152146" \ "$HOME/Library/Application Support/mplab_ide/dev/v6.30/config/Windows2Local"
```

※ キャッシュは再生成されるため復元不要です。