Personal tools
Document Actions

英語学習

Up one level

Document Actions

最低限,相手に伝わる英語の発音を身につけるためには「フォニックス」が近道

たまには役に立つことを書いてみる

国際線に乗っていたとき,機内サービスで「コーヒー」を頼んだらなぜか「コーラ」が出てきたことがあります。「coffee」をローマ字読みで読むと,ネイティブの人は最初の「コー」を聞いた瞬間「コーク」と認識するんだそうです。「カフィ」と発音すると,相手は「カ」を聞いた瞬間にコーヒーと分かってくれます。

「allow」は「アロゥ」じゃなくて「アラゥ」ですし,「said」は「セィド」じゃなくて「セド」。英単語を「文字通り」に発音してもたいていは通じません。文字から発音が予測できないとしたら,単語ごとに綴りと発音を別々に覚える必要があるのでしょうか。だとしたら,英語ってなんて面倒くさい言語なんでしょう。

綴りと発音のロジックを教えてくれるフォニックス

実際には,綴りと発音の間にはある程度のルールがあります。そのルールを教えてくれるのがフォニックスです。たとえば,「coffee」の「o」のようにアクセントのある「o」は口を指が3本入るくらい大きく開けて「ア」と発音します。「top」「copy」「job」の「o」も全部指三本の「ア」です。ここまで読めば,「object」はどんな風に発音すればいいか分かりますよね?

フォニックスはもともと,英米語を話す国の初等教育で取り入れられている教育方法の一つです。子供向けのプログラムですが,英語を学ぶ日本人にも効果があります。第二外国語を学ぶ人の学習過程は,子供が母国語を学ぶ課程とよく似ていることが研究で実証されているそうです。

フォニックスは,綴りと発音の関連性だけでなく,基本的な発音の方法についても教えてくれます。「apple」の「a」の音,いわゆる「アとエの中間音」は口角をあげて口を横に開いて発音するとか,日本人が苦手な「r」の発音は舌を丸めるだけでなく口をすぼめるとか。音だけでなくて口の形や舌の動かし方,息の出し方など,かなり基本的なところから発音の秘密を知ることができます。

ヒアリング能力も向上するはず

「英語は読めるけどヒアリングが苦手」という人がいます。そういう人はたいてい,耳から聞いた英語と,自分が知っている単語が頭の中で結びつかないのです。

文字と発音のロジックが分かれば,頭の中で発音された単語と頭の中の単語が結びつくようになります。発音できない単語は聞き取ることもできません。逆に言うと,発音の練習をすることでヒアリングの能力も向上するわけです。発音できる単語は聞き取れる,ということも,研究で実証されているそうです。

「walk」と「work」みたいに日本人にとって聞き分けづらい単語も,フォニックスを知れば発音の違いが分かって,聞き取れるようになりますよ。

勉強の仕方

CDつきの書籍がいくつか発売されています。CDを聞きながら,たとえば毎晩ちょっとづつフォニックスの練習するなどすると,独習ができます。

確実な効果を求めるなら,英語学校に通うなりした方がよいと思います。独習では成果のチェックに限界があるからです。経験のある先生にチェックしてもらうことで,学習の効果をより高めることができるはずです。

私の場合は,発音の善し悪しが勉強のモチベーションに大きく関わると思ったので,本を買ってさらに通っている英語学校のフォニックスのクラスを履修してみました。この学校は発音矯正の上手な先生が多くて,すごくためになっています。

発音の練習は顔の筋トレ

英語を構成する音には,日本語にない音がたくさんあります。「l」と「r」や「s」と「sh」のような聞き分けづらい音や,「アとエの中間音」「口を横に広げるイ」。日本語では使わない筋肉を,英語ではたくさん使います。

発音の練習をしていると,だんだんと口の周りの筋肉が発達してくるはずです。私は以前できなかった「えくぼ」ができるようになりました。発音の練習をすると,表情が豊かになって好印象になるかもしれませんね:-)。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/phonics-for-better-english-pronunciation/tbping

Re:最低限,相手に伝わる英語の発音を身につけるためには「フォニックス」が近道

Posted by おかこ at 2008-02-22 17:04

その本、atsさん、持ってるんですか?
もしよかったら、今度見せてもらえませんか?
よさそうなら、私も買ってみます。

Re:最低限,相手に伝わる英語の発音を身につけるためには「フォニックス」が近道

Posted by ats at 2008-02-22 17:06

>おかこさん
月曜にでも持ってゆきますよ:-)
もう読んじゃったので,しばらく貸しておいてもいいですよ

#ところで月曜のIPテストって何時からでしたっけ...? < ココで聞くな

三島由紀夫の英語インタビュー


三島由紀夫の英語によるインタビュー。ところどころカタカナ発音っぽいのが残っているみたいだけど,このリズムとかイントネーションなら普通にネイティブスピーカーに通じるんじゃなかろうか。なにより堂々としゃべっているのがすごいと思う。

経歴を見ると海外の滞在経験もなく,大学入学直前くらいに二次大戦が終わっている風なので,それ以前には英語に触れる機会は無かったように見受けられる。早くとも10代の終わり,あるいはもっと遅くから,自己鍛錬の一環でなのか英語を猛勉強したのかしら。それでここまでしゃべれるようになればすごいと思う。

彼のしゃべりっぷりは,日本人が目指すべき理想型と言えるんじゃないかなあ,と思います。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/an-interview-of-mishima-yukio-in-english/tbping

DUO 3.0始めた


通っている英語学校のシステムが変わって,結果として英語学習にかけることができる時間があまってしまった。この学校では英文の暗唱が必修になっているのですが,課題のケネディ就任演説は前のクオーターで覚えてしまったし。今回は発音とイントネーションをより完璧に,と思ったものの,やはり時間があまる。

ということで,前から気になっていたDUO 3.0を始めることにした。ガッコの暗唱と同じく,CDを聞きながら,すらすら言えるまで繰り返し練習する。文字から入るのではなく,音を覚えてから聞き取れないところを確認する,というのがポイント(だと思う)。

僕は熟語が弱点だと思っていて,今風の頻出熟語がたくさん収録されているのでやりがいがある。耳がよくなっているのかシュアサウンドとか聞き取れるようになってて(と信じている),CD通りにまねしたりして楽しいし。

ここ数日でやっとペースがつかめてきて,先が見えてきた。今のペースを維持するとして,完璧にこなすまで少なくとも三ヶ月くらいかかる換算になるのだけど,続けないと意味がないと思うのでなんとか続けようと思っています:-)。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/just-begining-to-try-duo-30/tbping

Wakakoさんのお誕生会

Image136.jpg

通っている英語学校のお友達(元クラスメート)のお誕生会にお呼ばれしてきました。場所は阿佐ヶ谷にあるイタリアンのお店。主賓のWakakoさん,永久幹事のMioさん,Okakoさん,Yu,Sayuriさん,Nobuさん,Junさん,そして私というメンバー。コースの最後には手作り感たっぷりのケーキが出てきた。

Wakakoさんにはプレゼントを渡さなければと思って,いろいろ悩んだあげく,ユングの「ヨブへの答え」という本を選びました。学生の頃読んで,とても印象に残っている本なんです。ちょっと難しいですけど,Wakakoさんのようなクレバーな方なら,きっとすんなりと読んでくれると思います。

実はこのブログにはあんまりフィニックスのこと書かないようにしてるんですが,特別楽しかったのでエントリしてみてます:-)。

The URL to Trackback this entry is:
http://coreblog.org/ats/moblog2008-06-08-15-20/tbping

Re:Wakakoさんのお誕生会

Posted by ミミー at 2008-06-09 18:55

atsさん、来て下さってどうもありがとうございました!
リーダーWakakoのお誕生日をお祝いできて良かったです。
クラスは違いますが、またおいしいものを食べて飲みましょ(^-^)
私は冗談の通じる女を目指します。

Re:Wakakoさんのお誕生会

Posted by ats at 2008-06-09 22:42

>ミミーさん
幹事ご苦労様でした。
一緒に世界の料理を制覇しましょう:-)。
あと,今度機会があったら,気を遣わずにもうちょっとゆっくりしてくださいね〜。

使い物になる英語を学び取る王道 : シャドーイングと音読の科学

英語を学習する目的や目標はひとによって様々だと思いますが,「使い物になる英語」を習得するというのは多くの人が目標としているところでしょう。
「使い物になる英語」とはどんな英語でしょうか。たとえば,ネイティブスピーカーの話す英語を「スラスラ」聞き取れたり,英字新聞の記事を「スラスラ」読めるレベルでないと,ビジネスシーンや日常生活で「使い物になる」英語を習得しているとは言えません。こうして見ると,この「スラスラ」の度合いが「英語のスキルが使い物になるかどうか」を判断する上で重要な判断基準となることが分かります。じっさい,TOEICのようなテストでは,限られた時間でリスニング,リーディング能力を試されます。まさにどのくらい「スラスラ」英語を使いこなせるかを試されているわけです。
耳から入ってきた英語を,スラスラ理解する。または書かれた英語をスラスラ読解する。思ったこと,伝えたいことをスラスラ英語で言う。この「スラスラ」のことを,言語学の用語で「自動化」と呼んでいます。「自動化」を簡単に言うと,脳力をたくさん使うことなく,自然に言葉を操る状態のことです。私たちが母国語をスラスラ使いこなせるのは,「自動化」した状態で使っているからに他なりません。
私たちにとっての英語のような「第二言語」を自動化するのは時間がかかります。特に仕事を持った後で自由になる時間がないときに,使い物になる英語を習得するのは大変骨の折れるものです。できるだけ時間をかけず,効率よく第二外国語(英語)の「自動化」ができるようになればそれに越したことはありません。効率的な英語学習の「王道」として注目されているのが,「シャドーイング」と「音読」です。
「シャドーイング」とは,耳で聞いた言葉を出来るだけ間隔を置かずに繰り返して言う行為を指します。「音読」とは,文字通り書かれた言葉を声に出して読む行為を指します。「シャドーイングと音読の科学」では,シャドーイングと音読がいかに英語学習に効果的であるかを科学的なデータや実験結果を積み重ねながら,解説しています。シャドーイングの効果について解説している65ページから本文を引用します。

一般にシャドーイング学習の当初は,シャドーイングがまったく自動化していない,むしろかなり認知負荷が掛かった状態であることが予想できます。すなわち,認知負荷が高い状態で,大脳の様々な箇所が活性化している状態です。これは,言い換えると,意識的な学習への意欲(readiness:準備状態)が高い状態でもあります。ただし,他の課題を同時進行で処理するような余裕はない状態です。
この状態を抜け出すのは,ある程度の時間がかかります。そこでは,新たな習慣を形成するような繰り返し学習が重要です。同じ言語材料のシャドーイングを繰り返すことで,また異なる言語材料のシャドーイングをさらに繰り返すことで,処理段階のバイパス,情報の活性化,配置換え作業などの結果,だんだんとシャドーイングがつらい作業ではなくなってきます。少しずつ,英語音声の近くやその復唱に全神経を集中しなくても,シャドーイングが比較的楽にできるようになってきます。
そうすると,それまでまったく理解不能であった文の意味や,文法構造なども把握しながら,シャドーイングすることが可能になってきます。それまで,音声表象・音韻表象を形成することをひたすら繰り返していたのに,それと同時に文の処理をすること(=理解)モ可能になってきます。


社会人である私たちには,英語学習に費やす「時間」はあまり無いかも知れませんが「知恵」はあります。効率よい学習方法についてよく知り,知恵を使って日々の学習にフィードバックすることで,より早く,効率的に英語を学習することができるようになるはずです。「シャドーイングと音読の科学」には,効率よい英語学習に欠かせないヒントが,科学的な実証を伴って豊富に紹介されています。文章も比較的平易で読みやすく書かれています。英語学習のモチベーション維持のために読んでみたのですが,とても参考になる書籍でした。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/the-science-of-shadowing-and-oral-reading/tbping

Re:使い物になる英語を学び取る王道 : シャドーイングと音読の科学

Posted by (石) at 2008-06-13 16:22

外国語を学ぶ際、「オウム返し」はとても有効な手段だと思います。
私もかなり使いました。


。。。が、気を抜くと、バーや書店などで知らない人の会話をオウム返ししてしまう癖がついてしまうので、気を付けて下さいね~。

Re:使い物になる英語を学び取る王道 : シャドーイングと音読の科学

Posted by YUMA at 2008-06-13 21:33

なるほど!
読んでみようと思いました。スラスラ話せるようになるには時間がかかりそうですが(勢いでなんちゃって英語で話すふりをするのは得意なんですが、それはスラスラとは違います)

Re:使い物になる英語を学び取る王道 : シャドーイングと音読の科学

Posted by ats at 2008-06-14 09:46

>(石)さん

ほー,アメリカで長いこと仕事されている(石)さんもシャドーイングを使って英語をブラッシュアップしてたんですね。

>YUMAさん
手法について納得するすることで,モチベーションを維持しやすいと思って読んだんですが,なかなか面白い本でしたよ:-)

Larry Wallさんとの夕食会

今週末のLL Futureにて基調講演をしていただくために,Larry Wallさんに日本に来ていただいています。皆さんご存じの通りプログラミング言語Perlの創始者です。ご家族(ご子息と奥様)と一緒に日本にいらっしゃっています。

私は通訳としてLarryさんにserveすることになっています。事前にコミュニケーションを取っておきたかったこともあり,アテンドの八木さんにお願いしてホテルの近くで夕食会を企画していただきました。

Larryさんとはもちろん,奥様と,息子さんといろいろとお話させていただきました。多くは雑談だったり,Perlやプログラミング言語の話だったりしました。直接お話すると,本当にいろいろと面白いお話を伺うことができます。Larryさんの奥さんのお父さんは第1世代のコンピュータ技術者と呼べるような方で,ケニアの大学でC++を教えているとか。一番印象的だったのは,ご家族のみんながLarryさんのお仕事や業績についてよく知っている,ということ。家族の理解があって仕事が出来るというのは,とても幸せなことだと思います。

席の終わり頃,息子さんが「折り紙」を折ってくれたのですが,おみやげにいただいてしまいました。我が家の家宝にしたいと思います:-)。写真の右に写っている「虫」がそうです。左の鶴は竹迫さん作:-)。

P1000772.JPG
P1000771.JPG

The URL to Trackback this entry is:
http://coreblog.org/ats/dinner-with-larry-wall/tbping

Re:Larry Wallさんとの夕食会

Posted by miki at 2008-08-28 21:55

ええーっ、通訳ができるほど英語が上達したんですか?すごい!!!7年前に初めてお会いしたときは、英語はできないとおっしゃってましたよね。

毎年、年初めに「ジャズピアノを習得する」とか、「スペイン語を習得する」といったゴールをたてるのですが、特に必然性がないものなので、なかなか達成できないんですよね。でも柴田さんのおかげで、ちょっとやる気が湧いてきました!:)

Re:Larry Wallさんとの夕食会

Posted by イアンルイス at 2008-08-29 02:35

すごくいい経験ですね。羨ましいです。私自身はperlがあまり詳しくないですけど、本当にこんなに有名な人と会えてよかったですね。

Re:Larry Wallさんとの夕食会

Posted by ats at 2008-08-29 13:03

>mikiさん
もう7年前になるんですね、その節は大変お世話になりました:-)
マクロな会社で一緒に滑った滑り台、楽しかったですね!!

当時の私の英語はひどかったですね〜、それに比べるとだいぶマシになりました(笑)
ジャズピアノ習うんだったら、旦那さんとセッションするのを目標にしてみるとか!?
具体的な目標を立てると、継続的にがんばれるようになりますよね〜

>ルイスさん
Larryさんはほんとうに気さくでよいひとでしたよ!
奥さんもステキでした。お話がとても楽しい
息子さんとはマブダチになれそうな気がしています(笑)

Re:Larry Wallさんとの夕食会

Posted by miki at 2008-08-30 08:48

あー、懐かしい滑り台!!ほんとに楽しかったですね〜。あの頃は気の合う同僚と仕事をするのが楽しくて、会社には遊びに行くような感覚でした(笑)。

なるほどー、もっと具体的な目標を持たないとダメなんですね。ダンナとセッション。。。10年計画ぐらいになりそうですが、がんばりマス!

Re:Larry Wallさんとの夕食会

Posted by ats at 2008-09-01 13:31

>Mikiさん
デイブさん,音楽には厳しそうですよね;-)
でもきっとたのしいと思いますよ!

そっちは大きなハリケーンが来てるみたいですね
大事にならないように,日本からお祈りしてます!(人)

Re:Larry Wallさんとの夕食会

Posted by つぅ at 2008-09-03 21:32

むむぅ、そんな会があったのなら押しかけたかったっす

Re:Larry Wallさんとの夕食会

Posted by ats at 2008-09-10 10:14

>つぅさん
楽しかったですよ:-)

英会話教室 ENGLISH ART WORK

英語学校で大変お世話になった先生が退職されて,なにをするのかなあと思っていたら自分の学校を作ってしまいました。

本気で英語をモノにしたい人にとっては本当にフィットする学校になるはず。創業メンバーのひとりNaomi先生は,文法,発音,イントネーション含め完璧な英語を使いこなす超人。英語ペラペラなお知り合いは何人かいるけど,ここまで完璧な英語を使いこなす人を私は知らない。しかも彼女は日本人なので,日本人がどうすればネイティブライクな英語をモノにできるのかについてよく知っている。なにしろ,Naomi先生自身,「日本人が英語習得でたどる道」を,身をもって体験しているのだからね。そういう先生と,ネイティブの先生もいるみたいなので,まさにいいとこ取りができる学校だとおもいます。

代官山ってオシャレ。ていうか21世紀なのに代官で山なんて歴史パねえ(それは違う)。

ところで,このWebサイトのHTMLは短いけどよく書けてるなあ。きっとイケてるWebデザイナーが手がけたに違いない。だれが作ったんだろ。。。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/english-artwork/tbping

Re:英会話教室 ENGLISH ART WORK

Posted by Karry at 2008-09-18 08:50

Atsushi久しぶりです。
Karryです!
学校のコメントありがとう。
Naomiがお礼のコメント書いといたよっていってたんで、
さっそくチェックしたら、なんかいいこといっぱい書いてくれててうれしかった。

でもそのあと「つぶやき?」というのがあったからチェックしたら、
「Karryはおれが嫌いみたいだから。。」
って書いてあったんだけど、なんでーーーー????

Atsushiは選択クラスもとってくれていて、
いつも一生懸命で、大好きだったのに。
わたしなんか悪いこと言ったかしちゃったかしたのかなー?

だったら申し訳ない。。。。

「学校にも遊びに来てほしいねー」話してたんだよー。

つぶやきがショックだったので、メールしてみました。

Karry

Re:英会話教室 ENGLISH ART WORK

Posted by ats at 2008-09-18 09:42

Karry先生、ご機嫌麗しゅう。
フィニックスでお見かけしたKarry先生はいつも怖そうでしたし,あるときなど,大勢のレディの前で私を指さして「ああいう男とは結婚しない方がいいよ」などとおっしゃっておられましたので,てっきりすっかり嫌われているものと思っておりました。

と,冗談はさておき。。。
学校,とっても順調みたいですね:-)。陰ながら応援してます!
機会があったら,お邪魔させてくださいね。どんなところか見てみたいです:-)。

Re:英会話教室 ENGLISH ART WORK

Posted by Anonymous User at 2008-09-18 14:25

Atsushi,

そんなことあったー???
いろんな人をクラスでJOKEでいじらせていただいていたので、
たぶんその被害者のおひとりだったのでしょうか。。。(笑)
そして反省。。。
それは悪かった!ごめんなさい!でもまったくの冗談です。
本当にそう思っていたら言わないですよ、そんなこと!

いつも怖そう。。。そう?
いつも楽しそうとは言われたことあるけどなあ。(笑)
あんまり接点なかったもんねー。
私のドラマクラスの人たちは私の性格のせいで
「クレージーで明るい人たち」と言われていたんだけど。。。

応援ありがとう。
Naomiと頑張っていますよ。
ぜひ一度遊びに来てください。

Karry

PS それと、あの「つぶやき」なんとかなりません?(笑)
  学校名検索すると「Karry先生はおれのこと嫌いみたい。。。」
  っていうフレーズがジャーンってあらわれるのですが。。。(笑)

Re:英会話教室 ENGLISH ART WORK

Posted by ats at 2008-09-18 15:36

>Karry先生

つぶやき,なんとかしてみました:-)
検索エンジンが結果を拾って書き換えるまでしばらく,検索結果には現れてしまうと思います
しばらくすると消えると思います,それまでゴメンナサイ!

Karry先生のクラスのドラマは,実はすごく僕の「ツボ」をついてくれて
たとえば映画化前の「ヘアスプレイ」とか,「ムトゥ」とか,「モモ」とか
あんなドラマやってみたいなあといつも思ってました(笑)
あ,「モモ」といえば,今KumiさんとTamuken君,Shojiさんと一緒のドラマクラスにいます
Yuは「ヘアスプレイ」チームのリーダーでしたよね
少しは「クレイジーで明るい」のが染ったかも?!

Re:英会話教室 ENGLISH ART WORK

Posted by Anonymous User at 2008-09-19 17:59

Atsushi,

なんとかしてくれてありがとう(笑)!
そんなに私のチームのドラマ見てくれてたんだー。
なんかうれしいです!
そして今ドラマやってるの?
そのチーム、どうやら個性的な人々がいるチームだから(笑)、
きっと楽しいドラマできるでしょう。

もうすぐ発表会ですねー。
がんばってね!

2.6に新搭載のmultiprocessingを見て俺のPythonがおっきした件

いやー,multiprocessingモジュールイイよ。パねえよ。要はプロセス間通信を行うときに便利なパッケージで,threadingと似たようなAPIなのでGILが回避できてマルチプロセッサとかマルチコアの性能を有効に使えてウハウハとか,リモートマシンにあるプロセスと通信したりオブジェクトをやりとりしたりできてウハウハとか,まあそういうモノです。これでおっきしない奴は技術者として大切な資質を失っていると思うよ。べつにおっきしなくてもいいんだけど,そういう奴とは一緒に仕事したくないよ。

ドキュメントのイントロダクションを超訳してみたです。


はじめに

multiprocessingはthreadingモジュールと似たAPIを使ってプロセスを生成するパッケージです。 multiprocessingパッケージはローカルとリモートマシンのプロセス並行制御をサポートしています。スレッドの代わりにプロセスを使うことで,GIL(Global Interpreter Lock)が起こす問題を効果的に避けることができます。multiprocessingモジュールを使うことによって,プログラマはマルチプロセッサの恩恵を十二分に享受できるようになります。このモジュールはUnixとWindowsで動作します。

Processクラス

multiprocessingでは,プロセスはProcessオブジェクトを作り,start()メソッドを呼ぶことによって生成します。Processクラスはthreading.ThreadクラスにならったAPIを持っています。マルチプロセスを活用したちょっとしたプログラムの例です。


from multiprocessing import Process


def f(name):

    print 'hello', name


if __name__ == '__main__':

    p = Process(target=f, args=('bob',))

    p.start()

    p.join()


このコードにあるf()という関数は,子プロセスで稼働します。

Windowsで「if __name__ == '__main__'」という部分が必要な理由については,「プログラミングガイドライン」を見て下さい。


プロセス間通信をするために,multiprocessingでは,2つの方法をサポートしています。


Queue(キュー)

QueueクラスはQueue.Queueとよく似ています。たとえば,次のような使い方をします。


    from multiprocessing import Process, Queue


    def f(q):

        q.put([42, None, 'hello'])


     if __name__ == '__main__':

         q = Queue()

         p = Process(target=f, args=(q,))

         p.start()

         print q.get()    # prints "[42, None, 'hello']"

         p.join()


Queueオブジェクトはスレッド/プロセスセーフです。

Pipes

Pipe()関数はパイプで接続した2つの接続オブジェクトを返します。デフォルトでは双方向通信を行うオブジェクトを返します。以下のような使い方をします。


    from multiprocessing import Process, Pipe


    def f(conn):

        conn.send([42, None, 'hello'])

        conn.close()


    if __name__ == '__main__':

        parent_conn, child_conn = Pipe()

        p = Process(target=f, args=(child_conn,))

        p.start()

        print parent_conn.recv()   # prints "[42, None, 'hello']"

        p.join()


Pipe()関数が返す2つのコネクションオブジェクトはパイプの2つの端のようなものです。それぞれのコネクションオブジェクトは反対の端と通信を行うためのsend()とrecv()メソッドを持っています。2つのプロセス(またはスレッド)が同時に,パイプの同じ側で受信,または送信をしようとすると,パイプの中のデータが壊れてしまうことがあることに注意して下さい。もちろん,パイプの両端で送受信をすれば,データが壊れるリスクはありません。


複数プロセス間の同期

multiprocessingはthreadingが持つ同期をするための仕組みを持っています。ひとつのプロセスだけが標準出力に出力することを保証するためにlockを使ったりできます。以下がサンプルです。

from multiprocessing import Process, Lock

def f(l, i):
    l.acquire()
    print 'hello world', i
    l.release()

if __name__ == '__main__':
    lock = Lock()

    for num in range(10):
        Process(target=f, args=(lock, num)).start()

他のプロセスからの出力をロックしてやらないと,出力が入り交じってしまうことがあります。

状態をプロセス間で共有する

直前に言及したように,たいていの場合,並行プログラミングを行うための最良の方法は,可能な限り状態の共有を避けることです。このことは複数プロセスを使ったプログラミングをするときには特にそうです。
とはいえ,どうしても情報を複数プロセス間で共有する必要がある場合のために,multiprocessingは手法を2つ提供しています。

共有メモリ

ValueやArrayを使うことによって,データを共有メモリ上に保存できます。以下がサンプルコードです。

    from multiprocessing import Process, Value, Array

    def f(n, a):
        n.value = 3.1415927
        for i in range(len(a)):
            a[i] = -a[i]

    if __name__ == '__main__':
        num = Value('d', 0.0)
        arr = Array('i', range(10))

        p = Process(target=f, args=(num, arr))
        p.start()
        p.join()

        print num.value
        print arr[:]

このコードは,以下のような出力をします。

    3.1415927
    [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

'd'と'i'という引数はarrayモジュールで使われる型コードです。numとarrオブジェクトの型を指定するために使います。'd'はfloat型,'i'は符号付き整数を示します。共有オブジェクトはスレッド/プロセスセーフになります。
より柔軟に共有メモリーを活用できるように,任意のctypesオブジェクトの生成をサポートするmultiprocessing.sharedctypesを使うこともできます。

サーバプロセス

Manager()が返すmanagerオブジェクトを使うと,Pythonオブジェクトを保持するサーバプロセスをコントロールできます。また,プロキシーを使って他のプロセスを操作できます。
Manager()が返すmanagerオブジェクトはリスト型,辞書型,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,ValueやArrayを扱えます。以下がサンプルコードです。

    from multiprocessing import Process, Manager

    def f(d, l):
        d[1] = '1'
        d['2'] = 2
        d[0.25] = None
        l.reverse()

    if __name__ == '__main__':
        manager = Manager()

        d = manager.dict()
        l = manager.list(range(10))

        p = Process(target=f, args=(d, l))
        p.start()
        p.join()

        print d
        print l

このコードは以下のような出力をします。

    {0.25: None, 1: '1', '2': 2}
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

複数サーバプロセスのmanagerオブジェクトは,共有メモリより柔軟です。なぜなら、managerオブジェクトでは任意のデータ型を利用できるからです。さらに,単体のmanagerオブジェクトは,異なるコンピュータ上にある複数のプロセス上でネットワークを通じて共有できます。ただし,managerオブジェクトは共有メモリよりも遅いのが難点です。

ワーカプールを使う

Poolクラスはワーカプロセスのプールの役割を果たします。Poolクラスのメソッドを使うと,タスクをワーカプロセスとして振る舞わせることができます。方法はいくつかあります。以下がサンプルコードです。

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=4)              # start 4 worker processes
    result = pool.applyAsync(f, [10])     # evaluate "f(10)" asynchronously
    print result.get(timeout=1)           # prints "100" unless your computer is *very* slow
    print pool.map(f, range(10))          # prints "[0, 1, 4,..., 81]"







The URL to Trackback this entry is:
http://coreblog.org/ats/multiprocessing-package/tbping

Re:2.6に新搭載のmultiprocessingを見て俺のPythonがおっきした件

Posted by Anonymous User at 2008-09-17 17:41

こ、これはやばいw

俺様Actorや、俺様Cache鯖が素直に実装できてしまうではないですかwww

線路関係の仕事しか振ってこない環境が嘆かわしい・・

英語劇で英語を学習 - The Presentation Days are comming !!

通い始めて二年目になる英語学校の発表会が週末に近づいてきました。発表会というのはこの学校独特のシステムです。生徒さんはプロジェクトワークと呼ばれる授業を履修して,半年かけて作品をくりあげて披露します。過去二回の発表会では,ディベートのクラスを履修しました。半年かけて特定のテーマについて英語で学び,知識や英語の語録をためて行き,当日に肯定/否定派に分かれてガチンコのディベートを繰り広げます。

今回はちょっと考えをかえて,もうひとつのプロジェクトワークドラマ(英語劇)のクラスを取りました。30分の持ち時間で英語のドラマを半年かけて作り,発表会で演じます。劇なんて日本語ですらやったことないし,学校に入った頃はまったく興味がなかったのですが,他の人がドラマを演じているのをみているうちに,なんとなく楽しそうに見えてきたとか,いろいろ理由はあります。

僕も役をもらって,舞台でつたない英語劇を披露します。演劇についてはまったく経験がないし,そもそもクール&ポーカーフェースで通っている僕なので,表情もボディランゲージもうまく作れません。ただ,何もしないより多少大げさにでもやった方がまだましだと思い,煮詰まっていることもあり週末に向けて徐々に壊れ始めていることろです。

僕の役はとにかく台詞の量が多いのが大変でした。覚えるだけでも大変なのに,発音,イントネーション,そのうえ相手役との掛け合いがあったり,ちょっとしたアクションがあったり。たまに「これのどこが英語の勉強なのだろうか」と思うこともしばしば。

これまでの英語の勉強で出来なかったこと,あらたな発見もたくさんありました。ここまで,単語一つ一つの意味や,「物言い」にこだわったことはなかったし,ここまで,多くの英文を自分の体にしみこませるように覚えたことありませんでした。英語の勉強というのは,結局のところ「自分の考えを,英語を使っていかに相手に伝えるか」という手段を学ぶことだと思います。そう考えると,この半年間はこれまでになくintensiveに,本来の意味での英語学習をしてきたと言えるような気がします。日本語をよく知っているネイティブの先生についてもらったのもとても良い経験でした。クラスメートもとてもモチベーションの高いひとばかりで,いろんな場面で支えられたような気がします。

ドラマのクラスを履修するのは今回が最後になると思います。今週土曜の発表会に向けて,悔いのないように,そして変な失敗をしないように全力を出し尽くしたいと思います:-)。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/lerning-english-with-drama-method/tbping

Re:英語劇で英語を学習 - The Presentation Days are comming !!

Posted by YUMA at 2008-10-01 19:53

ドラマってやると面白いよね。
やり終えたときの感動もまたすごいのよ。
(一応、経験者>自分)
土曜日はわからないけど、日曜日は見に行きます!
がんばってね!

Re:英語劇で英語を学習 - The Presentation Days are comming !!

Posted by ミミー at 2008-10-01 20:44

atsさんの劇、ぜひ見たかったけど、見に行けないの。
でも応援しています!がんばってくださいね♪
またどこかで一緒に英語話しましょう(^-^)♪

Re:英語劇で英語を学習 - The Presentation Days are comming !!

Posted by ats at 2008-10-01 23:00

知り合いに見に来られるのは,楽しような楽しくないような。。。

>YUMAさん
僕は土曜にしか出ないんです。日曜は裏方に徹します
スピーチコンテストの流れで,ディベートマッチは両日見に行きますよ:-)
土曜の予選に通ればですが。。。多分大丈夫だと思います

>ミミーさん
ありがとうございます!
おかこさんのお祝い,日にちが決まったらぜひ呼んで下さいね!

Re:英語劇で英語を学習 - The Presentation Days are comming !!

Posted by (石) at 2008-10-03 08:36

クールフェースで通していたatsさんが、人前で演劇なんてっ!

がんばってください。見にいけませんが応援しています。

Re:英語劇で英語を学習 - The Presentation Days are comming !!

Posted by ats at 2008-10-03 22:17

>(石)さん
恐縮です(^^;
英語の方が日本語より恥ずかしくないかも:-)
とにかくがんばりまーす!!

TOEIC上がった

昨日の午前中,外出の際に時間を作って英語学校に寄った。この学校はクオーターごとにクラスを履修する仕組みになっていて,発表会の終わった今くらいが丁度その区切り。ネイティブの先生に電話でアポ取って,履修のこととか話してきた。

年2回TOEICのIPテストを受けるんだけど,点数も聞いてきた。780だった。前回からは80点,自己最高記録からは30点上がった計算。特にリスニングがすごく上がったのが嬉しい。今回はReadingの問題がトリッキーだったらしく,「Atsushiの実力は実質800位だよ」と言ってくれた。850くらいはねらいたいと思っているので,もっとReadingのスピードを上げないと。。。前回はReadingの最後の2問が時間切れでできなかったので,ちゃんと時間があればもしかしたら。。。?

とにかくあと半年頑張ります。

Category(s)
英語学習
The URL to Trackback this entry is:
http://coreblog.org/ats/toeic-score-2008-10/tbping
Pythonな求人
r = urlopen("http://www.webcore.co.jp/recruit")
About this blog
■Author
atsこと柴田淳です。Atsushiはガイジンにうまく発音して頂けないので,これからはJunというペンネームで行こうと思っていましたがあんまり使ってません。
Webcore株式会社 代表取締役
■TRIVIAL TECHNOLOGIES 2.0
トリビアル・テクノロジー 2.0,「トリテク 2.0」と呼んでください。
Blog(ブログ)サイトです。Plone上で動く,オープンソースのBlog Product - COREBlog2を使っています。
 
最近書いた本,Mook
みんなのPython Webアプリ編
Pythonの基礎から,Webアプリやフレームワークの仕組みまで,つまることなく一気に学べる書籍です。「みんなのPython」と一緒に読んでください:-)。
みんなのPython
Pythonの入門書です。基本的なことから分かりやすく解説するよう勤めました。Pythonをはじめたいと思っている人,JavaやC++,PerlやRubyを学ぼうと思って躓いてしまった人はぜひ読んで下さい。