「IT、ガジェットなど」カテゴリーアーカイブ

写経は難しい

Generative Design with p5.js - [p5.js版ジェネラティブデザイン] ―ウェブでのクリエイティブ・コーディングProcessingの姉妹編というか、派生形のp5.jsでもスクリプトを書いてみたりしているが、練習のためのコードの書き写し(俗にプログラミング界隈で「写経」と称される)で、こんなに書き間違うものかと思うくらいミスが出る(苦笑)。参考書としては、邦語のp5.js本としては現在事実上一択のGenerative Design with p5.js – [p5.js版ジェネラティブデザイン] ―ウェブでのクリエイティブ・コーディング』(ベネディクト・グロスほか著、深津貴之訳、ビー・エヌ・エヌ新社、2018)を使っているのだけれど、これはプログラムで描かれる図柄がなかなかに美しい秀逸な本。とはいえダウンロードできるソースコードを見ると、章を追うごとに複雑になるのは当然として、徐々にどこか力業っぽくコードをぶん回す感じになってくる。そのため写経するのは苦行をともなうようになる。単なるスペルミスのほか、細かいところの理解不足によるミスなども頻発するが、ミスを誘発しやすい要因の一つに、長すぎる変数名その他が反復されるという点もありそうだ。そりゃコードを読むだけならそれほど問題にならないだろうし、日常語的な長い変数名は可読性という点でわかりやすくなるのだろうけれど、打ち込むとなると途端に苦行と化す(笑)。分野は違うとはいえ、写字生の苦労が偲ばれるのは確かだ。一方で、文字や画像を基本単位(ピクセルとか)にまで分割して再構成するという基本的な発想(アリストテレス的だ)は大いに参考になるところではある。

書き換えられた聖書 (ちくま学芸文庫)そうした書き写しのミスの話にも関連するが、このところ見ていたのがバート・D・アーマン『書き換えられた聖書 (ちくま学芸文庫)』(松田和也訳、筑摩書房、2019)。これ、文庫化の元となった単行本『捏造された聖書』も購入したように思われるのだが、どこかに積まれて発見されず、文庫も改めて買いなおしたもの。個人的にはルネサンス以降の新約聖書を扱った3章以降が参考になる。聖書の「改ざん」の具体的な事例を挙げているあたりも、身につまされる話だったりもする。

紹介されている各種の逸話も興味深い。個人的にとりわけ印象に残ったのがエラスムス。西欧初の印刷版のギリシア語聖書は、スペインの枢機卿ヒメネスが発案した『コンプルトゥム版多国語対照聖書』になるはずだったが、その刊行の計画を知っていたエラスムスが、それに先んじて、ちゃっかり初の印刷版ギリシア語新約聖書を刊行してしまうというのだ。かなり急いだ雑な仕事だったようで、わずか一冊の写本に依拠していただけだというから驚く。そうまでして初の印刷本という誉れをかっさらってしまうあたり、エラスムスの人間臭さというか俗なところがかなり前面に出ているかのようで、そういう面からのエラスムス像というのは新鮮な気がする。

キネクト賛

何周もの周回遅れ(5年くらい遅れてる?)ながら、最近kinect v1を中古で購入し遊んでいる。言わずと知れたxbox 360用の深度センサー&モーションキャプチャデバイス。Processingやopenframeworks(oF)からも使えるということなので、今回購入してみた。実際に触れてみると、これがまたなかなか楽しい。

Mac用のProcessing 3で使うにはドライバなどは不要。ただしライブラリ(アドオン)としてSimpleOpenNIなどが必要になる。oFのほうでは、ofxOpenNIやofxKinectといったアドオンが必要。mac用のoFでは、ofxKinectはすでに標準で入っている。ただofxKinectは少し用途が限られている印象で、少し制約もあるようだ(スケルトンの追跡とかができない)。ofxOpenNIもインストールしてみたものの、コードをコンパイルしようとするとエラーが多々噴出する。macのXcode 11ではコンパイルできないし、qtcreatorでもダメ。というわけで、とりあえずoFではofxKinect、ProcessingではSimpleOpenNIを使うことに落ち着く。

ためしに、こちらの「simple-openniの覚え書き」を参考に、「こじ研」のチュートリアルでofxOpenNIでやっている近距離レーダーみたいなやつを、Processing + SimpleOpenNIで再現してみる。

sketch_radar

画像の深度を上から見た図、ということのようで、これはいろいろ応用できそうな気がする。四肢のトラッキングもできるようなので、たとえばバロックダンスの舞踏譜のような記録を取ったりとか(個人的にバロックダンスは踊れないけれど……)。活用の妄想が膨らむ(苦笑)。

このところの設定作業

2週間ほどブログも本読みもお休みして、とくに今週は各種の環境設定に明け暮れる。こういうのは久々だ。まず古いMacBook Airをchrome端末にすべくCloudReadyを入れる。これは簡単。で、それに付属するLinuxをオンにして、Visual Studio Code(VSC)などをインストールして使えるようにする。これも問題なし。で、ProcessingをVSCから行えるようにしてみた。これはすでにWin10の環境でやっていた作業なので、これまたとくに問題なく完了(メモ。こちらの記述を参考。ただし、tasks.jsonに指定するsketch=以下は、${workspaceRoot}ではなく${fileDirname}とかにする)。

さて、問題はここから。せっかくなので、もう一つのアート系プログラミングフレームワーク、openframeworks(oF)もインストールしてみようかと考えた。すでにWin10でVisual Studio版(メモ:なんとVSも2019版では正しく動かず、2017版にダウングレード)、macでqtcreator版(メモ:qtcreatorもoF最新版もダメで、こちらの記事にあるように、qtは4.6.1、oFは0.10.0にする必要あり)のインストールを果たしたので、次はLinux版に挑戦というわけだ。ところがこれでハマる。手順は公式サイトにあるとおり。ところが、cloudreadyに入っているLinux(debianベースのpenguinというもの)では、そもそもinstall_dependencies.shがエラーで止まる。ライブラリの依存関係が変だという表示がでる。問題がありそうなライブラリなどを手動インストールするなどいろいろ試すも、うまく動いてくれない。試しにと、win10環境のWSLで入れたpengwin環境(これもdebian派生のディストリビューション)でもインストールを試みるが、ほぼ同じエラーが出て中断してしまう。

そのWin10環境で、試しにWSLにubuntuを入れて、そちらでoFが入れられるかどうかを試すと、install_dependencies.shは通るものの、compileOF.shがエラーで止まってしまう。エラーで検索をかけたりするも、解決できず。それで試しに、今度はoFのwin10のコマンドライン版というのを入れてみる。msys2という環境を入れなくてはならず結構面倒なのだが、そちらでもoFコンパイルは当初はエラーが出たものの、エラーで検索かけたところmsys2シェルではなくmingw2シェルで行えばよいということがわかり(!)、それで難なくコンパイル成功。ちゃんとサンプルコードのコンパイルもできた。これは単純にうれしい(メモ:ちなみに普通のコマンドシェルでは、やはりエラーが出てダメ)。

そこでちょっと、WSLのubuntuでも別シェルにすればうまくいくんじゃないかと思いつき、zshを入れてみる。そのzshからなら、なんとoFのコンパイル成功。やった、と思いきや、サンプルについてはコンパイルまでできるものの、実行するとディスプレイ系のエラーでコアを吐いて終了してしまう。うーん……。というわけで、いろいろやったものの、今のところLinux系はまだうまく動いていない。こんなことしてないで、早くコードそのものを書きたいのだけれどなあ。全般的にoFはすでに古くなっている(2017年止まり?)のが気になった。

Processing礼賛

初めてのProcessing 第2版趣味のコーディングということで、pythonの機械学習ものやらC#のUnityやらいろいろ雑然とやっているけれど(笑)、最近はとりわけこれに凝っている。Processing。Alife系で刺激をもらったので、それに合った作業環境を探そうと思い、すぐに遭遇した。基本的にはjavaやpythonによるデジタルアート作成系のフレームワークという感じで、とっつきもよいし、作業のスタイルも好みに合っている。これまで個人的にjavaはあまり好きでない言語だったが、それは結局、周辺的な手続きが煩雑で、簡単な処理を簡単にかけないように思えたから。けれどもこのフレームワークなら、余計な手続きが不要で、実行したい処理をいきなり書くことができる印象。

というわけで、ネットに転がっているサンプルなども活用しつつ、とりわけ次の書籍でもって練習中。ダニエル・シフマン『初めてのProcessing 第2版』(尼岡利崇訳、オライリージャパン、2018)。個人的に、とりあえずは多少とも複雑なジェネラティブアートに取り組めるところまでもっていくことが目標。

雑感:WSL環境

世間的には連休初日だということもあり、とりあえずITがらみの雑文でお茶を濁そう。このところ実に久々に、OSのインストールから設定への流れを楽しんでいるところ。

2週間ほど前、古いiMac(2009モデル)にWindows10を入れるというのをやってみた。win10のディクスイメージをCD-ROMに焼き、そちらからブートしてインストール。古いMacOS(El Capitan)付属のBootcampユーティリティからドライバを拝借しそれらもインストール。時間はそれなりにかかったが、これで無事に古いiMacでWin10が立ち上がる。ただ、キーボードはMac仕様なので使いにくく、そのためネットで対処法を探し、レジストリなどを少々いじったりしてカスタマイズしたりした。久しぶりのインストール作業は面倒ではあったけれど、それなりに楽しい(笑)。

さらにその後、今度はWSL(Windows Subsystem for Linux)を有効にして、Windows環境にLinux環境をこしらえてみた。前に別のwinマシンのWSLにUbuntuを入れてみたことがあったので、今回は有償で出ていたPengwinパッケージ(Debianベース)とX410を入れてみた。合わせて3000円(期間限定?)なり。そちらもインストール自体は簡単だけれど、その後のカスタマイズではそれなりに時間がかかった。大きな問題はいくつかあり、そのうちの1つが日本語フォント導入後のgtk-3.0。メニューその他の表示(文字やアイコン)がとにかく大きすぎて、そのままでは使えない。けれどもどこで設定するのか探すのに手間取る。ホーム下の.configディレクトリから、gtk-3.0ディレクトリ下のsettings.iniでフォントは変更できるけれど、openboxディレクトリ内のrc.xmlも編集しないといけないことがわかるまで、ああでもないこうでもないと結構時間をロスした。

日本語入力も、fcitx-mozcの導入で入力自体はできるものの、GUIでのemacsはもとより、geditやleafpadといった軽量エディタでも、あるいはfirefoxでもインライン入力ができないという問題に遭遇。fcitxの設定で直るという情報はあちこちにあったのだけれど、何度やっても有効にならない。ところが昨日、何かの拍子にいきなりインライン入力ができるようになった(emacs以外)。なぜいきなり直ったのか不明。タイミングとしてはwindows用キーボードを別途使い始めてから直ったので、何かそのあたりに要因があった……のかしら???

残る大きな問題は二つ。一つは、Windows側でコピーしたものをXwindow側でペーストできない点。ターミナルでならできるので、ターミナルで開いたemacsとかなら問題ないが、できればGUIエディタなどでもWindows側からコピー&ペーストしたいところだ。もう一つは、Linux側に入れたVisual Stuido Code(やはり最初は表示が大きすぎたが、ユーザ設定でzoomを設定することで解決。これも設定箇所を見つけるのに手間取ったものの一つ)でのpythonの連携など。連休中にこのあたりはなんとかなるのかならないのか……。でもこういうのをいじくり続けるのは決して嫌いではない(笑)。