序章——宇治山田駅で迎えた朝
窓の外に流れ込んでくる朝の光が、旅の期待を激しく胸の内で揺さぶる。三重県の伊勢神宮の門前町を歩く朝は、どこか神聖な空気を纏っていた。

まずは駅に降り立つ。 宇治山田駅——その名を耳にした時から、ずっと気になっていた。改札口を抜け、外観を初めて目の当たりにした瞬間、私は思わず息を呑んだ。優美な曲線が屋根を縁取り、朱と白のコントラストが朝の陽光を受けて息づいている。洋風と和風が織りなすこの意匠は、ただの駅舎ではなく、一つの芸術作品のようだった。駅前に足を止め、何枚も写真を撮ってしまう自分がいた。建築の美に心を奪われながらも、次第に胸の奥で別の熱が灯り始める。
——今日こそ、動くものを作る。
第一章——伊勢名物に目を奪われつつも、本題はここからだ

会場へと向かう道すがら、伊勢名物の色に心が躍った。赤福の褐色が艶めき、老舗の香ばしい香りが鼻腔をくすぐる。旅人の魂が、展示並ぶ店の前ですくなくもない時間を過ごしたのは、ここだけの話である。
けれど、私をここに呼び寄せた本当の目的は別にあった。 Node-RED × LINE Bot ハンズオン。 手元の開発環境には、かねてより温めていた計画があった。LINEに画像を投げ込むと、画像を解析してテキストを返す——そんな仕組みを、この手で完成させてみせるというのだ。旅情的因子と技術的愛が同時に焕いた、謂わば「TECH旅」ならぬ「旅TECH」。
第二章——Bearerの隙間の、分厚い壁
さて、コードエディターを開いて、流れを組んでいく。 Node-REDのフローを紡ぎ、LIFFの設定を整え、Webhookのエンドポイントを揃える。ようやく、画像を送ってOCR結果が返ってくるという、最低限のサイクルが繋がった。
——さあ、テストだ。
LINEのトーク画面に画像を貼り付け、送信。 ——動かない。 デバッグコンソールに表示されたのは、見慣れぬエラーだった。
UnidentifiedImageError
画像が壊れている? しかし、手元のファイルは確かに正常だ。何か原因が、手がかりが掴めないまま一分が過ぎ、五分が過ぎ、十分が過ぎた。 結論。原因を探るためのポイントで疲れ果てかけた頃、ふと、気が付いた。
「Bearer」の後に、半角スペースが入っていなかった。
Authorization: Bearer[ここ]eyJhbGciOi...
たったこれだけのことが、画像データを含むリクエストのボディを破壊し、サーバーサイドで画像を識別できなくしていたのだ。半角スペース一個分の距離が、これほどまでに大きな壁となるとは。情けない同時に、ウェブエンジニア三年目の自分に苦笑いが漏れた。
修正。デプロイ。もう一度、画像を送信する。
——文字が弾けるように返ってきた。
読み取り成功的。テキストが、LINEを通じて返ってくる。
その瞬間、現場で自然に声が漏れた。
「来た——!」
第三章——NDLOCR-Lite、国会図書館の叡智がCodespacesで動く
仕組みの核に据えたのは、 国立国会図書館が公開している 「NDLOCR-Lite」だ。 Codespacesのターミナルで、初めてこのOCRエンジンを動かした時の感動は、今も覚えている。
縦書きの新聞切り抜きを読み取らせてみると——。
めっちゃ美しい。
明朝体の繊細な抑揚まで読み取ってくれるその精度に、私は無言の感嘆を禁じ得なかった。古い書物の中に埋もれた文字が、スクリーンの中で蘇る。その様子はまるで、眠っていた知恵が目覚めるかのようだった。
ただし、一つだけ愛嬌のある誤字も。
検出結果の中に混じっていた一節。
「ニンニク」→「ニソニク」
思わず笑いが漏れた。これは誤りではない。むしろ、愛おしいバグだと感じていた自分がいた。精度極高のOCRにおいても、こういった文字の近似識別は難しいのだろう。完全無欠よりも、こうして人に微笑ませる誤字の方が、却って温かい気がした。
それがローカルで動くという点が、また凄かった。
クラウドのAPIを待たず、自分の目で、自分の環境の中で、この精度が揮える。便携性と機動力——この組み合わせの可能性を、強く認識した瞬間だった。

第四章——技術と旅情、二つの情緒が溶け合うところで

ハンズオンの終わりの方、資料を閉じて窓の外を見た。 宇治山田駅の赤い瓦が夕日に照らされ、上午のそれとはまた違う表情を見せている。技術の谷を歩いた後の満足感。旅先で得た、非日常の余韻。その二つを引き算してみると、どちらかが勝っているというより、互いに応じ合って深まっているような手応えがあった。
LINE Botという「呼び水」を通じて、NDLOCR-Liteという「湖」が手元にあった。呼び水と湖。ウェブフックとローカルOCR。そして、旅先の景色と、開発者としての知的な刺激。
すべてが、細かな管道で繋がっていた。
終章——すべての始まりは、一つの半角スペースから
こうして、伊勢の一日が静かに幕を閉じた。 けれど、この日作った仕組みは、まだ動き始めている。LINEに画像を送るたびに、NDLOCR-Liteが文字を引き出し、それが伊勢の空の下で眠る知恵の残滓のように、私の手元にやってくる。
そして今、こうしてブログを書きながら、私は思う。
技術の楽しさとは、こういうところにあるのだ、と。
数時間前の自分がBearer の後に潜んでいた小さな空白に気が付かなかったことを思えば、今のこの感動も、少しだけ大きく感じられる。
来年もまた、こうして技術と旅が交叉する場所を探してみよう。 そのたびに、宇治山田駅のあの屋根を思い出すのだろう。
使用した技術:Node-RED / LINE Bot / NDLOCR-Lite / GitHub Codespaces