マインドル本文・3rdヒロ子氏のパート・第六話が完了。
やった! やったよぉー! 完了だよーぅ!
長かったー。長かったよーぉ。
こんなに長いなんて知りませんでした。
あなた知ってました? さては知ってましたね?
知っていながら密かに私を笑ってましたね? イジワル!
前回ここに書いたときには、六話と七話は前後編なので実質的に半話分だから短い、
みたいなことを言ってましたけど、とんだ大嘘でしたね。このウソツキ!
それにしてもこんなに長くなるなんて全くの予想外です。
原稿用紙換算で約380枚。最近の原稿用紙って一枚あたりの文字数が少ないんですか?
分量だけで言うと、今までで一番の大長編ではありませんか。
どうしてこうなったのでしょう? おかしいなぁ。おかしいなぁ。
出来上がった直後に全体を見直すために最初から目を通してみたのですが、
そんなに長いという感じがしないのです。
ということは、つまり、あれですね。文字数を数えるツールが壊れてるってことですね。なるほど。
最近流行りの UTF-8 は一文字が 3byte だったり 4byte だったりしますからね。ツールを作る人も大変です。
作業してるときも、あんまり長くならないようにと思って、
できるだけあっさりとした言葉遣いで突っ走るようにも心がけたんですよ?
いずれそれを読むことになるあなたの貴重なお時間を浪費させないようにという心配りです。愛ゆえに。
それなのにこんなに長くなってしまうなんて。愛は無力なのか。
あんまり長いと、読む人が大変なんじゃないかと心配です。
こんなに長いものを一体誰が読むのか? 仏が読みます。そっか。じゃあ問題ないですね。
長さはさておき、内容の方はですね、
予想外に長くなったことをはるかに上回るぐらいに予想外に最高のものが出てきましたよ。
いつも以上に素晴らしい。今までで一番素晴らしい。
実はですね、今回のお話がどんなお話なのか、よくわかってなかったのですよ。
詳細設計の段階では、そんなに重要なパートだとは思ってませんでした。
むしろ、単に後編へのつなぎ、ぐらいの、あんまり重要じゃないパートなのかな、とさえ思っていた。
なので実際に作業を進めてみて、びっくりです。こうなったら心臓を口から飛ばさざるを得ません。あなたに受け止めてもらいます。覚悟せよ。
なんだかね、すごく重大なパートでした。
これまでに作業してきた 1stおよび 2ndヒロ子氏のルートをも含めて、
全ては今回のパートのための準備だったのではないかとさえ思えるほどです。
それまでは雑多に流れていた個々の疑問がここで一本のロジックにつながった。なるほど、こういうことだったのか!
そうですね。ロジックとしては、ここで一通り出揃ったような気がします。
後はおそらく、ここで出揃ったロジックを実践していくような内容になるのだと思います。
次の七話はまさにそういう内容です。その後の後編も。
ああ、楽しみ。めっちゃ楽しみ。死ぬほど楽しみ。いっそ死んでしまおうかな。
さて、ほんの少しだけ疲れました。
ほんの少しだけ休みたいな。ほんの少しだけゆっくり眠りたい。3億年ぐらい。
化石になってゆっくり眠りたい。
あれ? 化石になって眠るのではなくて、眠っているうちに化石になるのではないですか?
本当ですね。どっちなのでしょう? 一体どっちなのでしょう! これは大問題ですよ。
この大問題を解決しない限り、もはや1ミリの身動きも不可能!
ぜひともじっくり考えたい。3億年ぐらい。
あ、これは私とあなたとの間だけの秘密なのですが、
その他にもほんの少しだけ進捗事項があるのですよー。
Linux環境でマインドルのα版のソースがビルドできました。
えっ? マジですか? それってメデタイじゃん! ウヒョー!
そうなんです。とてもメデタイことですねー。ねー。
今までも成果物は Wine経由で動くことは動いていたのですが、やはりソースがビルドできる方がよいですね。
これで心置きなく Linux環境で作業を続けることができます。
懸念事項だった日本語の文字の表示もバッチリです。
ところで "バッチリ" って何語なのですか? あなたの辞書に "バッチリ" という単語は登録されていますか?
それはさておき、ソースをそれほど修正することなくビルドが通るというのは SFML のおかげさまさまですね。
クロスプラットフォームとはこういうことだァー! ドカーン! DirectX とは違うのですね DirectX とは。
実にありがたい限りです。このライブラリの性能だということを忘れてはなりません。
日本語の文字を表示するためのポイントは、やはり文字コードですね。
SFML の内部で使われている文字列型 sf::String は UTF-32 でデータを持っているようです。
残念ながら自動的には変換してくれないので、無造作に代入すると見事に文字化けするわけですが、
理屈がわかればどうということはありませんね。元のデータが何であれ、UTF-32に変換してあげればよい。
お茶の子さいさいとはまさにこのことであります。
と、というほど安直な話では実はなくて、実装するのは結構ややこしい話だったりするのですが、
要点としては、こういうことですね。
・元のテキストデータを UTF-8 にしておく。
・UTF-8 → UTF-32 の変換処理をネットで調べながら頑張って実装する。
・UTF32に変換してから sf::String に入れる。
あれ? こうして書いてみると、思うことが一つ。
最初からテキストデータを UTF-32 で作っておけばいいんじゃないの?
と、思ったのですが、手元にあるテキストエディタではエンコーディングの選択肢の中に "UTF-32" がない。なぜなんだ!
なんか私が勘違いしているのでしょうか?
"UTF-32でテキストファイルを保存する" っていう話自体をあんまり聞かない気がします。
そもそも UTF-32 って何なんですか? 現代の神の名ですか? へそくりの隠し場所ですか?
私には見えるぞ。"UTF-32" と口にするたびにキサマの顔色が悪くなっていくのが!
文字コードまわりって面倒くさいですね。
プログラミングにとって本質的な話ではないと思うのですが、しかし、どうしてもついて回る問題です。
あんまり深く考えたくない。文字コードのことなんかのために時間やエネルギーをロスしたくない。
そんなことに時間をとられるより、私はあなたを愛することに人生を使いたいのです。
だから結局、
・テキストファイルは深く考えずに UTF-8 で保存。
・SFML で使うときには 深く考えずに UTF-32 に内部で変換。
ということにして、勢いでそのための関数を書いて、あとはもう、意識の外側に追いやってしまう、ということになってしまう。
こんなことでは本当はダメなのかもしれませんね。罪を犯しているのかもしれませんね。
いえいえ、そんなことはないですよ。あなたは赦されてますよ。
汝、文字コードのために生きるなかれ。
ですよね、ですよね、ですよねー。
そうですとも。
文字コードとは何のためにあるのか?
時間をロスするためにあるのではない。うんちくを垂れるためにあるのでもない。
人が幸せになるためにあるのです。
あくまでも人間が中心です。
ならば迷うことはない。高らかに愛を謳い上げよう。UTF-8で。
さて、他にもいろんなことがあったのですが、
いろんなことがありすぎて、胸がいっぱいで言葉になりません。
人の一生は全てを心に留めておくには長すぎる。
だから大事なことを一つだけ。
今日もあなたが幸せでありますように。
|