おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

openSUSE 勉強会 2009 年 4 月

最初に、今頃になっちゃってすみませんすみません。と謝っておく。

今回から「OpenSUSEユーザ会」開催になった題記イベント。

冬空風さん、ゆーいちさん、おつかれさまでした。
あと会場提供いただいたびぎねっとさまにも感謝でございます。

ぶっちゃけ opensuse-ja の人間を包含せずユーザ会という組織が立ち上がったことに対してはよく分からないことも多い(色々情報は入ってくるのだけど、あえて分かるつもりもない)のだけど、そういういきさつはどうあれ、Desktop Linux コミュニティにとってプラスになる活動であるならば、お手伝いはしたいなあと思っております。ハイ。


今回のプログラムは三つ。

ゆーいちさん「翻訳なんてツールと勘、そして挫折(何」

今回の演目で一番聞きたかった内容です。
資料はこちら

ゆーいちさんは opensuse-ja の Wiki チームシスオペだそうで、その観点でのプレゼンでした。

  • Cross Translation という複数の Web 翻訳結果を見比べられるサイトが便利ですよ
  • 勘:たぶんこうじゃないかと思う気持ち。
  • 挫折:というか諦め。ここら辺でいいやという気持ち。

「勘」「挫折」ってコンセプトは概ね同意。
誤訳するんじゃないかとか、意味取れないんじゃないかとか萎縮するよりは、一歩でも半歩でも前に進んだ方がずっといいと思うし。
少なくとも openSUSEWiki についてはそういう気持ちでどんどん訳していいよ、ということが公言されたのはいいことだとは思う。

けど、それなら、openSUSE 翻訳ガイド の:

翻訳は一時的な作業ではないことにご注意ください。仮にあなたがある言語の翻訳へ継続的に関わり、"公式の"メンテナ(訳注:Step 3 参照)になった場合は、その言語のページを常に更新し続けなければなりません。openSUSE プロジェクトのマスター Wiki サイト(翻訳のベースとなる Wiki )は英語版http://en.opensuse.org/)です。重要な変更が行われたことを見逃さないよう、絶えず更新される主要なページはウォッチリストに追加しておくことをおすすめします。

とか、

注意: 自動翻訳(機械翻訳)で作成した翻訳ページは掲載しないでください。下手な翻訳を載せるよりは、翻訳ページがないほうがましです。

などという威圧的な文章はなんとかしたほうがいいんじゃないかなーって思ったんだけど、これは英語ページの翻訳だから簡単になんとかできないんだって。*1

まあそれならそれでしかたがないので、「日本の Wiki チームのシスオペとして」ゆーいちさんには「とにかくやっちまいなYO!」ってことがわかるような形で公に表明してほしいなって思います。


機械翻訳についてはツールだから使い方しだいなんだけど、オイラあんま好きじゃないんですよね。自分の文章にするのに結局時間がかかってしまうし、構文が複雑な(=訳しにくい)文章は却ってわけがわかんなくなって混乱するから。のでオイラは多分使わないけど、使う人には便利だと思います。


あと、この手の話だと必ず出てくるのだけど:

  • 他のディストリとの情報交換をしたいがどうしようか
  • 例えばワーディング翻訳チームと Wiki の翻訳チーム、また同じチーム内でもメンバーによって terminology がばらつく問題をどうするか
  • openSUSE Wiki の場合は Sun の Java の翻訳ガイドラインを参考にしているが、他に参考になるガイドラインはないか

なんて話で盛り上がりました。

横田さん「Knoppix/Math の紹介」

前回の勉強会 d:id:naruoga:20090209:1234354472 で熱い数学バナを披露してくださった横田さんによる Knoppix/Math の説明。

こないだ Knoppix は 6 が出たので、それベースになるのかな? そこんとこはちゃんと聞けなかったんですが、要は CD ブート Linux の走りとも言える Knoppix に数学関連ソフトをがっちゃり詰め込んで、さらに読み物もつめこんだお得パッケージだそうです。

中身のいろいろな綺麗なデモに一同息を飲む。綺麗〜〜。
そして横田さんの熱い語りに押すスケジュール(笑)。
最初から時間決めとくべきだったんじゃ?
でも面白かったし。横田さんホントフレーゲ好きなのね。また話してた。
お土産でもらったんで遊んでみなきゃ。

なるひこ「Prolog を猛烈に語ってみる」

そんなタイトルをつけた覚えはなかったのですが(^^;)。

つことでこないだ5分では語りきれなかった Prolog の話をしてきたよ。
今回は枠を30分にして、デモと質疑応答入れて45分。
で、スライドが……112ページだと?

まあ、SlideShare に上げたスライドをごらんあれ*2

中のデモは大したことやってないんですが、こんな感じです。
最初のは知識空間への問い合わせの例。

naruhiko@naruhiko-jaunty-s101:~/Prolog$ prolog
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.59)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- ['human'].
% human compiled 0.00 sec, 1,972 bytes
true.

?- listing.

%   Foreign: rl_read_history/1

:- dynamic'親'/2.

'親'('まさと', 'なるひこ').
'親'('あつこ', 'なるひこ').

%   Foreign: rl_write_history/1

'父'(A, B) :-
	'親'(A, B),
	'男'(A).

%   Foreign: rl_add_history/1

'母'(A, B) :-
	'親'(A, B),
	'女'(A).

'女'('あつこ').

%   Foreign: rl_read_init_file/1

'男'('なるひこ').
'男'('まさと').

'人間'(A) :-
	'男'(A).
'人間'(A) :-
	'女'(A).
true.

?- 男(なるひこ).     <-- 単純な事実の問い合わせ
true .

?- 親(X,なるひこ).   <-- 変数を使った問い合わせ
X = 'まさと' ;       <-- 答えを次々に
X = 'あつこ'.        <-- 列挙してくれる

?- 人間(X).          <-- 規則を使った問い合わせの例
X = 'なるひこ' ;
X = 'まさと' ;
X = 'あつこ'.

?- halt.

お次のはリスト処理の逆演算の例。これは Lisper だと面白いと思う。
Lisp だと値として帰るのでこういう演算は普通にはできないからね。

naruhiko@naruhiko-jaunty-s101:~/Prolog$ prolog
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.59)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- ['list_process'].
% list_process compiled 0.00 sec, 1,148 bytes
true.

?- listing.

my_member(A, [A|_]).
my_member(A, [_|B]) :-
	my_member(A, B).



my_append(, A, A).
my_append([A|B], C, [A|D]) :-
	my_append(B, C, D).
true.

?- my_member(1, ).        <-- 空リストにはメンバーがないので失敗して当然
false.

?- my_member(1, [1]).       <-- これも成功して当然
true .

?- my_member(1, [2]).       <-- これも失敗して当然
false.

?- my_member(2, [1,2,3]).   <-- もう少し複雑な例をやってみた
true .

?- my_member(X, [1,2,3]).   <-- 逆演算の例
X = 1 ;                     <-- セミコロンは「その答え気に入らないから別のくれ」の意味
X = 2 ;                     <-- これでありえる回答を全部得られる
X = 3 ;
false.

?- my_append([1],[2],X).  <-- append の例。簡単なの二つ
X = [1, 2].

?- my_append([1,2],[3,4],X).
X = [1, 2, 3, 4].

?- my_append([1,2],X,[1,2,3,4]).  <-- これは逆演算。[1,2] とくっつけて [1,2,3,4] になる X はありますか? と聞いている
X = [3, 4].  <-- ちゃんと答えが得られる

?- halt.
naruhiko@naruhiko-jaunty-s101:~/Prolog$ 


大体30分強で終わったかな。ほぼ予定どおり。
が、終わった瞬間、「カットオペレータの説明ないの?」といわれ、それはさすがに無理! でもツッコミサンクス!って感じでした。
えーとその話するならあと1時間ください(^^;)。
失敗駆動ループと repeat と Prolog の述語評価順の話と……ってしなきゃいけなくなるから。

つかこのプレゼンだって大学のプログラミング概論一齣分ぐらいの価値はあると思うのはオイラの買いかぶりか?

でも(リップサービスかもしれないけど)概ね好評でよかったよ。

その他

今回オイラの提案で ust 配信してみました。
遠隔地の openSUSE ユーザの方にも見ていただけて、とてもよかったと思います。部外者だからと遠慮せんでいいと思う提案はどんどんやっていきたいですね。
ただせっかくだから配信だけでなく録画もしておけばもっとよかったとか、マイクがハウリングして調整を繰り返したとか、ノウハウ不足でちょっともたついたところは事実。こういうノウハウを交流する場ってやっぱ metacon とかでしょうか?
次回は openSUSE ユーザだけではなく他の人も ust に入ってきたりしたら楽しいだろうな。

あとこれも私がわがままをいったんですが、茶菓子の類を出すなら参加費取りましょうと。主催者側が持ち出しするのはやめましょうと。
これも受け入れてもらいました。
つまんないことだけどこういうのってオイラは大事にしたいのです。

反省会

えーいろんな話が出たけどここでは書きにくいのでちょっとパス。
でもこれもオイラの提案でぜひやりましょうって言ったんだけど、やってよかったと思う。楽しかった。またぜひ次回も!


まあとにかくですだ、参加者・関係者の皆様ありがとうございました!

*1:こういうことがあるから openSUSE は……って言われちゃうよ?

*2:SlideShareが勝手に?仕様変更してはてなが追随できてなかったらしく、こちらのサイトの通りに変更したらうまくいきました。多謝!