ファイルの読み書きと実生活

朝起きると、タオルケットだけでなく毛布がいるくらい気温が涼しくなっていた。日中にかけて気温が上がっていき30℃をやや上回ると、少し汗ばんできた。エアコンに頼らずとも過ごしやすい気候に変わってきた。ベランダの太陽電池と温度計センサーの組み合わせによる運用も引っ越してきたのが去年の8月からおよそ1年が経つ。定期的にベランダの温度と湿度を計っていてそれを継続することができた。ベランダの植物にも水をやっている。ベランダはあまり広くないので、今ある植物の鉢と種類はそのままに、なるべく手間が掛からないような組み合わせにしていきたい。多肉植物とオリーブの木が比較的水やりが少なくて済んでいるが、それでも毎日水をやる習慣が馴染んでいる。育てやすい品種を選んでいたつもりだったが、ベランダの気候に応じて育つペースが変わってきて、どれが合っているかは植えてみないと分からない性質もあった。

JAVAのプログラムではファイルとフォルダの操作を行った。テキストファイルを新たに作ってその中に文字列のデータを入れたり、テキストファイルにある文字列を読み取って行番号を追加したりした。参考書ではファイルパスがCドライブから始まる絶対パスに指定してあったが、プロジェクトファイルを起点にした相対パスにもできるようだ。どちらかというと記述が柔軟な後者のほうが使いやすかった。ファイルの場所はプロジェクトファイルと同じにしてあるが、場所は特に指定はないようだ。また、セーブデータのようにオブジェクトのデータをあるファイルに保存して、それを読み込むことで保存したオブジェクトを再現するというプログラムも試して見た。FileOutputStreamでデータを保存して、ObjectInputStreamでデータを読み取って再現する。保存されたデータのファイルをメモ帳で開いても、法則性は読み取れなかった。とはいえデータの受け渡しの仕組みを学ぶことができた。データのやり取りがエディタ内だけでなく、実際のファイルで再現されると、プログラムが具体的になってくる。テキストファイルへの書き込みはPHPのプログラムでwebサーバーにアップロードされたサーバーのフォルダの中でファイルの読み書きを行ったことがあった。JAVAの場合はそれが、パソコンのローカル環境の中のフォルダになっている。ともかくパソコンのソフトウェアのプログラムの仕組みを知ることで、今あるリソースでできることを見つけていこうと思う。またテキストファイルの中の行を一列ずつ読み込むプログラムなどもなにかに応用できればと考えている。

続きを読む ファイルの読み書きと実生活

バージョンアップへの対応の変遷

mineCraftのセーブデータは、savesフォルダにソートもされずに並んでいる、インターフェースも素朴で、当時macBookを使っていた時はmacOSがwindowsにくらべてファイル名のリネームがしやすく、リソースフォークというメモ帳でもなく、ファイル名を保持するための「._」から始まる隠しファイルがどのファイルにも付いている。windowsPCでファイルをZipなど圧縮されたフォルダには、リソースフォークが付かず開封したてで特に手を加えていないということが分かるようになっている。一たびmacOSで開封すれば、履歴のようなファイルが付く。そういった関係性の中で、macOSではテキストファイルや画像ファイルをリネームして、マウスのドラッグアンドドロップで整理することは、別にクリエイティブでない簡単な事務作業のはずが、妙に効果を発揮することがある。mineCraftのセーブデータも、コピーしてペーストすると、セーブデータをバックアップしながらゲームを進めることができる。もしやり直すときには、以前のセーブデータを持ってくれば足りる。この仕組みは、ファミコンやプレイステーションのようなコンシューマーゲームのメモリーカードやiTunesの音楽リストでは得られなかったリストだった。どちらもリソースフォークに変わるような、単純にはコピー&ペーストできないような加工が施されている。macBookとmacOSはそういったデータの中で、画像とテキストで一覧性を保持しながら、いかにして元のデータを見つけ出して、ユーザーが覚えやすいデータ配置や構成を作り出すかという作業をする醍醐味を与えてくれる。そういったなかでも僕はパソコンがそもそも自分で作ったものでなく、できるだけlinuxのように簡便なファイル構成にすることが望ましかった。Webデザイナー立った頃には、SOTAというユーザーがFFFTPというファイルアップローダーを作っていた。これがとてもシンプルで便利で、ホームページは画像とテキスト、関節にあたるプログラムで成り立っているが、それぞれをクライアントの要望に合わせて更新して、あとはレゴブロックのようにパーツをアップロードすれば組み立てられた。Webデザイナーというクライアントの要望でデータを雰囲気があり一覧しやすいメニューを作るということを業務にしている担当者でさえ、フリーソフトのFFFTPの一貫性と簡便さに魅了されて、それとそっくりなインターフェースに回帰していたというエピソードすらある。

続きを読む バージョンアップへの対応の変遷

球体の丸さと回転

参考書にあった設定でスザンヌというデフォルトのサルをレンダリングすると、耳などがポリゴンのかくかくでeeveeレンダーの設定を変えても、立体が丸みを帯びなかった。ちょっと気分転換に、Googleのキーワード検索によりblenderで卵をレンダリングするときに、必要なことというネタがあり、そこではモディファイアでポリゴンを一時的に細かくしていた。円に近い形の多角形を一時的に作る機能になる。円周率は最近の教科書では3.14…ではなく3になっている。そちらのほうが数学的には方程式をレゴブロックのように組み立てやすい。もしこれが3.14…だったらそれを暗記することでメモリを使ってしまい、それがなぜそうなっているか、またどう活用するかまでイメージしにくくなっている。ポリゴンは一度に詳細を作るよりは、シンプルなデフォルメを作った方が、概要が分かりやすい。とはいえマスコットのドロイド君の頭のドーム状のパーツが卵の殻のように滑らかになるところを見てみたかった。

球体のポリゴンが実現することで、円形のオブジェクトにピッタリのテクスチャ―があれば、限りなく球体に近い多面体としてレンダリングすることができるようになる。そこでNASAが公開している、地球儀の画像テクスチャーを活用することにした。地球の場合は、地軸が23.4度右手方向に傾いている。Y軸を値を設定する。90度を23.4度、66.6度に分ける不思議な比率になっている。実のところ傾きを左右逆にしてレンダリングしなおすことになった。地球儀の自転は、軸に沿った角度入力で再現されたが、惑星が太陽の周りを公転する様子は、パスに沿った動きで再現しようとしたが、地軸が傾いていると、円形が歪んだ形になるようで、そこで透明なオブジェクトと紐づけて中で地軸をずらして回転させると上手く公転が再現された。またパスに沿った動きのアニメーションの速度はなかなか調べても出てこなかったが、紙飛行機をパスに沿って動かすアニメーションで紙飛行機が飛行する速度を変えるプロパティと同じということが明らかになった。プログラムの素は言語で、母国語の英語の日常的な動きがカギになっていることがしばしばある。

続きを読む 球体の丸さと回転