10 ドローン
プログラムの勉強を始めてから5日ほど経った。
ようやく開発環境を整えることができたので、実験も兼ねてテストプログラムを何か作ってみるか。
まずは、プログラマならお馴染みの世界一有名なプログラム【ハロー・ワールド】の作成だ。
《なんですか、それ?》
まあ、ようはハローワールドって表示するだけの超初心者用のプログラムだな。プログラムの入門書には必ず最初に書かれているためプログラマなら知らない人はいないってだけなんだけどね。
プログラムを入力し、実行イメージを作成し、実行する。
すると、目の前に【ハロー、ワールド】と表示され、しばらくしたら消えた。
動いた。成功だ。
《え、それだけですか? 表示するだけなら私にもできますけど》
まあ、それだけだ。新しいプログラム言語を使い始める時の儀式みたいな物だから気にしないでくれ。
他にも実験的に何個かプログラムを作成してみる。
目で見ている物の名前を表示するプログラム。実行し目を動かすと【椅子】【ベッド】【窓】【タオル】など次々に目の前に表示されていくというような鬱陶しいプログラム。
聞こえている音を色と波形で表示するプログラム。雑音というか環境音が常にあるので、目の前がいろんな色に絶えず変わるので目がチカチカしそうだ。
手で触ったものの温度を表示するプログラム。温度が数字で表示されるだけで地味すぎる。
など、五感を入力源としてプログラムに引き渡すことも可能であることを確認できた。
うまくいった。
まあ、この程度の機能ならルナにより実現できるので、プログラムの練習という以外の意味は無い。
あと、開発環境を経由せずに実行するにはパッケージ化が必要だが、テストプログラムなのでパッケージ化は行っていない。
開発環境上のシミュレーションモードや、デバッグモードで動作させるだけならパッケージ化は必要ないのだ。なら、開発環境上で常に動かせばいいのではとも思えるが、開発環境をいちいち起動する手間があり、開発環境自体が目の前にいろいろと表示されたり、動作スピードが遅かったりとデメリットだらけなので、常用には耐えれない。あくまでも開発用だ。
いろいろ作れるようになったのだが、ここに至るまでが前途多難だった。
まず、開発環境の構築が非常に複雑で、マニュアルをきちん読み進めて行かないと全く動かすことができないような構築手順だった。
また、プログラムの仕様や構成を理解しようにも、サンプルプログラムも少なく、解説も非常に不親切で難解だった。
プログラムを書いた後の実行イメージの作成や、実際に実行するのも間違いやすい手順となっており、途中の手順を間違うと全く動作しないようだ。
この複雑で間違いやすい仕様は、プログラム制作を理解できない者には絶対に使用できないようにわざと罠を仕掛けてあるのだろう。
その証拠に、この難解なシステムに対する理解をクリアした以降、応用編のマニュアルが参照できるようになったのだ。その応用編では、それまでの難解さから一転して、簡単にプログラム作成ができるよう便利な仕組みがいろいろと用意されていた。また、詳細で分かりやすい解説や、多くのサンプルプログラムも参照できるようになっていた。
テストプログラムは概ね良好なので、実践に移ろう。
これまで環境設定していた間にいろいろなアイデアが湧いて来ており、作ってみたいものが既に幾つか有るのだ。
まずは、物体生成機能を作ってみよう。
目標動作としては、目の前に立体図を表示し、希望の形に変形させる。材質や色を指定する。設計図に変換し、設計図を元に物体を生成する。
と、まあこんな感じのものだ。
初めての実践ということで不慣れなこともあるが、何れにしろ、一日、二日で出来るものでは無い。
毎晩取り組み、数日間かけてなんとか完成させた。
ついに物体生成機能をパッケージ化する。パッケージ化にはEP最大容量300が必要だ。
物体をつくるためには作業用の異空間が必要だったが、ルナが管理している異空間収納庫を共用で使用することができるようだ。
手始めにサイコロでも作ってみるか。形が簡単というだけでサイコロに意味は無い。
材料は鉄にする。バイト中にゴブリンを倒した時の短剣を溶かして使おう。
ルナ、この短剣を鉄の塊にできるか?
《その短剣を取り込むには異空間収納の大きさが足りませんね。EP最大容量を330使って拡張する必要があります》
いい機会なので木刀が入る大きさまで拡張することにした。
EP最大容量790分を使って1mまで拡張するようルナに頼み、引き続き短剣を取り込んでもらう。
《2kgほどの鉄の塊ができました》
物体生成機能に使用可能材料として登録する。
準備が整ったところで、まずは目標の1cm角のサイコロを作ることにしよう。
最初の手順として、設計図を作る必要がある。
立方体の設計図はテンプレートがあるのでロードする。
立体図を目の前に表示し、手でクルクル回して全面を確認することができる。
その表示された立体図に対して、手で触るようにして角を丸めていく。材質は鉄を指定し、表面はつや消し加工とする。
角の丸めが終わったら表面に1から6までの目となる窪みを作っていく。
形が決まったら、最後に設計図に変換し、その設計図を物体生成機能に入力する。
すると、数秒後に「チンッ」と音が頭の中で鳴る。
出来上がったようなので、目の前に取り出してみる。
出来上がったものを見ると、角の丸め具合いや、目の窪ませ具合いがあまりにも適当で、歪なサイコロが出来上がった。
まあ、設計図に忠実に作られたのだろうけど。
設計図を手直しして再チャレンジする。
何回かの思考錯誤で、まあこんなもんかなという物が出来上がった。だが、いまいちで納得できる物ではない。
ん~。立体図を正確に操作するのは無理があるのか。かと言って設計図を直接いじるのは訳分からんし。
《アース、私が立体図を操作しましょうか? 操作方法はだいたい把握しましたよ》
おおー、その手があったか。
ルナなら正確に操作できるはずだ。再度チェレンジすべく、立体図を表示する。
ルナ、細かく指示していけばいいか?
《えっと、イメージを思い浮かべてくれればそれを読み取ってある程度再現させますので、その後に指示してください》
サイコロのイメージを思い浮かべる。
すると、表示されていた歪なサイコロが綺麗なサイコロに変わった。
その立体図を確認し、目の穴をもう少し深くするよう指示する。
ルナは、その指示と俺の思い浮かべたイメージから総合判断して、完璧なサイコロを表示してみせた。
設計図に変換し、その設計図を物体生成機能に入力する。
数秒で出来上がるので、取り出す。
できたものを見ると、そこには俺の思い描いたのと寸分違わない完璧に再現された鉄のサイコロが有った。
ルナ、完璧だ。
《そんな、私なんてまだまだですよ》
……
えっと。
次に、中が空洞のサイコロを作ってみる。周りの厚さを0.2mmにするようルナに指示して作成。
これも完璧だ。見た目は先程のサイコロと比べてみても全く同じだが、すごく軽い。
1000エルの銀貨を真似て鉄で作ってみた。目の前に実物があるので立体図の手直しも必要なく、あっと言う間に作れた。
重さや色合いが全く違うので、銀貨と間違うことは無いだろうが、形やデザインは全く同じだ。鉄貨とでも言うべきか。
その鉄貨を見ながら、単純なものなら何でも作れそうだなと思った。
その後、鉄貨は犯罪の感じがしたのでルナに渡しすぐに鉄の塊に戻した。
軽い方のサイコロを掌に載せて眺めていると、ふと思ったことがある。
このサイコロを自在に動かせ無いだろうか? いや、別にイカサマに使おうということでは無いのでサイコロじゃ無くてもいいのだが、とにかく物体を自在に動かすことができないだろうか?
と言うことで、今度は物体操作機能の作成を目指す。
他に作りたい機能もあるが、これを先に作りたいという衝動に駆られた。できるかどうかは予想もできない。
目指すは、遠隔操作で動くドローンだ。
その日から数日かけて一応完成した。正確に言うと、当初の思惑通りには出来なかったが、副産物的に同様の事ができるものを作成した。
まず、物を動かすための最低条件として、その物体と俺とをリンクする必要があった。逆に言うとリンクすれば動かせるということだ。リンクするとは、俺とその物体の間をエナを絶えず行き来させることだ。行き来させるには俺がそれに触れていなければならないという制約がある。
これは、簡単に言うと俺の体の一部にすると言うことだ。俺の手や足、目や口など、これらも全てリンクされているため動かすことが出来ている。例えば、手首から先が切断されたとする。すると、手はリンクが切れるため動かすことはできなくなる。切断された手を元の位置に戻すとリンクが復活し、動かすことができるようになる。と言うことだ。
このリンクして動かすというのは、俺の体の基本的な機能ということもあり、開発要素はほとんど無かった。
リンクについては、木刀や衣服にエナを日常的に流すなど、応用的な使い方も既に行っている。
開発したのは、リンクしたものを動かすための操縦部分だけだ。
物体にエナを流してリンクした後、操縦内容に従い動かすことが可能となった。
例えば、掌に乗せたサイコロはコロコロ動き、手に持った紐などは蛇のようにぐにゃぐにゃ動く。
しかし、リンクが切れると制御できないという欠点が残る。俺から離れるとリンクが切れてしまうため、遠隔での操作はできないのだ。
ただ、複雑な動きをさせるには、それに見合った複雑な入力が必要となるが、そんな複雑な入力をその場ですぐさま行える訳も無い。指などを見ていると自在に動かすことができているが、その裏ではどのような複雑なプログラムが組まれているのだろうか。
これらがどうしても解決できないことから、ドローンの開発は諦めざるを得なかった。
と、諦めようとしていたのだが、アイデアがぽっと湧いた。
3次元的に考えるから無理なのであって、4次元的に考えればいいのでは?
4次元的に考えると有ったのだ、離れていてもリンクする方法が。異空間を経由してリンクさせるのだ。異空間であれば3次元的な距離は関係無いはず。
数日掛けて、異空間でもリンクを維持できるよう改良した。
ただ、物体を動かすための複雑な入力が必要な事に加えて、異空間の座標計算というさらに複雑な入力も必要になってしまった。
こうなると、はっきり言って俺には制御不可能だ。
しかし、どんな複雑な入力だろうと、ルナならば余裕で可能だ。
結局のところ、ルナ専用機能として完成させたのだ。
リンクするときに異空間収納庫に取り込む必要があるが、一度リンクしてしまえば物体が遠くに行ってもリンクを維持することが可能だ。
異空間を移動させて、こちらの世界にその物体を現すことで、瞬間移動させることも可能。移動といっても異空間上での座標を変えるだけなので、物理的には離れているが異空間的には俺に触れているのだ。移動先は壁の中など物質密度の高い場所は無理で、基本的には周りが空気程度の低密度の場所に限られる。そこまでの空間干渉はできないということだ。
連続的に座標を変えることで飛んでいるようにも見せられる。
まあ、俺には動かせないのだが、ルナが動かせるのならば全く問題は無い。
なお、異空間を通してリンクしている最中は異空間を開きっぱなしにする必要が有り、EPを消費し続けることになるのだが、物体と異空間は点で繋がっているだけなので、開く穴は小さくEP消費も極僅のため問題は無さそうだ。
こうして、ドローンを動かすための物体操作機能は完成した。
ルナが操るドローン本体として、3mmほどのてんとう虫を作成する。材料は鉄だ。
鞘翅部分はちゃんと開閉可能だ。開くと内側の翅が飛び出し、閉じると内側の翅はきちんと収納される。
翅の開閉と、歩く動作は基本動作として登録しておいた。
色は赤色で、ナナホシテントウだ。歩いている様子を近くで見ても本物としか思えない出来栄えだ。まあ、本物のてんとう虫も元々作り物に見えるような姿なので、見たり触ったりする程度なら見破られることはまず無いだろう。翅や足などの各部の部品は全体的に薄く細い作りで、強度面での心配があるがエナを流すことで少しは強化されるようだ。
このてんとう虫がルナ専用のドローンだ。
また、ルナの持っているセンサーなども使用可能となるため、てんとう虫の目の前の映像や周りの音を取り込むことができる。
出来上がったてんとう虫を試しに、床を歩かせたり、部屋の中を飛んでいるように移動させたりして、てんとう虫からの映像を目の前に映し出してみる。
なかなか良い。
ルナ? てんとう虫を誕生の草原に移動するのは可能か? かなり遠いが。
《可能です。距離は関係無いですね》
試験飛行も兼ねて、誕生の草原にてんとう虫を移動させ様子を映し出して貰った。
おおー、懐かしい景色が目の前に表示された。夜なので暗視機能によるグレー表示だ。それでも綺麗に表示できている。草原も小屋も前と変わってないようだ。
《素晴らしい物を作りましたね》
ルナ、スライムに食われるなよ。
《取り込まれそうになっても鉄なので吐き出されますよ。まあ、それ以前に回収すれば済む話ですけどね》
なお、行ったことの無い場所は座標が分からないため移動できないらしい。その場合は、行ったことのある場所から映像を確認しながらの移動となるが、座標計算が複雑になるため人が歩く程度以下の移動速度しか出せないとこと。この辺は今後の課題だな。
十分使えそうなものが出来上がった。その内、役立つ時がきっと来るだろう。
次は、高性能ソナー機能を制作する。
ルナが元々もっている探知も優秀ではあるが、いくつか欠点がある。
最大の欠点は、物理的な障害を超えられないことだ。例えば、壁の後ろや、大きな木の後ろはうまく探知できないということだ。
これでは、物陰にいる魔物に不意打ちされたり、魔物を探す時に見逃したりということが起こる。
また、水中や地中も探知できないため、そこからの攻撃も予測できないことになる。
さらに、長距離の探知はできず、熱源探知なども併用しているらしいが、林などではせいぜい300mほどだと言う。
それらの欠点を無くした高性能ソナーを作った。
高性能ソナーの基本的な動作としては、周りを立体的にスキャンし、そのスキャンした情報を解析するというものだ。このスキャンは、エナが存在する世界、つまりは、この世界とは異なる系からのアプローチとなるため、物理的な障害は関係無く行える。
壁の後ろだろうが、木の後ろだろうが、地中だろうが、水中だろうがどこでもスキャンが可能だ。
ただし、スキャンした結果として得られる情報が余りにも多過ぎるので、そこから必要な情報だけを選別するなど俺には到底できない。よって、これもルナに使用してもらうことで解決した。
また、スキャンを使用するとEPを消費し、範囲が広くなればなるほどEPの消費も加速度的に大きくなる。それに、範囲内のサンプリング点数が多いほどEPの消費量も大きくなる。
そこで、最高密度でのスキャンを完全スキャン、探索用の低密度なスキャンをソナーと呼ぶこととし、魔物を探すなどの用途ではソナーを使うことにする。
ソナーであれば、半径300m程の魔物探索をEPを気にせず行えるため、気軽に使えると言える。
合金生成機能の制作。
これは簡単だった。サンプルプログラムが有ったので、使い易いように少し手を加えるだけで完成だ。
この合金生成機能と物体生成機能とを組み合わせて、ゴブリンの剣をリメイクしようと思う。
合金生成機能を実行すると、まずは一般的な合金の一覧がメニューに表示される。それぞれの合金について強度などの性質や、必要な鉱物などの素材も表示可能だ。
今日はゴブリンの剣のリメイクが目的なので、手持ちの素材で制作できるものだけを表示させる。
手持の素材といっても、使用可能な素材として設定してあるものにはゴブリンの剣やボロ服、それと、バイト中に仕留めたゴブリンが持っていた武器程度しかない。それでも剣や武器にはいろいろな物が混ざっている粗悪品だったようで、そのおかげで素材の種類は結構あるようだ。まあ、量は少ないので実用的では無いが。
さらに鉄をベースとしたものに絞り込んで表示させる。
その中から強度などを考慮し良さそうな合金を選ぶ。
鉄以外の素材の量が少ないため、結局は元のゴブリンの剣と同じ合金を選択することになる。ただ、均一な合金となるため元のゴブリンの剣と比べると性能は上がるようだ。
実行しゴブリンの剣を制作。
今までボコボコだった剣が新品になった。持ち手部分も新品だ。これなら誰に見せても、どこに出しても恥ずかしく無いだろう。
ただし、剣の形や持ち手部分の形は元々のが意外と気に入っているので変えていない。
実際にエナを流してみると、リメイク前と比べて遥かに流れ易くなっている。材質はほとんど変わっていないのだが、均一な合金となったことでエナが綺麗に流れるようになったようだ。
ついでに鞘もリメイクする。こちらは、元々この剣の形に合っておらずぶかぶかだったが、リメイクできちんと合ったものができた。
素材の配合を自分で調整することができる機能を合金生成機能に組み入れられれば選択肢は無限にできそうだ。
機能改善は今後行っていくことにしよう。
尤も、本格的な材質の変更には多くの種類の素材が必要だろうから、これからはいろいろな素材のサンプルを集めていくことにしよう。
§
今日、いよいよ壁が完成する。
結局、当初の予想通り1ヶ月かかったことになる。
毎日重力機能と土機能を使ったおかげで機能レベルも上がった。最初25cmの直線的な土しか抜けなかったのだが、今では微妙に曲がった50cmの土を抜けるようになり作業効率も上がっていた。
この微妙な湾曲は、ルナが板の湾曲を読み取り設計図にしてくれたものだ。それを土操作機能に入力することで実現している。
ゴブリンはと言うと、2~3日毎に現れ合計20体討伐した。
戦利品として手に入れたゴブリンの魔石も武器も売ることは無かった。武器は全て素材用として異空間収納庫に入れてある。
この一ヶ月、昼の食事中などにドーケンさんにいろいろな話を聞くことができた。年の功というのもあるだろうが、バラエティに飛んだ人生を送って来たようだ。
ドーケンさんは現在、産業ギルドに所属している。店は構えておらず、ギルドを経由して仕事を貰って生計を立てているらしい。それでも依頼が途切れることは無く忙しく働けているとのこと。
職業ギルドでは実績によるランク付けというものが有り、ドーケンさんは既に王宮に関わるような仕事もできるところまでになっているとのこと。良く分からないが結構凄い人なのかもしれない。
また、ドーケンさんは若いころハンターギルドに所属していたことがあるらしいが、ハンターを3年ほど続けたところで、建築業の方が性に合っていることに気づき早々に職業ギルドに鞍替えしたと言う。
ただ、ハンターギルドのことについては、自分の目で見て考え体験した方が楽しいからとの一点張りで何も教えてくれなかった。
午後もいつものペースで壁を作り続ける。
最後の1枚も設計通りの位置でピッタリと収まり、めでたく完成となった。
「終わったな。アース」
「完成しましたね。ドーケンさん」
その後、俺とドーケンさんは、これまでの事やこれからの事など雑談しながら後片付けを行った。
そうこうしている内に後片付けも終わる。
「アース。今日の晩飯はいっしょに一杯呑むか? まあ、打ち上げも兼ねてってことで」
「いいですねー。是非お願いします」
夕飯にはまだ早い時間なので、集合時間と場所を決めて別れた。
宿への帰り道、いつものように職業斡旋所に寄ってバイト代を受け取る。なんと51万2000エルもあった。
壁作りが予定していたよりもかなり早く終わったとのことで、50万エルの特別報酬を出してくれたとのこと。太っ腹なドーケンさんに感謝。
急に金持ちになった気分だ。
特別報酬分の50万エルは10万エル金貨5枚を現金で受け取ったが、身分証のサイフには入らないのでルナに渡しすぐさま異空間収納庫へ仕舞った。
ルナ、これでバイトも終了だし、そろそろ次の町に行くか。明後日にでも出発しよう。
《はい》
その後、宿で少しゆっくりした後、宿には今日の晩飯はいらないと断ってから出かける。まあ、直前に言っても宿賃が下がる訳では無いが、一応の礼儀だ。
待ち合わせの夕方5時に居酒屋に入る。
席に着くや否や酒を注文し、次に食べ物を適当に注文し終えたころには酒が出てくる。
酒と言えばまずはビールだ。これまでの働きを称えて乾杯する。
「アース、お疲れ!」
「お疲れ様でした」
「ドーケンさん、なんかすごい大金が入っていたんですが」
「まあ、正当な報酬だ。アースが来てくれてなかったら、今日の時点で予定の5分の1も終わってねーだろうし。本来なら時間も金もその報酬以上に掛かってるとこだ」
「じゃあ遠慮無く頂きますが、今日は俺がおごるってことでお願いしますよ」
「お、そうか。うれしいこと言ってくれるじゃないか」
焼き鳥や魚をつつきながら話をする。
ドーケンさんとこうしていっしょに晩飯を食べるのは今回が初めてってわけじゃ無い。このバイト中に休日が何回かあったのだが、休日の前の日はたいてこの居酒屋で食べて呑んでをしていた。
今日は、打ち上げも兼ねているので、いつもよりは特別ではあるが。
「そう言えば、アースは今後の振る舞いを決めたのか? ハンターになるって言ってたが」
「ええ、俺は町に行ってハンターギルドに入ろうと思っています。出発は明後日にしようかと」
「そうか、ハンターか。俺には成し遂げられなかったが、アースならきっといいハンターになれるだろうよ。次からアースに依頼する時はハンターギルドに依頼すればいいんだな。その時はまたよろしくな」
「はい」
「ドーケンさんは明日からどうするんですか?」
「取り敢えず、明日、王都の家に帰るさ」
そんな話しをしながら、2時間ほどで打ち上げもお開きとなった。
「アース、長い間ありがとな。ほんと助かったぜ。また何かあったらよろしくな」
「こちらこそありがとうございました」
「じゃあまたな、アース」
「ドーケンさんもお元気で」
次の日、町への出発に向けて準備をする。
アンナさんや、女将さんに明日の朝出発することを伝える。
職業斡旋所にも作業服を返すのを含めて出発のあいさつを行い、ほぼ毎日顔を合わせていた門番の人たちにもあいさつしておく。
出発に際し、小型のマジックバッグを購入。小型と言っても、内容量的には大型のスーツケース1個分くらいは十分入る。形は斜めがけするタイプだが、バッグ部分の厚みがあまり無いので一見タスキのようだ。
異空間収納庫があるのでバッグが無くても全く困らないのだが、出発するのに手ぶらってのも変だし、今後のことを思うと1つくらい持ってた方が良いだろうと考えた結果だ。
木刀と剣は異空間、下着やタオルなどは一応マジックバッグにいれた。
結局、この村は一ヶ月以上いたことになる。初めて人に会って、バイトして、ドーケンさんと話したり、いろいろな機能を制作したりとかなり充実した一ヶ月だったと思う。
一応、レベルを確認しておく。
レベル:24
EP:5562
町までは歩くと3日はかかる距離とのことだが、バスだと2時間も掛からず着くらしい。歩いて行ってもよかったのだが、珍しさもあり朝の定期バスに乗って行くことにした。全席指定で2000エルだ。まあ、今時歩いて行くような物好きはまず居ないようだが。
出発当日、アンナさんが見送ってくれるとのことで、バス乗り場までいっしょに歩いて行った。
10分ほど歩きバス乗り場に到着する。
「あの大きなバスがランスベル行きですよ」
周りにはマイクロバスも含めて数台が止まっているが、アンナさんが指さした先には一際大きなバスが止まっている。
バスは既に浮上していて、乗客が乗り込める状態で待機していた。
バスはガラスがふんだんに使われていて、見晴らしが良さそうだ。ガラスの材質は村の壁に使われているものと同じ硬化ガラスなのだろう。ガラス以外の部分は白一色で、流線型の斬新な形をしている。
バスの扉の前には石板があり、このバスに乗る際に身分証をかざす必要があるらしい。門番らしき人がチェックしている。これは、出門という意味と、犯罪防止のためだと言う。
バスの横でアンナさんとこれまでのことを話している内にバスが出発する時間になったので、アンナさんにお礼とお別れを言い、石板に身分証をかざしてランスベル行きのバスに乗り込んだ。
指定の席に座ると、すぐに定刻の7時となり、バスが動き出した。
外に見えるアンナさんに手を振り、アンナさんも俺に手を振って笑顔で見送ってくれた。
バスは、村の門を出て、町に向かって進み始めた。




