SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|

2005-02-15(Tue) 小論文を機械採点してみる

  深夜までヤボ文書を作成していたため、今日はお休み……のつもりだったが、明日(?)スラッシュドットジャパンで面白い記事を見つけたので、サカノボリ更新である。その記事とは小論文自動採点システムの開発というモノ。なんでも、入試問題の小論文なんかを自動採点するシステムだそうだ。

  バラしてしまうが、上記のヤボ文書とはいわゆる中途入社の自己PRの文書だったりする。そんなに肩にリキ入れまくりというわけではないのだが、ちょっと面白そうな仕事が見つかったんで、職務内容を聞いてホントに面白そうなら行ってみようかなぁ、というライト感覚で受けてみているのだ。採用担当者がコレ読んだら怒るかもしれんが……それ以前にオイラの歳でこんなフラフラした認識でいいだろうか……ま、いいや。

  ちなみに設問は2問。一昨日から今日にかけチマチマ文章をまとめ、明日(2月16日)の朝に印刷、昼には封書で送ってしまっており、上記記事を発見したのは午前中のため、自動採点システムを通して修正を繰り返したりはできなかった。まぁ、自動採点システムに気に入られるように文章を直すつもりもサラサラないのだが。

  残念なコトに、書いた文書をココで公開することはできないが(落ちたのが確定したら出すか!?)、評価結果を出すコトは問題ないだろう。以下は、設問1に対して自動採点システムを適用した結果、得られた評価である。

■修辞 2.7 ( 5 )
文が総じて(平均的に)少し長いです。
長すぎる文があります。
句(読点と読点の間、あるいは読点と句点の間)の長すぎる文があります。
句の中の文節の数が多すぎる文があります。
漢字がやや必要以上に使われているように見受けられます。
埋め込み文が全体の分量に比べて多いように見受けられます。
連用形や接続助詞の句の並びの多い文が、ややあるように見受けられます。
受動態の文が全体の分量に比べて多いように見受けられます。
■論理 2.0 ( 2 )
■内容 1.7 ( 3 )
質問文との関係がやや希薄であるように見受けられます。
■最終得点 6.4 ( 10 )

  むぅ、要約すると「文が長くて複雑」しかも「質問に答えとらん」という評価か。うぐぐぅ。長くて複雑な文を書きがちなのは自覚しているが、漢字も多いですか。がっくり。設問1に関しては結構うまく書けたと思ったのだがなぁ。とはいえ、論理には問題がないんですね。そうですか。んじゃ、設問2はどうかな。

■修辞 4.2 ( 5 ) 
文が総じて(平均的に)少し長いです。 
長すぎる文があります。 
連用形や接続助詞の句の並びの多い文が、幾つかあるように見受けられます。 
■論理 2.0 ( 2 ) 
■内容 1.1 ( 3 ) 
質問文との関係が希薄であるように見受けられます。 
■最終得点 7.3 ( 10 )

  修辞については同じ傾向の指摘を受けつつも、かなり点数アップ。逆に内容については点数ダウンである。確かに書いていてチト内容が薄いなぁ、と思ってたんだよな。実際、オイラにとって書きづらいテーマだったんだよね。書きづらいほうが内容が薄くなって、その分だけ修辞の評価が上がるというコトはあるんかなぁ。

  んじゃ、いつものオイラのお調子フルパワーで書きなぐったこのブログの文章はどうだろうか? 小論文っぽい文章は、と……お!? 11日の「死蔵されるメディアは老後の愉しみとなりうるか」なんて小論文っぽいじゃん。タイトルをそのまま質問文に設定し、解答文に本文の前半部分「……その筋は永遠に不滅なのである。」までをコピペして、いざ採点!!

■修辞 3.8 ( 5 ) 
漢字の使用が少ないように見受けられます。 
埋め込み文が全体の分量に比べてやや多いように見受けられます。 
連用形や接続助詞の句の並びの多い文が、ややあるように見受けられます。 
長くて難しい語がやや少ないように見受けられます。 
■論理 2.0 ( 2 ) 
■内容 0.9 ( 3 ) 
質問文との関係が希薄であるように見受けられます。 
■最終得点 6.7 ( 10 )

  あれ!? 修辞の指摘傾向が変わったぞ!? 相変わらず文の複雑さは指摘されるものの、長さには問題がないときた。しかし「漢字も長くて難しい語も少ない」って……それは平易な文章になっているってコトじゃん、減点すんなよな。しかし、内容は最低点……ま、質問文が「死蔵されるメディアは老後の愉しみとなりうるか」なんて、そもそも設問としてワケわかんないからな。あははは。

  しかし、こういう人工知能的なシステムの質の向上(?)を見る度に思うのは……

  「TOKYOナンパストリート」をリメイクしてくれッ!!

  ……と、いうこと。いま思い出しても、あのゲームの着眼点の良さには敬服する。もともと女の子との会話は、適当に話題を振り撒いて、興味がありそうならその話題にガーッと乗り、興味がなさそうならサッと引く、というのが基本だ(よな?)。当時のPCでもそれなりに雰囲気を再現できていたが、現在の技術を使ってナンパ会話を評価するシステムを取り入れたらもっと面白くなるはずである(TOKYOナンパストリートについてはココが詳しい)。

  プレイがひと通り終わった(!?)ら、こんな評価が出るのだ。

■ノリ 2.8 ( 4 ) 
長くて難しい語が多いように見受けられます。
長くヒッパリすぎの話題があります。
理屈っぽい話題がやや多いように見受けられます。
話題間のつながりがやや悪いように見受けられます。
■ウケ 2.3 ( 3 ) 
ボケが総じて(平均的に)少しシツコいです。
単位時間当たりのギャグが少ないように見受けられます。
ノリツッコミを多用しすぎるように見受けられます。
自虐の使用が少ないように見受けられます。
■キキ 1.8 ( 3 ) 
ツッコミが厳しすぎるように見受けられます。
話を聞く時間が全体の会話時間に比べてやや少ないように見受けられます。
■最終得点 6.9 ( 10 )

  画像の説明

  うわ、マジに面白そう。上記のTOKYOナンパストリートも、実際の女の子とシャベる時のトレーニングソフト的な面があったけど、これは更に使えそうだぞ。監修は明石家さんまに頼んで、女の子は3DCGのリアルタイムレンダリング、PS2+マイク対応でナムコから「トークの達人」として今秋発売だ!! 永瀬麗子、深水藍、吉乃ひとみはもちろん、ワルキューレやカイ、モモと楽しくお話できるのはもちろん、ジェニファーやアルテミスに説教くれてやったり、果てはミズパックマンを口説くこともできるぞッ!! ヤッホー!!


2006-02-15(Wed) Cygwinでsoxしてlameする

  PCを新調して、HDDが80MBになったので、iTunesをインストールして、手持ちのCD百数十枚をすべて放り込んだら、ナンでもカンでもこのPCに集めてしまいたくなってきた。残りHDD容量は15GBを切っているが、まだ15GBもあるという見方もできる。なんとなく、過去にCD-R焼いて保存してあった、デジカメの写真もHDDに呼び戻してしまう。なーに、容量が不足したら、改めてDVDに焼いてしまえばいいのだ。

  そうだ。そういえば先日、過去に録り溜めた「英会話入門」のCD-Rが見つかったのだった。mp3に圧縮して、CD5枚ほどになっているから、軽く数年分はありそうだ。以前に書いたとおり、最近「英会話入門」が再開されたのだが……しかし、どうも昔のノリでないんだよなぁ、コレが。で、番組を聞く環境整備もできないまま、しばらく聞かずに自動録音サーバを放置しておいたら、いつの間にか遠山顕先生は「英会話中級」に移っていて、録音時間がズレ、録音しソビれていた……えぇい!! なにしろ、このCD-RもすべてPCに放り込んで、聞く環境を整備するのだッ!!

  ……と、意気込みつつ、昔のCDを読ませたトコロ、妙にmp3のファイルサイズがデカい。英会話入門は15分番組なのに8MBも食っている。普通の曲だと15分で15M弱になるはずなので、8MBは十分に小さいが、モノラルのしかもAMラジオの録音に、44kHz、80kbpsというのは、ちょっとオゴりすぎじゃねぇか。当時のオイラはナニを考えていたんだろう? こりゃマズい。なにしろマズい。マズいったら、マズい。これは再エンコードしなおして、正しい状態にしなければ。

  最終的に英語を聞くのが目的なのであれば、ビットレートなんて気にせずにサッサと聞き始めればいいのだが、どーもオイラの悪いクセが出た。こーゆー問題を解消しないと聞く気にならなくなってしまうのである。だが、これは技術者全般の悪いクセであろう。正しい状態にして、キチンとライブラリ化しないと気がすまない。だってそうすりゃ、プレイヤへの転送も速くてラクだ。ラクするための苦労をいとわないのが正しい技術者の姿である。だから、これでいいのだだッ!!

  再エンコードする方法にもこだわる。イッキに、ラクに、確実に……と考えると、コマンドインターフェイスのヤツ以外には考えられない。unix系のmp3エンコーダである「lame」とサウンドコンバータ「sox」を利用することにしよう。これをcygwin環境にインストールするのである。

  しかしながら、cygwin用のバイナリ配布は行われていない。よって、サックリとはインストールできず、いわゆる「./configure、make、make install」を行う必要がある……のだが、オイラはこの方法でちゃんとインストールできたコトが少ないんだよねぇ。大丈夫だろうか。まぁ、とりあえず、やってみる。

  まずは「lame」だ。「./configure、make、make install」……お!? これは一発でインストールできた。特に問題も生じない。じゃ、この調子で「sox」だ……が、ダメ。最後の「make install」する段になって……

SUZAKU:/home/mitsu/sox-12.17.9 $ make install
make: `install' は更新済みです

  ……とか出ちまってインストールができない。なんだ!? ナニが悪いのか? 最近はLinuxのサポートをやっているので、不具合の根っこを調査するのに、ソースを読んでどうこうするのには慣れたが「./configure」や「make」はいまだに苦手科目なんだよなぁ。こういう場合は、どうやって問題の根を探したらいいんだ?

  落ち着け。そもそも、soxを「./configure」する時点でおかしい。

$ ./configure
 :
 :
Old Rate enabled..................   no
Fast ulaw enabled.................   yes
Fast alaw enabled.................   yes
GSM Support.......................   yes
ALSA Driver.......................   no
OSS Driver........................   no
SUN /dev/audio....................   no
Ogg Vorbis support................   no
MAD MP3 Decoder...................   no
LAME MP3 Encoder..................   no

  soxは外部に関連プログラムがあると、自動的にそのライブラリを利用するようにコンパイルされる。今回の場合はlameだ。ライブラリを取り込んで、soxが直接mp3を吐けるようになる。だが、既にlameのインストールは終わっているハズなのに表示が「no」のままだ。別にsoxでmp3を吐けなくても、パイプでlameに渡してもいいのだが、せっかくそのような機能があるのに、利用しないテはない……というか、利用できるハズなのに理由がわからず利用できないのは、どうにも気持ち悪い。

  さらに気になるのはその前のmadというヤツ。こいつがあればsoxが直接mp3を読めるようになるっぽい。今回の場合は入力も出力もmp3であるから、そんなものが利用できるなら、利用しないテはない……というか、利用できるハズなのに理由がわからず利用できないのは、どうにもこうにも気持ち悪い。

  ちょっと本腰入れて「./configure」について勉強するか。ググると「configureをデバッグする」なんてぴったりのページが見つかった。ふみふみ……config.logを読めって?

SUZAKU:/home/mitsu/sox-12.17.9 $ vi config.log

  おぉ!! 「./configure」ってのは、内部で小さなプログラムをコンパイルしまくっていたのか!! 知らなかったぞ!! ほんじゃ、lameが失敗する理由は?

configure:4695: checking lame/lame.h usability
configure:4707: gcc -c -g -O2 -mno-cygwin -Wall  -mno-cygwin conftest.c >&5
conftest.c:68:23: lame/lame.h: No such file or directory
configure:4713: $? = 1

  即席で作られた「conftest.c」の中には「#include 」が含まれていて「そんなファイルはない」って結果を受けて、lameが見つからないコトになっているわけね。じゃ、試しに以下のコードをコンパイルしてみる。

#include <lame/lame.h>
 
int main() {
        printf("Where is lame?\n");
}
 
$ gcc test.c

  フツーにコンパイルできるじゃん!? じゃ「./configure」の中身と同じオプションでコンパイルしてみる。

$ gcc -c -g -O2 -mno-cygwin -Wall -mno-cygwin test.c
test.c:1:23: lame/lame.h: No such file or directory

  ダメだ!! どのオプションが影響しているのか!?

$ gcc -mno-cygwin test.c
test.c:1:23: lame/lame.h: No such file or directory

  「-mno-cygwin」だ。これってナニ? 調べたら、cygwinライブラリを利用しないバイナリを生成するオプションとのコト。cygwinライブラリを組み込むと、cygwinをインストールしていない環境で動かなくなるとか、自動的にGPLになってしまうという政治的な問題があるらしいが、そんなの自分のPCで使う分には関係ないやん。サクッと……

SUZAKU:/home/mitsu/sox-12.17.9 $ vi configure
   2849 case "$target" in
   2850     *cygwin* )
   2851 #       CFLAGS="$CFLAGS -mno-cygwin"
   2852 #       CPPFLAGS="$CPPFLAGS -mno-cygwin"
   2853 #       LDFLAGS="$LDFLAGS -mno-cygwin"
   2854                 ;;
   2855 esac

  ……コメントアウト。再度「./configure」する……でも、最終的な結果は変わらず。もう一度、config.logを読む。

configure:4695: checking lame/lame.h usability
configure:4707: gcc -c -g -O2 -Wall  conftest.c >&5
configure:4713: $? = 0

  おぉ。さっきのトコロはうまくいってるぞ。

configure:4831: checking for lame_init in -lmp3lame
configure:4861: gcc -o conftest.exe -g -O2 -Wall   conftest.c -lmp3lame   >&5
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lmp3lame
collect2: ld returned 1 exit status
configure:4867: $? = 1

  今度はココでコケとる。「-lmp3lame」が見つからん? ライブラリの「libmp3lame.a」がないってことか? それが「/usr/local/lib」下にあるのは確認済みじゃゾイ。ライブラリの位置を教えたればいいんかな? 以下のようにオプション付けて、再度「./configure」じゃ!!

$ ./configure "LIBS=-L /usr/local/lib"
 :
 :
Old Rate enabled..................   no
Fast ulaw enabled.................   yes
Fast alaw enabled.................   yes
GSM Support.......................   yes
ALSA Driver.......................   no
OSS Driver........................   yes
SUN /dev/audio....................   no
Ogg Vorbis support................   no
MAD MP3 Decoder...................   yes
LAME MP3 Encoder..................   yes

  よしゃーッ!! なんだか、OSS Driverなんてのもyesになってしまったぞ。ウホウホ。抜く手も見せずに「make」して「make install」するッ!!

SUZAKU:/home/mitsu/sox-12.17.9 $ make install
make: `install' は更新済みです

  うげ。相変わらずやん……コレ、意味わからん……でも……「$ make -n uninstall」は動くんだよねぇ……って、もしかして、アレか? この「install」って名前が悪い? つーか、同じディレクトリに置いてある「INSTALL」っていうドキュメントファイルに反応している!?

SUZAKU:/home/mitsu/sox-12.17.9 $ mv INSTALL INSTALL.txt
SUZAKU:/home/mitsu/sox-12.17.9 $ make install

  で、できた……な、なんつーアホタレな……CygwinはベースがWindowsだもんだから、ファイルの大文字小文字の扱いが適当なんだよな。そんでもって、変換はこうだ!!

$ sox before/1007.mp3 -b -r 16000 -t wav - | lame -b 24 - - > after/1007.mp3

  なんだか、結局、パイプでつないでるんですが……だって、soxからビットレートが指定できないんだから仕方ないんだもん!! ……ま、それはそうと、これで15分2.5M程度というAMラジオの録音にはふさわしい、通常の楽曲のmp3の1/6程度という状態に持っていけるようになった。よっしゃよっしゃ。


2008-02-15(Fri) 味見回路を試作

  先日から、なにやら含みがちに制作をしているが、思い切って書いてしまおう。実はオシロを自作しようとしている。

  手持ちにはosziFoxがあるのだが、完全には壊れてはいないものの、非常に不安定で使い物にならない。挙動は日によってバラバラだが、平均的な故障モードとしては、液晶画面が表示されず、PCへのシリアル出力はある、という状態。使いづらいったらありゃしない。

  秋月のアナログオシロは魅力的だがデカすぎる。デジタルのヤツもまだデカい。USBオシロも悪くないが、専用ソフトが必要という点で萎える。まだLinuxで使えればいいけど、どうせWindowsのみ対応だろ? 壊れるまで使えるはずのハードウェアが、OSの載せ替えと心中だなんて、個人的にはありえねぇ。以前、気に入っていたシートフィードスキャナ、PAPERPORTのWin2kドライバが出ないのにショックを受けてからというもの、心底、懲りた。

  つーわけで自作である。PICで作るので、絶対性能は出ないだろうが、大抵は4MHzで動かすPICのデジタル回路が測定対象だから、2us、0.5MS/secも出れば実用的だろう。そのための20MHz水晶、そのためのAD7820である。

  ただし、プローブからの入力を受けるオペアンプ回路から、すべて試行錯誤である。負帰還がアレで、インピーダンスがアレだ。ググって先人の回路も参考にしようとするが、イマイチつかみ切れない。

  つーか、いきなり負帰還のオペアンプに入力したら、測定回路の電圧って下がるよな? まずは、ボルテージフォロアに突っ込む必要があるんじゃないか? でもって、次段のオペアンプで、電圧を反転して戻しつつ、オフセットとゲインを一度に調整すればいいのではないか?

  画像の説明

  ブレッドボード上であれこれやってみるが、自分ではうまく動いていると思っているので、とりあえずコレで行ってみようと思う。あ、今回のエントリにツッコミは無用ということでよろしく。


2009-02-15(Sun) 秋月ライタ、ヒアリング成功

  絶望的な気分になった昨日だが、気合いを入れて捜索したところ、PICプログラマキットV4添付のCDROMが発見された。VBのものらしきソースをちょっと読んだら、すぐにコードを読み出すrubyスクリプトができてしまった。うひょー。

  ただ、オイラの主力は、12F629, 16F648A, 16f819であり、現状のソースでは未対応である(ファームも)。試行錯誤が必要かもしれん。やっぱり、ラインモニタが動いてくれんとキツいなぁ。

  とはいえ、まだ、マトモに書き込めてはいないものの、ここまでくれば時間の問題だろう。ぼちぼち進めるつもりである。

$ vi read
#!/usr/bin/ruby
 
words = 256
 
open('/dev/ttyUSB0', 'w+') {|h|
 
	p h.putc(?r);			sleep 0.001
	p h.putc(?s);			sleep 0.001
	p h.putc(?p);			sleep 0.001
	p h.putc(words >> 8);		sleep 0.001
	p h.putc(words & 0xFF);	sleep 0.001
 
	p = 0
	while(p < words * 2)
		printf("%04x: ", p) if(p % 16 == 0)
		printf("%02x ", h.getc)
		p += 1
		if(p % 16 == 0)
			print "\n"
			h.putc(?@)
		end
	end
 
	p h.getc
}
 
$ ./read  
114
115
112
1
0
0000: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
0010: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
0020: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
0030: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
0040: 20 3b 30 a1 00 a2 20 7f 01 00 00 02 00 02 00 02 
0050: 30 a0 00 a2 20 7f 08 25 00 00 00 02 00 02 00 00 
0060: 00 a2 20 7f 20 4b 30 05 00 02 00 00 00 00 01 00 
0070: 28 18 15 86 28 3a 15 05 00 00 00 02 00 02 00 02 
0080: 00 85 12 83 11 85 28 44 00 00 01 00 00 02 00 02 
0090: 00 85 12 83 34 00 30 f3 00 02 00 00 00 02 01 00 
00a0: 15 05 28 52 28 53 30 fb 00 02 00 00 00 02 00 00 
00b0: 11 05 1c 20 28 64 15 05 00 00 00 02 00 02 01 00 
00c0: 16 83 00 85 12 83 34 00 00 02 00 02 00 00 00 02 
00d0: 11 85 28 5b 11 05 30 fb 00 02 00 00 00 02 00 00 
00e0: 30 01 20 b6 15 05 28 74 00 00 01 02 00 00 00 02 
00f0: 1d 85 10 a0 11 06 30 01 00 02 01 00 00 00 00 00 
0100: 00 a3 14 20 1f a2 10 20 00 00 01 02 01 02 00 00 
0110: 20 6a 34 00 15 86 01 a1 00 00 00 02 00 02 01 00 
0120: 20 6a 18 a0 14 21 0b a3 00 02 00 00 01 00 00 00 
0130: 20 58 11 86 30 05 20 b6 00 00 00 00 00 02 00 00 
0140: 28 a1 28 a2 28 a3 0b a7 00 02 01 02 00 00 00 00 
0150: 00 a9 0b a9 28 a9 00 08 00 02 00 00 00 00 00 00 
0160: 20 a8 30 96 20 a8 0b aa 00 02 00 00 00 02 00 02 
0170: 30 09 20 a8 30 c8 20 ac 01 02 00 00 00 00 01 02 
0180: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
0190: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01a0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01b0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01c0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01d0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01e0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
01f0: 3f ff 3f ff 3f ff 3f ff 01 02 01 02 01 02 01 02 
64

2023-02-15(Wed) ChatGPTに問う

  今更ながらカミさんが「ChatGPTってやったことある?」なんてタブレットを差し出すので、問うてみた。

  「黒澤の代表作品を3つ」

黒澤明は、日本映画史上最も重要な監督の一人であり、多くの傑作を残しまし
た。ここでは、代表的な3つの作品を紹介します。
『七人の侍』(1954年) - 時代劇映画の傑作で、村を襲う盗賊から身を守る
ため、7人の侍が集まって戦う様子を描いています。西洋映画にも大きな影響
を与えた作品であり、世界中で高く評価されています。
『羅生門』(1950年) - この作品は、同名の芥川龍之介の小説を原作として
います。物語は、強盗殺人事件の真相をめぐる複数の証言から、真実を探る様
子を描いています。黒澤の映画美学を最もよく表した作品の一つとされていま
す。
『生きる』(1952年…

  なんと! 悔しい……正解ではないか。じゃ、次はジャンルクイズ。レトロゲーの10で。

  「1943の最終面のボスは」

「1943」というゲームは、1987年にカプコンからリリースされた縦スクロール
シューティングゲームであり、プレイヤーは第二次世界大戦中の太平洋戦争を
舞台にした戦闘機パイロットを操作します。したがって、「1943」には最終面
のボスは存在しません。最終面には、最後の敵の本拠地を攻撃することが目的
であり、最後に出現する敵はボスではありません。最後に登場する敵は、一般
的に「ボス」ではなく、ゲームの最後の難関として配置されている敵と考えら
れます。

  へへーん。残念。息を吐くようにウソをつくんじゃねーよ。まぁ、この質問から「1943」がゲームであることを認識したのはスゴイが、ちゃんと「大和」というボスがいるだろうに。続いて、レトロゲーの20で。

  「ニャームコの初登場は」

「ニャームコ」は、任天堂の人気ゲームシリーズである「スーパーマリオシリー
ズ」に登場するキャラクターの一つです。ニャームコの初登場は、1992年に発
売されたスーパーファミコン用ゲーム「スーパーマリオワールド2: Yoshi's
Island」です。ニャームコは、このゲームで初めて登場し、主人公のヨッシー
が敵キャラクターである「ネコババ」と戦った後、産まれた卵から孵化して登
場します。以降、ニャームコはスーパーマリオシリーズの様々な作品に登場し、
人気を集めています。

  なんで任天堂なんだよ。アーケードが初出じゃねぇってことはともかく、せめてナムコって答えろや。

  つぅわけで、やっぱりまだまだである。しかし、非エンジニアは、コンピュータが言うことは正しいと盲信しがちなんだよな。自分はコンピュータに深い造詣があるからこそ、そこに頼らないことにこそ楽しさがあることを見い出せる気がする。オートマチックトランスミッションも、オートフォーカスもクソ喰らえなんだぜ。


2024-02-15(Thu) ドルアーガで小脳を鍛えまくる

  もう、書くのは何度目かになるが「歳を取って粘り強くなった」気がする。何でも楽しい取り組みとして、継続ができるようになった。筋トレも、ヴォーカルも、ドルアーガも

  結局、何事も上達するためには「ケーススタディ」の繰り返しであり、大きく物を言うのは回数だ。それを通じて「筋肉」や「小脳」を鍛え上げる。筆記も、楽器の演奏も、マニュアルトランスミッションの操作も、いわゆる体に覚えさせる系の技術は小脳だ。一連の動作をマクロ化し、考えなくても体が動くようにする、という感じ。

  ドルアーガの場合、例えば「マジシャンが残っているのに剣を出したまま歩く」は禁じ手である。しかし「ナイトが近づいてきている」など、状況によっては避けられない場合もある。そういう複合した難しい状況が引き起こされるか否かは運によるところが大きいのだが、それを「運が悪かった」と片付けていては、60階に到達することはできない。1時間近くの間、幸運が連続する可能性は低いからだ。

  ここがドルアーガの実に面白いところで、不運のパターンは数限りないものの、常に納得性が高いので、ミスをするたびに学習が行われ、それは「小脳」に刻みつけられていく。大脳で考えることも重要だが、小脳で感じることの方がより重要なのだ。まさに「考えるな、感じろ」というやつ。感覚的にヤバい状況を避ける。それがミスの可能性をジワリジワリと下げていく。

  よって、すぐには結果は出ない。確率の問題だから、不運の多少に影響を受ける。だから、日々「どこまで登ったか」だけを目標にすると心が折れる。結果は重要だが、結果だけを求めすぎてはいけない。人間はよほどのことがない限り「継続していれば進化し、決して退化することはない」のだから。

  画像の説明

  つうわけで、一時期はスランプもあったが、今日は57階まで登ることができた。上の方まで行くと、ウィルオーウィスプへの対処法も必要になってくるんだよなぁ。

  改めて言うが、何事も上達するためには「ケーススタディ」の繰り返しが必要であり、大きく物を言うのは回数であり、それには時間が必要だ。「時間は夢を裏切らない」。この言葉を松本零士御大が使い出したのは晩年だったと思うが、若者にはなかなか理解しづらい言葉だと思えるなぁ。


2025-02-15(Sat) OSSアプリ、OSSエミュ、PulseAudioエミュ、PipeWire、ALSAてなもんや

  あまり言いたくはないが、学ばないエンジニアはクソだ。知らないことはいくらあってもいいけれど、必要とあればその場でそれなりには学ぶべきだ。頭があんだからさ。

  客のための商品を作っているんだろう? ならば「理由はよくわからないが、適当にやったらできた」というレベルの仕組みをコネ上げんじゃねぇよ。それは「適当にググッて見つけたコードを使う」のと同じだぜ。最近は「適当にAIに聞いて出てきたコードを使う」というのが良いことのように語られているが、そのコードに対する責任を負うのはアナタなんですよ。理解できてないものは使うんじゃねぇよ。売りもんだろ?

  恐ろしいことに「そんな作りはおかしい」と指摘すると「もうテストまで終わっているので変えられない」などと返されるパターンがある。それが、稀ではなく、頻繁にある。そんなの知るかよ。クソアプリのためにOS側を直せって? 正気か? 設計者を断罪すんだよ。バカの相手はつかれる。

  つうわけで、Linuxのサウンド機能はそれなりにややこしい。いつもなら、ここに理解をまとめるところだが、まとめるのが難しいほどにややこしい。歴史的な経緯が積み重なりまくっているので、アッチやコッチのサイトの情報を浴びているうちに、なんとなくわかってくる感じだ。

  とはいえ「客のための商品を作っている」エンジニアならそれくらいやれよ。理解できていない自分を自覚しろ。相手は太客だろうよ。興味ねぇならエンジニアやめろ。恥だ。つうか、恥ずかしくないエンジニアって、ウチに何人いるんかな? そんなレベルで作ってるシステムなんだから、そらトラブるわ。でも、どこの会社、どこの業界もそうなんだろうな。建設業界でも手抜き工事はあるからね。それでも、そう簡単には表面化しないものなのだろう。気づかないけど、そういうクソなシステムに囲まれているのが我々の日常なのです。

  というわけで自分も、ちゃんと理解できていない自分を自覚して、改めてLinuxのサウンド機能についての理解を進めた。過去にも断片的に書いているが、読み返しても大きくは間違っていないな。改めてまとめると、こういうことだな。

・ある時「Sound Blaster Pro」がデファクトスタンダードになり、PCM音源以外は過去のものになった
・OSS(Open Sound System)が登場、PCMの再生/録音が可能になった
・ALSA(Advanced Linux Sound Architecture)が登場、OSSを置き換えた
・ALSAには、OSSのエミュレーション機能もあり、OSS向けのアプリも動かせる
・PulseAudioが登場、ソフトウェアミキサにより、複数のアプリの同時発声が可能になった
・逆に言うとOSS/ALSAは、あるアプリが音を出すと、他のアプリは音を出せなかった
・PulseAudioには、ALSA/OSSのエミュレーション機能もあり、ALSA/OSS向けのアプリも動かせる

  で、主にPulseAudioについて調べ始めたのだが、手元のFedoraではPulseAudioが動いていなかった。代わりにPipeWireというものが動いている。PulseAudioを代替するもののようだ。加えると、こういうことだな。

・PipeWireが登場、PulseAudioを置き換えた
・PipeWireには、PulseAudioのエミュレーション機能もあり、PulseAudio向けのアプリも動かせる

  理解に重要なのは「置き換え」「エミュレーション」の関係である。機能には様々な組み合わせがある/ないことの理解だ。「ゲッターロボ」や「Gアーマー」程度には組み合わせは複雑である。時代とともにこう変化してきたのだ。たぶん。

OSSアプリ → OSS
 ↓
ALSAアプリ → ALSA
OSSアプリ → OSSエミュ(ALSAの) → ALSA
 ↓
PulseAudioアプリ → PulseAudio → ALSA
ALSAアプリ → ALSAエミュ(PulseAudioの) → PulseAudio → ALSA
OSSアプリ → OSSエミュ(PulseAudioの) → PulseAudio → ALSA
 ↓
PulseAudioアプリ → PulseAudioエミュ(PipeWireの) → PipeWire → ALSA
ALSAアプリ → ALSAエミュ(PipeWireの) → PipeWire → ALSA
OSSアプリ → OSSエミュ(PulseAudioの) → PulseAudioエミュ(PipeWireの) → PipeWire → ALSA

  ほかにもPortAudioとかJACKとかあるようだが、上記が理解できているならば、ちょっと調べればどこに位置するものかわかるだろう。

  aplayというコマンドを使うなら、当然それがどういうものか理解しておく必要がある。aplayはalsa-utilsに含まれるものであるからALSAアプリである。だが、普通に使うとALSAエミュ(最近ならPipeWireの、ちょっと前ならPulseAudioの)を経由してALSAから発声される(ように設定されている)。これによって、複数のaplayが並行実行できるわけだ。しかし、いまでも直接にALSAに出力することもできて、その場合は複数のaplayは並行実行できない。それが元来のaplayの姿である。

  一方で、paplayというコマンドはpulseaudio-utilsに含まれるPulseAudioアプリである。デスクトップアプリとして音を出すならば、他のアプリと衝突しないようpaplayを使うのが正しい。

  さて、そんなことをやっていたら、音声キャプチャをする必要があったことを思い出した。ヴォーカル修行で歌いたい曲をYouTubeから得るためである。ちょっと前まではyoutube-dlが使えたのだが、最近は使えなくなってしまっている。ラインケーブルでPCMレコーダをつないで録音するかなぁ……と思っていたのだが、やっぱりデジタルキャプチャしたい。

  ちょっと前には上に書いたほどLinuxのサウンド機能について理解していなくて、JACKを導入したりして試行錯誤していたのだが、わかってしまえば簡単だった。PipeWireの録音ツール「pw-record」で一発だ。

$ pw-record --target 55 pcm.wav

  55というのはノードのIDで「pw-top」で調べられる。スピーカの直前でキャプチャするイメージだ。実行しておいて、YouTubeで課題曲を再生すればいい。アラート音を出すと一緒に録音されてしまうので、録音中はお静かに。おかんの「ご飯だよ〜」は、セーフだが。

  PipeWireでなくPulseAudio環境なら、録音ツール「parecord」を使う。

$ parecord -d 55 pcm.wav

  同じく55というのはノードのIDで「pactl list short」で調べられる。キャプチャしたpcm.wavは、周囲に不要な部分があるであろうから、例のcccdctで切って作業完了である。

  つうわけで、趣味であっても、仕事ならなおさら、わからんことがあったなら学ぶべきだ。頭があんだからさ。いつまでもスワップが悪だとか凝り固まってんじゃねぇよ。売ってんのは技術なんだぜ。訊くのもいいが、せめて正しく理解する。当たり前だろ?