2015/06/27

話にオチをつける文化

ゆうべ、私の勤務する台湾の大学の先生方の会食に参加してきました。
そろそろ学期が終わるので、私の所属するグループの先生が6人ほど集まって、
楽しくご飯を食べてきました。
みなさん仲がいいので、とても楽しそうにお話を交わしていらっしゃいました。

# 私は中国語が大してできないので、ただ話を聞いて相槌を打っているだけでした。


その会話を聞いていてちょっと思ったのですが、
台湾の人々の社交的な会話は、

話にオチをつける

ということが求められるのかもしれません。
オチというか、笑うところというのかもしれません。
例えばこんな感じです。


(以下は参加者の一人が「飛行機が怖い」という話) 
.... それでね、この人(隣に座っている人)がね、急に私の手をギュッてしてきたの、
それで私が「どうしたの」って尋ねたら、すっごい心配そうな顔で、
「ねえ、ちょっと手を握っていてもいい?」だって! ← ここがオチ  
(みんな爆笑) 
(上で「この人」と呼ばれた本人)もうあの時は、本当に怖くて、
離陸前も、もうずっとこうやって、← 手を合わせて拝む動作
「南無阿弥陀仏、南無阿弥陀仏」ってずっと唱えていたんだから!
(みんなまた爆笑)


こんな風に、「みんな爆笑」というのを繰り返しながら会話が進行していきました。
(上の例では複数の話者で共同で話を盛り上げるというコントのような流れでした)

「話にオチを付ける」あるいは「ユーモラスな話をする」
というのは、大阪人の嗜みであるらしいのですが、
ひょっとしたら台湾の人々も、それに近いマナーがあるのかもしれません。

ただ、ユーモラスに話すという文化は、何も大阪に限ったことではありません。
例えば、私は今Toastmasters Clubという、
「英語でスピーチをする力を磨こう!」というクラブに参加しています。
そこで学ぶのは英語文化圏の話し方なのですが、
そこでも「ユーモラスに話す」ということは特に重視されていて、
全世界で(このクラブは世界規模の集団です)年に1回、
かならず「ユーモアスピーチコンテスト」というのを開催するほどです。

# 英語ではオチのことを「パンチライン punch-line」と言うそうです。

ですから、何かの機会におもしろい話をして「みんなを笑わせることを心がける」というのは、
別に大阪の専売というわけではなく、
さまざまな文化圏でみられる行動規範なのかもしれません。
台湾にもそうしたルールがあっても不思議ではありません。

あるいは、今回の会食にご参加の皆さんは、
全員英語圏に留学された経験のある方ばかりでした。
ですから、そうした英語圏の文化の影響を受けていて、
パンチラインの効いた楽しい会話になった可能性もあります。

この「台湾にも話にオチを付ける文化がある」という仮説を検証するためには、
もう少し複数事例に当たり、観察データが必要です。
でも、会話で人を笑わせるというのは、
相手にとても大きなプレゼントをしているのと同じです。
他の文化圏の人々を、しかも外国語で笑わせるというのは、
私にとっては本当に難しいことなのですが、 
これからチャレンジしていきたい課題であると、
みなさんの会話を思い出しながら思いました。



2015/06/07

Ubuntu上のRでコクランのQ検定をする

最近、「コクランのQ検定」をすることが必要なことがありました。
多重比較が必要で、手計算を避けたかったので、
Excelではなく、Rで計算することにしましたが、
かなり時間がかかってしまったので、備忘のため、こちらに記録しておきます。

1. 筆者の環境

Ubuntu 14.04
R version 3.0.2

2. cochran.qtestのインストール

R上でコクランのQ検定を実行してくれるプログラムはいくつか公開されています。
しかしその中で、下位検定(多重比較)までやってくれるcochran.qtestを使いたいと思いました。
この関数は"RVAideMemoire"というパッケージに入っています。
なので、このパッケージをインストールする必要があるのですが、
Rのプロンプトで以下を実行しても、エラーが出て、インストールに失敗します。

> install.packages("RVAideMemoire")

エラーの中で気になる部分はここでした。

configure: error: missing required header GL/gl.h

ネット上を検索した結果、Ubuntuのシステム上に、
パッケージを追加する必要があるとのことでした。
(http://stackoverflow.com/questions/15292905/how-to-solve-the-error-missing-required-header-gl-gl-h-while-installing-the-p)
上のページを参考にして、(Rの中ではなく)Ubuntuに以下をインストールしました。

$ sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

その上でR内でもう一度以下を実行したら、パッケージのインストールに成功しました。

> install.packages("RVAideMemoire")


3. cochran.qtestの使い方

cochran.qtestを日本語で解説されている文書は見つかりませんでした。
だからオリジナルのマニュアルを参照するのですが、
あまり親切ではありません。こちらがマニュアルです。
http://www.inside-r.org/packages/cran/RVAideMemoire/docs/cochran.qtest

この一番下のところに使用例があるのですが、
これをみても、データがどのような表になっているか、
直感的によく分かりませんでした。(もちろん2行目、3行目が分かれば問題ないのですが)
ここで表現されているデータというのは下のようなものです。

被調査者:a-j
条件:A,B,C

/,A,B,C
a,0,1,1
b,0,0,1
c,0,1,1
d,1,1,1
e,0,0,1
f,1,0,1
g,0,1,1
h,0,0,1
i,0,1,1
j,0,0,1

なので、これを参考にしてデータを並べて、データを入力して計算を実行しればOKです。
ちなみに、このマニュアルの例を実行すると、
条件間に有意差が出て、ウィルコクソンのサインランク検定による多重比較をしてくれます。

ご参考になれば幸いです。

2012/06/23

常勤の仕事が決まりました。

長らく、えーと、2006年9月から2012年6月までの6年間、
非常勤講師として自由に教育実践を続けてきたのですが、
このたび常勤教師としての仕事に就くことになりました。

勤務校は以前退職した学校です。
復職ではなく、再雇用していただけることになりました。
正直ちょっとビックリしたり、戸惑ったりはしているのですが、
でも採用していただけてよかったと思います。

時間的、あるいは立場的に制約の多い常勤教師として、
どこまで自分の信じる教育実践ができるのかは未知数です。
ただ「コイツ、常勤になって腐ったな!」とか、
「手、抜いてるよな」などと思われないようがんばりたいと思います。
(体を壊さない程度に!)

今回の就職活動に際しては、
本当に色々な方にご協力いただき、ご声援いただき、
そしてご心配をお掛けしてしまいました。
これからの人生、あと何回就職活動をするかは分かりませんが、
でも今回お世話になったことは忘れません!
みなさんのご期待に少しでも応えられるよう、
学生さんたちを大切にできるよう、
しっかり仕事をしていきたいと思います。

今後とも、どうぞご指導ご鞭撻のほどを!
菊川亭日常もどうぞよろしく!

2012/04/14

互い違いに行を並べ換えるelisp


例えば↓(例1)のように日本語(上3行)と中国語(下3行)が並んでいるとします。
1行目の日本語の翻訳が4行目に、
2行目のが5行目に来ます。
全部の行数をn行、任意の日本語の行を第i行とすると、
それに対応する中国語は(n/2) + i 行目に来ます。

(例1)
わたしは田中です。
田中さんは日本人です。
田中さんは会社員です。
我是田中。
田中是日本人。
田中是公司職員。

これをリージョン指定して、実行してやれば、
(例2)のように日本語と中国語が交互に並びます。

(例2)
わたしは田中です。
(我是田中。)
田中さんは日本人です。
(田中是日本人。)
田中さんは会社員です。
(田中是公司職員。)

elispは以下のような感じです。

 1: (defun kougo (beg end)
 2:    "行を交互に並べ換える"
 3:    (interactive "r")
 4:    (let* ((i) 
 5:           (mylist (split-string (buffer-substring beg end) "\n"))
 6:           (half-len (/ (length mylist) 2))) ; リストの要素数の半分をここで計算しておく
 7:      (kill-region beg end);元のリストは消してしまう。
 8:      (loop for i from 0 to (- half-len 1) 
 9:            do (insert (format "%s\n(%s)\n" 
10:                               (nth i mylist)
11:                               (nth (+ i half-len) mylist))))))


今回学んだのは、リージョンで囲んだ部分を文字列(string)として取り出す方法です。
要点は3つあって、

  1. 関数定義の行の引数、(beg end) を記述します。

  2. (interactive "r") と記述します。

  3. (buffer-substring beg end) として文字列として取り出します。

この関数では、(buffer-substring) で取り出した文字列を、
(split-string)でリストに変換し、
そのリストの要素を互い違いに(insert)できるように、
loopを回しています。

今回も長い時間はまってしまったのですが、
まず、リージョンを文字列として取り出す方法を見つけるのに時間がかかりました。
(すみません、低レベルです(^^;)

あと、let ではなくlet*を使用する点。
ローカル変数同士に関連性がある場合、
例えば上のプログラムのように、自分で定義したmylistというローカル変数に基き、
別のhalf-lenというローカル変数を定義するような場合には、
let*を使わなければならないようです。

ところで、私はPerlからelispに乗り換えたのですが、
最初Perlの配列のようなものが見当らなくて、大変困っていました。
ですが、リストと(nth)という関数があればPerlの配列の操作と同じだと気付き、
以後elispが謎でなくなりました。

2012/04/09

現在のJPY/NTDレートをひっぱってきてくれるelisp


台湾のYahoo!のページから為替レートをひっぱってきて、
表示してくれるelispを書きました。
もとのページにはいろいろな銀行の資料が表示されるのですが、
一番安く日本円を売ってくれる台湾銀行のものを表示してくれるようにしました。


(defun jpy-twd-now ()
  (interactive)
  (insert
   (format "\n%s  JPY/TWD (台湾銀行)  %s\n"
           (current-time-string)
           (replace-regexp-in-string
            "^\\(\\(.*\n\\)*\\).+?台灣銀行.+\n.+?>\\(.+?\\)<.+\n.+?>\\(.+?\\)<.+\n\\(\\(.*\n\\)*\\)$" 
            "売:\\3   買:\\4"
            (shell-command-to-string "lynx -source http://tw.money.yahoo.com/currency_foreign2bank/currency/JPY/sort/-buy")))))
(global-set-key "\C-c\C-y" 'jpy-twd-now)


↓こんなふうに表示してくれます。

Mon Apr 9 23:29:04 2012 JPY/TWD (台湾銀行) 売:0.36590 買:0.35520


正規表現でずいぶんハマってしまいました。
もっと高速で動かす方法があればご教授ください!
おねがいします。

2012/03/28

就職活動

お蔭様で博士号が取得できました。
(取得したのは2月)
現在は、非常勤講師の身分のまま、職位の昇格を審査していただいています。
無事審査に通過したら「副教授」というポストに、
就くことができます。

というわけなので、
そろそろ定職に就かなければなりません。

現在、台湾の南部の学校では、どこにも教師の公募が出ていません。
現在の勤務校にも空きがないそうなので、
募集の有無にかかわらず、
履歴書を送ることにしました。

就職活動、がんばります!

2012/03/19

ムカデ出現!


ゆうべ、どこから来たのか分からないのですが、体長8cmほどのムカデが1匹、
わが家に侵入してきました。

# わが家は町中のマンションの3F

発見した妻がびっくりして自宅警備隊(私)に通報。
捕獲の後、マンションの庭にお引きとり願いました。

# すみません、私ああいうの殺せないんです。

ムカデなど、子供時代以来でした。
特に知識もなかったので、Wikipediaで調べてみました。

http://ja.wikipedia.org/wiki/ムカデ

「どの種も肉食で、小動物を捕食する。オオムカデ類はヒトに対して能動的に攻撃をかけるものがあり、噛まれるとかなり痛む。」

噛まれると痛いというのは聞いたことがありましたが、
んー、かなり攻撃的なヤツだったのですね。
痛いのは毒を持っているからのようですね。

「ゴキブリなどを捕食するためにムカデがしばしば家屋の内部に侵入する。この場合、靴の中や寝具に潜んだりすることから咬害が多く、衛生害虫としても注意が必要である。」

あれ、ということは、庭に放したのはまずかったのかな?
いずれにしても、靴を履く時には中に入ってないか、いちいち確認したほうがよいようです。

ちなみに、雑多な知識ですが、Wikipediaよりメモ。

- ムカデは「後期シルル紀」という時代に生存が確認されているらしい。シルル紀っていうのは「カンブリア爆発」(生物相が一気に多様化した変化を指す。アノマロカリスもこの時代らしい)のカンブリア紀の次のオルドビス紀のその次で、約4億年前。シルル紀の次がデボン紀と呼ばれる時代で、このころに昆虫が登場したらしい。ってことは、ゴキブリよりも前からいたってことか。
- 正式には、「動物界節足動物門多足亜門ムカデ上綱ムカデ綱」に分類されるらしい。この節足動物門というのには昆虫やエビ・カニも含まれるらしい。
- 英語はcentipedeだけど、種類によってはhouse centipedeとも呼ばれているみたい。
- 人を殺すほどの毒はないらしい。
- 「一匹を殺すと、そのつがいの対が現われる」というのは俗信らしい。
- オオムカデの脚(専門用語で「歩肢」というらしい)は21対か23対。
- 毘沙門天の使いと考えられ、戦国武将に好まれ、兜や旗印などのデザインにしばしば使用された吉祥印らしい。武田信玄の使番(伝令部隊)である百足衆が旗印に使ったのが有名らしい。
- 「客足が多い」ということで、商人にも好まれたらしい。

どうも日本人は伝統的に縁起がいいものと考える向きもあったようですね。