OpenAI の APIからRAGをつかえるようにExcel VBA を修正した話

前回、下記の通り Excel VBA から OpenAI の Response API を使えるようにしました。

そこで今回は1歩先に進めて、Excel VBAからRAG連携するように改修しましたのでここにその内容を記録しておきます。

主に修正したのは下記の4箇所です。

修正①:RAGで使用するVector Store IDの設定

Vector Store IDについては以下の回で取得したものを設定しています。

修正②:max_output_tokensの変更

Response APIにてRAGを使うようになりOpenAIからのレスポンスが大きくなってきたので値を2000から10000に大きくしています。

修正③:OpenAIへのリクエストに tools を追加

OpenAIへのリクエストの中に以下のJSONを追加し、file_search を行うようにしています。

  "tools": [
{
"type": "file_search",
"vector_store_ids": [
"vs_xxxxxxxxx"
]
}
]

修正④:JsonConverterを使う形に変更

Response APIにてRAGを使うようになりOpenAIからのJSONが複雑、かつUnicodeエスケープ化されて返ってくるようになったので、JsonConverterを利用するように変更しています。

上記3つを修正した結果は以下の通りです。

Option Explicit

Const API_URL As String = "https://api.openai.com/v1/responses"

'★①RAGで使用するVector Store ID
Const VECTOR_STORE_ID As String = "vs_xxxxxxxxxx"

Sub ApplyAddressCorrection()
Dim apiKey As String
Dim text As String
Dim response As String
Dim responseArray() As String
Dim ws As Worksheet
Dim i As Long

Set ws = ActiveSheet
ws.Range("B5").CurrentRegion.ClearContents

apiKey = Environ("OPENAI_API_KEY")

If apiKey = "" Then
MsgBox "OpenAI APIキーが設定されていません。", vbCritical
Exit Sub
End If


text = ws.Range("B2").Value & ws.Range("B3").Value

'★②max_output_tokensを2000から10000に変更
'★③OpenAIへのリクエストに tools を追加
text = _
"{""model"":""gpt-5-nano""," & _
"""max_output_tokens"":10000," & _
"""input"":""" & text & """," & _
"""tools"":[{" & _
"""type"":""file_search""," & _
"""vector_store_ids"":[""" & VECTOR_STORE_ID & """]" & _
"}]}"

response = sendAPIRequest(API_URL, text, apiKey)

Debug.Print response

response = ExtractResponseText(response)

ws.Range("B5").Value = response

response = Replace(response, "\n", vbLf)
If ws.Range("D5").Value = "する" Then response = Replace(response, "。", "。" & vbLf)
responseArray = Split(response, vbLf)
For i = 0 To UBound(responseArray)
ws.Range("B" & 5 + i).Value = responseArray(i)
Next i
End Sub

Function sendAPIRequest(url As String, text As String, apiKey As String) As String
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "POST", url, False
request.setRequestHeader "Content-Type", "application/json"
request.setRequestHeader "Authorization", "Bearer " & apiKey
request.send text
sendAPIRequest = request.responseText
End Function

'★④JsonConverterを使う形に変更
Function ExtractResponseText(response As String) As String

Dim json As Object
Dim outputItem As Variant
Dim contentItem As Variant

On Error GoTo ErrorHandler

'JSON文字列を解析
Set json = JsonConverter.ParseJson(response)

'output配列を順番に確認
For Each outputItem In json("output")

'messageタイプを探す
If outputItem("type") = "message" Then

'content配列を確認
For Each contentItem In outputItem("content")

'output_textを探す
If contentItem("type") = "output_text" Then

'textを取得
ExtractResponseText = contentItem("text")
Exit Function

End If

Next contentItem

End If

Next outputItem

'output_textが見つからなかった場合
ExtractResponseText = response
Exit Function

ErrorHandler:

ExtractResponseText = response

End Function

実際にこれを実行したところ、以下のような結果となりました。

OpenAIのAPIをつかってRAGを行う為に検索対象のファイルを準備してみた

題名のとおり、OpenAIのAPIをつかってRAGを行う為に検索対象のファイルを準備してみました。

大まかな流れは以下の通りです。

① 検索対象ファイルを作成

② File APIへアップロード

  File IDを取得

③ Vector Storeを作成

  Vector Store IDを取得

④ File IDをVector Storeへ登録

   Responses APIからFile Search

1.検索対象ファイルを作成

とりあえず今回は以下の料理レシピを作成し、RAGとして登録してみることにしました。なお最初、別のデータをcsvで登録しようとしたのですがなぜかうまくいかなかったので、マークダウンファイル(recipe.md)として作成しました。

# 鶏の照り焼き

##材料
鶏もも肉 300g
しょうゆ 大さじ2
みりん 大さじ2
砂糖 大さじ1

##所要時間
約20分


# 親子丼

##材料
鶏もも肉 150g
卵 2個
玉ねぎ 1/2個
しょうゆ 大さじ1
みりん 大さじ1

##所要時間
約15分

2.File APIへアップロード

対象ファイルを作成したら、まずは下記の curl コマンドを利用し、OpenAIのFile APIにアップロードします。

なお、$OPENAI_API_KEYでは環境編集として設定した API_Keyを読み込んでいます。また、purposeのところは色々な指定ができるようですが、今回は user_data (RAGなどの一般的なファイル利用に使える目的)としています。

curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="user_data" \
-F file="@recipe.md"

うまくいくと以下のような回答が返ってきますので、”file-xxxxxxxxxxxxxxxx”(File ID)をメモしておきます。

{
"id": "file-xxxxxxxxxxxxxxxx",
"object": "file",
"bytes": 1234,
"created_at": 1750000000,
"filename": "recipe.md",
"purpose": "user_data"
}

3.Vector Storeを作成

次に以下の curlコマンドを実行し、Vector Storeを作ります。

curl.exe https://api.openai.com/v1/vector_stores `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
-d '{\"name\":\"料理レシピRAG\"}'

こちらもうまくいくと以下のような回答が返ってくるので”vs_xxxxxxxxxxxxx”(Vector Store ID)をメモしておきます。

{
"id": "vs_xxxxxxxxxxxxx",
"object": "vector_store",
"name": "料理レシピRAG",
...
}

4.File IDをVector Storeへ登録

最後にこれまでで取得した”file-xxxxxxxxxxxxxxxx”(File ID)と”vs_xxxxxxxxxxxxx”(Vector Store ID)を使い、File IDをVector Storeへ登録します。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
-d '{\"file_id\":\"file-xxxxxxxx\"}'

成功すると以下のような回答が返ってきます。

{
"id": "file-xxxxxxxxx",
"object": "vector_store.file",
"status": "in_progress",
"vector_store_id": "vs_xxxxxxxxx",
"created_at": 1750000000
}

なお、このとき大概の場合 “status”: “in_progress”となっているので、完了を確認するには以下のコマンドを続けて実行します。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files/file-xxxxxxxx `
-H "Authorization: Bearer $env:OPENAI_API_KEY"

これで”status”: “completed”となっていれば完了です。

ちなみに冒頭で書いたように最初 csvで登録しようとしたら failed となったので、正しく登録できたかどうか”status”: “completed”になるまで確認したほうがよさそうです。

補足(ファイル一覧取得)

OpenAI APIには「Vector Storeに登録されたファイル一覧」を取得するAPIがあります。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files `
-H "Authorization: Bearer $env:OPENAI_API_KEY"

これを実行すると以下のような回答が得られ、Vector Store内のファイル一覧を取得することが可能です。

{
"object": "list",
"data": [
{
"id": "file-xxxxxxxx",
"object": "vector_store.file",
"status": "completed"
}
]
}

Excel VBAから呼び出すOpenAIの APIをChat CompletionsからResponse APIに書き換えた話

前回、ExcelのVBAからOpenAIのChat Completions Responses APIを利用することで、質問に対するテキスト生成を行なってみました。

しかし、Response APIというものを使えば、単純なテキスト生成だけではなく、
・Web検索
・ファイル検索
・Function Calling
・Computer Use
・MCP
・複数ステップの処理
など、AIにツールを使わせる方向へ発展させやすいという話を聞いたのでそちらに書き換えてみることにしました。

1.主な変更点

Chat Completions APIとResponse APIはいろいろと違いがあるようですが、特に大きな違いは OpenAIからのレスポンスです。

Chat Completions APIでのレスポンスは、

"output_text": "回答"

のような単純なものでした。

一方で、Response APIのレスポンスの構造は以下のようになっており、その中の output 配列にメッセージやテキスト出力が入るようです。

response
├─ id
├─ object
├─ status
└─ output
└─ message
└─ content
└─ output_text
└─ text

2.Response APIへ書き換え

以下、書き換えた結果を記載しておきます。

Option Explicit

'★Response APIを利用する為にURLを変更
'Const API_URL As String = "https://api.openai.com/v1/chat/completions"
Const API_URL As String = "https://api.openai.com/v1/responses"

Sub ApplyAddressCorrection()
Dim apiKey As String
Dim text As String
Dim response As String
Dim responseArray() As String
Dim ws As Worksheet
Dim i As Long

Set ws = ActiveSheet
ws.Range("B5").CurrentRegion.ClearContents

apiKey = Environ("OPENAI_API_KEY")

If apiKey = "" Then
MsgBox "OpenAI APIキーが設定されていません。", vbCritical
Exit Sub
End If


text = ws.Range("B2").Value & ws.Range("B3").Value

  '★max_completion_tokensをmax_output_tokens変更
  '★messagesをinputに変更
'text = "{""model"": ""gpt-5-nano"", ""max_completion_tokens"": 2000" & ", ""messages"": [{""role"": ""user"", ""content"": """ & text & """}]}"
text = _
"{""model"":""gpt-5-nano""," & _
"""max_output_tokens"":2000," & _
"""input"":""" & text & """}"
response = sendAPIRequest(API_URL, text, apiKey)

Debug.Print response

  '★レスポンスの受け取り方(関数)を変更→①
'response = extractContent(response)
response = ExtractResponseText(response)

ws.Range("B5").Value = response

response = Replace(response, "\n", vbLf)
If ws.Range("D5").Value = "する" Then response = Replace(response, "。", "。" & vbLf)
responseArray = Split(response, vbLf)
For i = 0 To UBound(responseArray)
ws.Range("B" & 5 + i).Value = responseArray(i)
Next i
End Sub

Function sendAPIRequest(url As String, text As String, apiKey As String) As String
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "POST", url, False
request.setRequestHeader "Content-Type", "application/json"
request.setRequestHeader "Authorization", "Bearer " & apiKey
request.send text
sendAPIRequest = request.responseText
End Function

'①レスポンスを受け取る関数
Function ExtractResponseText(response As String) As String
Dim startPos As Integer
Dim endPos As Integer
Dim searchText As String

'"text"を検索
searchText = """type"": ""output_text"""
  ' InStr(開始位置, 検索対象, 検索文字列)
startPos = InStr(1, response, searchText)

If startPos = 0 Then
'extractContent = response
ExtractResponseText = response
Exit Function
End If

'output_textの後ろから"text"を検索
startPos = InStr(startPos, response, """text"": """)
If startPos = 0 Then
ExtractResponseText = response
Exit Function
End If

'"""text"": """ の文字数分だけ進める
startPos = startPos + Len("""text"": """)
'次のダブルクォーテーションを探す
endPos = InStr(startPos, response, """")

If endPos = 0 Then
'extractContent = response
ExtractResponseText = response
Exit Function
End If

'Mid(文字列, 開始位置, 文字数)
ExtractResponseText = Mid(response, startPos, endPos - startPos)


End Function

Excel のVBA(マクロ)から OpenAI の API を使ってみた

ExcelのVBAで作成したマクロから OpenAI の API が使えればいろいろと AI の活用範囲が広がりそうだったので、試してみることにしました。

なお、VBAの作成にあたっては、わちょんさんの以下の Youtubeを参考にさせていただきました。大変ありがとうございました。

ちなみに、この動画自体は3年前のもので、概要欄に書かれているコードをそのまま実行させても今の OpenAIでは動作しないようでしたので、「1.VBAの修正」の通り少し修正させていただきました。

1.VBAの修正

わちょんさんの概要欄に記載されているコードからの主な修正点は”★”の部分です。

Option Explicit
'★Chat Completions APIを使う場合のURLを変更
Const API_URL As String = "https://api.openai.com/v1/chat/completions"

Sub ApplyAddressCorrection()
Dim apiKey As String
Dim text As String
Dim response As String
Dim responseArray() As String
Dim ws As Worksheet
Dim i As Long

Set ws = ActiveSheet
ws.Range("B5").CurrentRegion.ClearContents

'★Windowsの環境変数にAPIキーを保存し、VBAから読み込む方法に変更
apiKey = Environ("OPENAI_API_KEY")

If apiKey = "" Then
MsgBox "OpenAI APIキーが設定されていません。", vbCritical
Exit Sub
End If

'★現行モデル"gpt-5-nano"の利用に変更
'★temperature = ws.Range("D3").Valueを削除
'★"max_tokens": 2000から"max_completion_tokens": 2000に変更
text = ws.Range("B2").Value & ws.Range("B3").Value
text = "{""model"": ""gpt-5-nano"", ""max_completion_tokens"": 2000" & ", ""messages"": [{""role"": ""user"", ""content"": """ & text & """}]}"
response = sendAPIRequest(API_URL, text, apiKey)

'★responseの中身を確認
Debug.Print response

'★extractContentの処理を2回→1回に変更し効率化
response = extractContent(response)
ws.Range("B5").Value = response

response = Replace(response, "\n", vbLf)
If ws.Range("D5").Value = "する" Then response = Replace(response, "。", "。" & vbLf)
responseArray = Split(response, vbLf)
For i = 0 To UBound(responseArray)
ws.Range("B" & 5 + i).Value = responseArray(i)
Next i
End Sub

Function sendAPIRequest(url As String, text As String, apiKey As String) As String
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "POST", url, False
request.setRequestHeader "Content-Type", "application/json"
request.setRequestHeader "Authorization", "Bearer " & apiKey
request.send text
sendAPIRequest = request.responseText
End Function

Function extractContent(response As String) As String
Dim startPos As Integer
Dim endPos As Integer

'★JSONの解析方法を変更
startPos = InStr(1, response, """content"": """)

If startPos = 0 Then
extractContent = response
Exit Function
End If

startPos = startPos + 12

endPos = InStr(startPos, response, """")

If endPos = 0 Then
extractContent = response
Exit Function
End If

extractContent = Mid(response, startPos, endPos - startPos)


End Function

2.Windowsの環境変数にAPIキーを保存

「1.VBAの修正」の中で記載の通り、Windowsの環境変数にAPIキーを保存し、VBAから読み込む方法にVBAを変更していますので、Windows11にて以下の操作を実行しています。

1.スタートボタンをクリック
2.「環境変数」と検索
3.「システム環境変数の編集」を開く
4.「システムのプロパティ」が開いたら、「環境変数」をクリック
5.「ユーザー環境変数」のところで 「新規」をクリック

上記の5.まで実施すると以下のウィンドウが表示されるので、
・変数名:OPENAI_API_KEY
・変数値:OpenAIで取得したAPIキー(sk-… )
を入力し、「OK」ボタンを押します。

Windows11のユーザ環境変数設定画面

この後、コマンドプロンプトを開いて下記のように入力し、APIキーが表示されれば登録成功です。(set コマンドで確認してもOK)

echo %OPENAI_API_KEY%

3.VBAの実行

ExcelにてセルのB2 および B3に OpenAIに質問したい事項を記入後、[ALT]+[F11]にてVBAの編集画面を起動し実行すれば、B5に OpenAIからの回答が出力されました。

ExcelからOpenAIのAPIにアクセスし回答が返ってきたところ

OpenAIのAPI利用条件が非常にわかりづらかった件と利用設定について

普段、私は ChatGPT を無料枠で使っているのですが、ふと OpenAI の APIを使ってみたくなりました。

ところがそのAPIの利用条件を調べてみてもいまいちわかりづらかったのでここで整理しておきます。

結論としては、
・ChatGPTの有料プランを購入しなくても OpenAI の API 利用は可能
・OpenAIのAPI利用はプランではなく完全に従量課金制
ということがわかりました。

また上記踏まえて、OpenAIのAPI利用設定を実施しましたので下記のとおり整理しておきます。

1.OpenAI API Platformにアクセス

下記のURLにアクセスしアカウントを作成後、ログインします。

OpenAI API Platform
https://openai.com/ja-JP/api/

2.API keyの作成

すると以下のような画面が表示されるので Get started のところに表示されている「1. Create an API key」をクリックし、API key を作成します。

OpenAI API Platform

なお、この時に作成したskから始まるAPI key は一度しか表示されないようですので、作成したら安全なところに保管してください。

3.クレジットの登録と支払い上限設定

API key を作成しただけでは API へアクセスできませんでした(自分の場合、無料枠はつきませんでした)ので、API を利用する為にクレジットの登録を行います。

上図の通り最上部のプルダウンから「Manage Projects」を選択後、左ペインの「Billing」を選択すると「Add payment details」のボタンが表示されるので、ここからクレジットカードを登録します。

OpenAI API Platform

なお、クレジットカードを登録した後に、下図の通り最初の購入額が設定できます。
ここで Use auto-reloadを OFF にすると最初の購入額を超えた API利用はできなくなり安心です。

OpenAI API Platform

実際にUse auto-reloadを OFF にするとこうなります。

OpenAI API Platform

最後に下記の画面で支払いの確認をすれば完了です。

OpenAI API Platform

4.支払い設定の確認

「Billing」にて auto-reload が OFF になっていることをあらためて確認します。
なおこの場合、残価が0円になるとAPIが自動的に利用できなくなりますので業務で定期的に利用している場合などは注意が必要ですね。

OpenAI API Platform

OpenAIのAPIを使った最初の PythonプログラムをMacで動かしてみたら意外とてこずった件

AIの本を読んでいて、OpenAIのAPIを使ってみたくなったので、Mac上で環境を用意し、PythonプログラムからOpenAI のAPIを呼び出してみました。

単純なプログラムを動かすだけなのですぐにできるだろうと思いましたが意外と手こずったので、ここにその時の記録を残しておきます。

エラー1.cannot import name ‘OpenAI’ from ‘openai’

まず Mac上で作成した Pythonのプログラム(test.py)を動かそうとして最初に発生したのがこのエラーでした。

% python test.py
Traceback (most recent call last):
File "/Users/XXX/tmp/test.py", line 1, in <module>
from openai import OpenAI
ImportError: cannot import name 'OpenAI' from 'openai' ・・・

原因はどうやら自分のMAC上の openai のライブラリが古いようで、以下のコマンドでバージョンアップしてあげることで解消しました。

% pip install --upgrade openai
Requirement already satisfied: openai in /Users/XXX/.pyenv/versions/3.10.0/lib/python3.10/site-packages (0.27.10)
Collecting openai
Downloading openai-2.52.0-py3-none-any.whl.metadata (40 kB)
 ・・・

エラー2.NameError: name ‘sk’ is not defined

そして次に遭遇したのがこのエラーです。

エラーの理由は単純で、あらかじめ取得しておいた api_keyをプログラム内に設定する際に””で括ってあげていない為でした。

ただしくは以下の通りに記述する必要があります。(本当はプログラム内に直接 APIキーを書かない方がいいですが。)

client = OpenAI(
api_key ="sk・・・・・"
)

エラー3.openai.RateLimitError

そして最後に遭遇したのがこのエラーです。詳しくは以下の通り出力されていました。

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

このエラーの原因も単純で、まだこの時点ではOpenAI のWeb上から api_key を入手しただけで、支払い処理(クレジットカードの登録)を実施していなかった為でした。

OpenAI の APIの作成手続きを済ませた直後は無料枠が使えるのかと思っていましたが、そんなに甘くはないようです。(2027.8.1時点)

ついに成功

その後、支払いを済ませて再度プログラムを実行すると、正常動作しました。

% python test.py
こんにちは!元気ですか?何かお手伝いできることはありますか?

たとえばこんなことができます。
- 日本語↔英語の翻訳・添削
- 文章の要約・ブラッシュアップ
- アイデア出しや企画の構成作成
- 技術的な質問・コーディングのサポート
- 日常の相談・学習サポート

話したいトピックを教えてください。最近の話題でもOKです。

SOC業務での生成AI活用についての考察(その1)LLM+RAG

生成AIのSOCへの適用について、つい最近まで自分はLLM+RAGがあれば十分とおもっていました。

しかしながら以下の書籍を読み、あらためてその認識は誤りであることに気付かされました。そこで自分の知識向上の為にもこのブログを書いていきたいと思います。

本記事では、SOCにおける生成AIの活用方法を以下の段階に分けて整理する予定ですが、執筆中に変わって行った場合ご容赦ください。

1.LLMによるSOC業務支援
2.RAGによる独自ナレッジの活用
3.Graph RAGによる関係性を考慮した調査
4.AI Agentによる自律的な調査
5.WorkflowによるAI適用範囲の最適化
6.Multi-Agentによる複数の専門Agentのオーケストレーション

1.LLMによるSOC業務支援

最も基本的な方法は、素のLLM(Large Language Model)をSOCアナリストのアシスタントとして利用する方法になるかと思います。

具体的には、次のような活用が考えられます。

セキュリティアラートの概要説明
ログの要約
想定される攻撃手法の説明 など

しかし、ここから先(アラートやログからのリスク判定など)に踏み込もうとすると、「LLMは環境固有の知識を持っていない」ということがネックになってきます。

例えば一般的なLLMは、環境固有の以下のような知識を有していません。

正常なユーザの行動パターン
その環境固有のセキュリティポリシー
過去のアラート対応結果 など

そのため、LLM単体でSOC業務を支援させる場合、回答の精度には限界があると考えています。そこでまず考えられるのが、RAGという仕組みの活用です。

2.RAGによる独自ナレッジの活用

RAG(Retrieval-Augmented Generation)は、LLMが回答を生成する前に、外部のナレッジベースから関連情報を検索する仕組みです。

SOCで利用する場合、さきほど1.であげた情報をナレッジベースに格納しRAGの仕組みにてLLMに参照させることで、一般的なセキュリティ知識だけではなく、組織独自の知識を活用し、回答の精度をアップさせることが可能です。

RAGの検索エンジンの仕組みには以下のようなものがあるので、どの方式がSOC調査にマッチするか検証していく必要があります。(これ以外にもいろいろあるみたいです。)

・キーワード検索(フルテキスト検索)
・ベクトル検索
・ハイブリッド検索(キーワード+ベクトル検索)

なお一般的には下に行くほど回答の精度は向上すると思われます。

ハイブリッド検索を行えばかなり検索精度はよくなるようですが、さらに精度を高めたい場合、リランクという手法を追加で実施する方法があるようです。

リランクでは、ハイブリッド検索などである程度一致していそうな候補を絞り込んだあと、さらにそれらについてランク付けを行うことで、より高い精度で検索できるようです。

(以降、次回に続く。)

CISSP の CPE を稼ぐ(2026)セキュリティ関連の本を読んで5ポイント稼ぐ

久しぶりにセキュリティの本を読んでCPE申請しようとしたのですが、申請の仕方を忘れていたのでその方法を簡単にメモ書きしています。

1.申請カテゴリの選択

ISC2のサイトにログイン後、CPE の申請画面から本を読んだ日付を選びます。

その後、「Category & Details」にて
 Category:Education の「Book, Magazine, Whitepaper」
を選択します。

その後は本のタイトルや著者、本の感想などを記載します。

本の感想については、明確に何文字以上書かないといけないという決まりはなさそうで、通常、英文で5行程度を記載して提出しています。

また本を購入したエビデンスを添付する必要がありますので、Amazonなどで購入した場合はその invoice などをPDF等で添付します。

2.申請するとすぐにポイント付与

申請するとすぐに5ポイント付与されます。

ただし、申請後にチェックが入る可能性もありますので、CPE取得の期限が迫っている人は早めに申請したほうがいいかと思います。

【2026】今年も花が咲き始めました!~種から育てたサンダルウッド(白檀)~

昨年はじめて一房の花を咲かせてくれたサンダルウッドですが、今年はパワーアップして6房もの蕾をつけてくれました。

5月15日の朝、なにやら新芽とは違う形のものをあちこちに発見!

5月15日の朝

5月20日、蕾の女王様がお付きの者たちと天を仰いでいる様子。。

5月30日、蕾がふっくらしてきました。
6月7日 今年は6房も咲くのかと思うと・・・浮き足立ってしまいます。

そして6月14日の朝、ついに咲き始めました!

6月14日の朝


今年は6房も蕾がついたので長く楽しめそうです。

↓↓もしよろしければこちらもご覧ください。昨年の開花記録です。↓↓

Krunia のドライブレコーダー付きディスプレイオーディオとスマホのAndroid Auto接続で手こずった件

昨日、Kruniaのドライブレコーダー付きディスプレイオーディオをロードスターNC2に取り付けてみましたのでここに記録しておきます。

実はKruniaのセットアップで一番手こずったのが、この Krunia と スマートフォン Pixel 7aのAndroid Auto接続の部分でした。

接続操作としては以下のように簡単なものですが、言語設定を English にしてやっていたところどうしても接続がうまくいかず、時には Kruniaが勝手に電源断してしまう状況でした。(この時は初期不良を疑ってました。)

<Kruniaとスマホの接続操作>
1.Kruniaの電源を入れる
2.起動後、言語や時刻などの設定を行う
3.Android Autoのアプリを起動する(これでBluetoothが起動)
4.スマートフォンを3.のBluetoothに接続する

そこでふと、言語を日本語にしてみたらどうかと思い変更したところ、Android Autoの接続が無事行われナビが起動しました。(その後、電源断が起きることもなく安定しています。)

以下、Kruniaを箱から出した後のセットアップ手順です

1.箱を開封し、サポート登録する

Kruniaの箱を開けたところですが、一番上に購入のお礼とサポート登録用の紙が同封されていました。必要であればサポート登録できるようですが、価格がそこまで高い製品ではないので、私は一旦遠慮しておきました。

Kruniaの箱を開けたところ

2.ディスプレイオーディオをセットアップ

ディスプレイオーディオに最初から台座がついていたのですが、自分は伸縮するアームの方を使いたかったので、ネジを外して取り替えました。

Kruniaディスプレイオーディオのデフォルト状態

以下が台座をアーム型の方に取り替えた写真です。

Kruniaの台座をアーム型に取り替えたところ

3.Kruniaとスマホを接続

ここは冒頭で説明したとおりです。Kruniaの電源を入れた直後に行う言語設定を日本語にしていれば、すんなり接続できていたと思います。

4.アーム型の台座をダッシュボードに貼り付け

そして、アームの台座の方を車のダッシュボードに貼り付けました。

Kruniaのアーム型台座をダッシュボードに取り付けたところ

台座の方はダッシュボードに直接貼るプレートとそこに吸盤のようになっていて貼り付けるアームに分かれています。

プレートの方は最初から両面テープになっているだろうと思っていましたが、その上に貼り付ける吸盤の方も実は両面テープのようにかなり粘着性のあるものになっていました。

したがって、時間が経つといつのまにか剥がれてしまうようなことはなさそうです。

5.ディスプレイをダッシュボードに設置

最後にディスプレイオーディオの後ろに取り付けたアームをダッシュボードに取り付けた台座に合体させます。合体させる際はディスプレイオーディオの方のアームを台座の方のアームに差し込み、取手の着いたネジで締め付けるようになっています。

Kruniaの設置イメージ(助手席側から)

なかなかいい感じに取り付けられたのではないかと思います。