「無限」に伸縮する目盛り〜CustomRenderObjectの話 0

2023/08/10に公開

The History of Everythingとの出会い

まずは、そもそも話。
私は年表のServiceを作っている。
分野横断的、総合的、Big Bangから終わりなき「今」まで、
「できあがったデータベースの提供」ではなく、userが作り上げる方式、
年表に特化したWikipedia、だと豪語している。
日本語名は「四次元年表」だが、世界展開を目指しているので英語の名称をつけたかった。

The History of Everything・・・いいんじゃない? 
と思ったら、既にあった・・・とてもチャーミングな子ども向け歴史アプリだ。
Everything、と名乗るには規模が小さいだろうと苦言を呈することもできなくはないが、
Big Bangから現代まで、宇宙、生命の誕生、恐竜、人間、文化、戦争、パンデミック・・・
小さいながらも、分野横断的で、私の野望をぎゅっと凝縮したようなアプリだ。

https://medium.com/rive/the-history-of-everything-981d989e1b45

とてもチャーミングな子ども向け・・・
おしゃれなデザインで、たくさんのアニメーションが動いている。

だけれど、私の目を釘付けにしたのは、そのかわいいアニメーションではなく、
「無限」に伸縮する時間軸だった。

なぜ「四次元」か

既存の年表は基本、一次元だ。
時が一次元的に流れていく、過去から未来へと。
若干の広がりを表現するために、二次元的に表示したものもある。
例えばイギリス史年表とフランス史年表を並べて、
相互の関係、交流、影響や闘争、を表すこともできる。
バロック時代の、音楽と建築と絵画の相互関連を示すとか。
だけれど、私が望んでいるのは、もう少し高次な表現だ。
二次元の世界地図に年表を立てる・・・これを三次元年表とする。
三次元の地球儀に年表を立てる・・・
三次元空間+時間、これが究極の目標、「四次元年表」だ。
しかも、検索によって表示を変えることができる。
生命の世界展開、文化の相互関連、技術の伝搬、戦争の分布、宇宙開発まで
それらを時間的、空間的に視覚化する。
子どもの時に夢見た、紙の年表や、紙の地図では、絶対に到達できない世界を、
今の技術なら実現できる!

私が還暦を過ぎてアプリ開発の世界に飛び込んだ理由は、ただこれ一つに尽きる。

時間的、空間的に「正しい」距離

「四次元年表」に欠かせない要素は「時間的・空間的距離の正しさ」だ。

「紙幅に限りがある」という言葉の意味を、今の若い人たちは理解するだろうか。
紙という媒体には「限界」がある。
1ページの面積、一冊にまとめたときのページ数・・・
だからできるだけムダは省きたい。
何か大きな事件が起こった年は何行か費やして書くが、
次の大きな事件まで、2年あっても、5年あっても、もしかしたら100年開いても
空白はムダだからそこは知らぬ顔で飛ばしてしまう。
すると例えば戦史年表では、人類はずっと戦争をし続けていたように見える。
平和な時代という空白を無視してしまうからだ。
しかも、この地域とあの地域の戦争を一列に表示したりする。
だからいつも世界中が戦争しているように見える。
世界の広がりもまた、あまりにムダの多い情報だ。

だけれど、今、私たちは三次元空間を、文字どおり掌中に展開することができる。
その中に、ムダをおそれずに、事実を刻んでいくことができる。
その事象がどこで起こったのか、
この事象とあの事象は立て続けに起こったのか、
それとも、長い歳月を隔てて起こったのか、
人類がアフリカを出てアメリカ大陸に到達しました、と
コロナウィルスが世界に蔓延しました、の
時間的なスケールはどう違っているか・・・。
それらを正しく表現する技術が、今、ここにある。

だから「無限」に伸縮する目盛り

The History of Everythingに出会う前は、Unityを勉強していた。
いや、もちろん、今でもそうだ。
「四次元年表」には三次元空間が不可欠だ。
The History of Everythingの目盛りは一次元的にしか展開しない。
だけれども、少なくとも、距離の正しさは表現できる。
何せ、昨日と今日の尺度から、138億年前のBig Bangまで、シームレスに伸縮する。

絶対にこの技術がほしい。
制作者に手紙を書いて聞こうかしら、・・・もちろん今の時代、メール、だろうけれど。
よく見ると、これはFlutterでできている!
なんという幸運、私が使っている言語だ!
よく探すと、GitHubにcodeがある!
手紙を書く手間が省けた!

そう思ったとき、私はだいぶ甘かったのだ。
この技術はRender Objectで設定されている。
初心者に優しい、Everything is a Widget ! ではない。
codeさえ手に入ればすぐにも実装できる、という類いのものではなかった。
でも、ともかく、私はこの技術がほしい。

だからともかく飛び込んだ。
これから書くのは、アマチュア開発者が「無限伸縮目盛り」を手に入れるまでの過程です。

https://zenn.dev/flutteruniv_dev/articles/e108c3c0f8751b

Flutter大学

Discussion