Personal tools
Document Actions

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

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

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

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

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

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

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

Category(s)
英語学習

Python Code Reading 05

2008年10月10日(金)に,Python Code Reading 05を開催します。今回は標準モジュールinspectをとりあげます。このモジュールは,Pythonのクラスやモジュール,関数の情報を取り出すためのモジュールです。Pythonでは関数やクラス,モジュールはすべてオブジェクトです。たとえば,関数オブジェクトの持つアトリビュートには,関数名やドキュメント文字列など,様々な情報を持っています。inspectモジュールを使うと,その種の情報を手軽に取り出せます。inspectモジュールのソースコードには,その種のメタ情報に関するノウハウが詰まっています。Pythonの中身を覗くことが出来る,というわけですね。

今回は用賀のSunのセミナールームをお借りして開催します。参加希望の方は,ぜひお申し込み下さい:-)。

 

Python Code Reading 05

2008年10月10日(金)午後7時より開催のPython Code Readingの参加登録フォームです。Code Reading本体の開催後に,会場付近で懇親会を予定しています(参加費4000円ほど)。

お名前 選択肢 ひとこと
Takanao Endoh / MiCHiLU 勉強会と懇親会に両方参加 I love inspect!
+ケイヤ 勉強会と懇親会に両方参加 いつも楽しみにしています。もっとPythonのスキルをあげていきたいです。
shoma 勉強会と懇親会に両方参加 またよろしくお願いします
伊藤俊輔(fgshun) 勉強会と懇親会に両方参加 Python を今よりもっと好きになるために
小見 拓 勉強会と懇親会に両方参加 今回もよろしくおねがいします。
miyaduka 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
伊藤@b-mark 勉強会と懇親会に両方参加 やっぱり参加しないと
ura 勉強会にのみ参加(懇親会には不参加) よろしくお願いします
yusukei 勉強会と懇親会に両方参加 よろしくお願いします
山下 勉強会と懇親会に両方参加 inspectは前から気になってました
Hiiro 勉強会と懇親会に両方参加 よろしくお願いします
sho 勉強会にのみ参加(懇親会には不参加) 今回もよろしくお願いします。
mahtan 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
深澤 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
uemura 勉強会にのみ参加(懇親会には不参加) codereadingには初参加です。よろしくお願いします。
nori 勉強会にのみ参加(懇親会には不参加) 楽しみしてます。
Toc 勉強会にのみ参加(懇親会には不参加) 今回も宜しくお願いします。
kyoshida 勉強会と懇親会に両方参加 すみません、開始には遅れますが参加します。よろしくお願いします。
田村 公一 勉強会と懇親会に両方参加 突っ込みは優しめでお願いします。
稲田直哉 勉強会にのみ参加(懇親会には不参加) ドキュメント翻訳プロジェクト参戦者募集中!
hiromu 勉強会と懇親会に両方参加 よろしくお願いします。
michisu 勉強会と懇親会に両方参加 inspectしまくりたいです
Futoshi Tanuma 勉強会にのみ参加(懇親会には不参加) 前回は海外出張中で参加できませんでしたが、今回はよろしくお願いします。用賀の27階ですか?
Akimitsu Yamanouchi 勉強会にのみ参加(懇親会には不参加) 今回もよろしくお願いします。
三上隼人 勉強会と懇親会に両方参加 よろしくお願いします。
Hey8 勉強会にのみ参加(懇親会には不参加) 今回は仕事の状況がかなり微妙なので不参加かも知れません…
tomisima 勉強会と懇親会に両方参加 よろしくお願いします。
古跡 智仁 勉強会と懇親会に両方参加 仕事の状況によって遅れるかもしれませんが、よろしくお願いします。
 参加者数  28
申し込みフォームへ

Category(s)
python

人はいかに学ぶか - 日常的認知の世界

本書を読む読者のたいていは,冒頭で頭をガツンと叩かれる。多くの人が常識として抱いている「人間はすべからく怠け者で,強制しないと学習しない」という学習感を「伝統的な学習感」と名付けて否定されるからである。

著者は,様々な実例を紹介しながら,そのような伝統的な学習感が多くの場合間違っていて,人間とはいかに自発的に学習し,クリエイティブでありつつげるかをひもといてゆく。人間は生まれたときから世界と関わりたいという欲求を持っている。日常生活や学習の機会を通じて物事と関わりながら,時にはつまづいたり間違い,根底にある法則を見つけ,学習を進めてゆく。読者は丁寧に分かりやすく解説された教育心理学の研究成果を吸収しながら,徐々に「本当の意味で効果的な学習とは何か」について知り,確信を強めてゆくはずだ。

本書の最後では,次のような実例が紹介される。

一年生の学級で引き算の指導をしようと,次のような問題を出した。「男の子が十二人,女の子が八人います。どちらが何人多いでしょう」。
これは,比較問題とよばれ,分離問題(「男の子が十二人います。そのうち八人帰ったら,何人残るでしょう」など)よりかなり難しいことが知られている。
この問いに対し,大部分の子供は,これを正しく引き算ととらえ,「男の子が四人多い」と答えたが,五人の子供は,足し算ととらえ,「二十人」と答えた。そしてその中の一人は,その理由として男の子十二人から女の子八人を取ることができないではないか。だからこれは引き算ではない」と主張した。
この主張に対し,引き算組の子供は反論に詰まった。が,そのうち実際にやってみようということになり,男子十二人,女子八人が黒板の前に二列に並んだ。その結果,「やっぱり引き算でいい。十二人引く八人の十二人は男の子で,引く八人も男の子。でも八人の男の子は女の子と手をつないでいる男の子なんだ」という意見が出,皆,納得したのである。
教師から,その日の勉強で一番みんなの役に立ったのは誰かと問われたとき,子供たちは一斉に「男の子から女の子は取れない」という「まちがった」理由を出した子供の名前をあげたのだった。

最初から答えを押しつけるのではなく,また間違いについて子供たちに考察させることによって,比較問題とより難しいとされる分離問題についてより深く考察できた。能動的な学習がより深い理解をうながすというわけである。
本書は同著者の手になる「知的好奇心」「無気力の心理学」の続編とされている。どちらも絶版となっているが,よりアカデミックで,一般的な話題を扱っている。この書籍を読んで興味を持たれたらぜひAmazonなどから手に入れてこちの二冊も読んでみるとよいだろう。

 

Category(s)
misc

Pythonの勉強会,Python Code Reading 04開催しました

先週の金曜,Python Code Readingを開催しました。参加者は回を追うごとに微妙に増えていて,今回は会場の定員を上回り,補助椅子を使い切るくらいの参加者においでいただきました。具体的な数字はカウントしていないのですが,40名近くの方に来ていただいたようです。ご来場いただいたみなさん,ありがとうございました!

次回は,Pythonのモジュール,クラス,関数などの情報を取り出すモジュールinspectを取り上げる予定です。会場は,そろそろミラクルを卒業して,もう少し広いところに移るかな;-)。50人規模を収容できる会場を探さないと〜。

Category(s)
python

@ITに記事を書きました : 貧弱環境プログラミングのススメ

@ITに記事を書かせていただきました。貧弱環境プログラミングのススメというタイトルです。Coding Edgeというセクションにある「コーディング天国」というコーナーの記事です。

まつもとさん,小山さん,波田野さんなどLL界隈でよく名前を見かける方が書いていて,「若者に向けたメッセージ」的な内容を,というようなご依頼でしたので,開発者としての心がけみたいな話を書いてみました。ぜひお読み下さい:-)。

私はよい開発者になるための方法を知っています。弊社では若い技術者を募集中です:-)。

Category(s)
development

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]"







英会話教室 ENGLISH ART WORK

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

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

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

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

Category(s)
英語学習

Python Code Reading 04

第4回目となりましたPython Code Readingを2008年9月12日(金) 午後7時から開催します。場所は例によって新橋のミラクルリナックスさんです。

今回はstring.Templateモジュールを読みます。短いソースですが,テンプレートクラスの生成にメタクラスを使っているみたいで,いろいろと楽しめそうですよ:-)。

参加希望の方は以下のフォームからどうぞ。

Python Code Reading 04参加申し込みフォーム

2008年9月12日(金)午後7時より開催のPython Code Readingの参加登録フォームです。Code Reading本体の開催後に,会場で懇親会を予定しています(参加費1300円ほど)。

お名前 選択肢 ひとこと
+ケイヤ 勉強会と懇親会に両方参加 前回から参加させてもらってます。是非、レベルアップしていきたいので、よろしくお願いします。
山下 勉強会と懇親会に両方参加 当日を楽しみにしています。
t2y 勉強会と懇親会に両方参加 ライブラリの特徴を学ぶのにも役立っています。毎回、楽しみです。
小見 拓 勉強会と懇親会に両方参加 よろしくお願いします。string.Templateも使ったことがありません。楽しみです。
sho 勉強会と懇親会に両方参加 今回もよろしくお願いします。
tamura 勉強会と懇親会に両方参加 よろしくお願いします
nanri 勉強会と懇親会に両方参加 今回はじめての参加ですがよろしくお願いします
Hiiro 勉強会と懇親会に両方参加 初参加です。よろしくお願いします。
イアン・ルイス 勉強会と懇親会に両方参加 前回の読書会の予定を破れて本当にすみませんでした。今回宜しくお願いします。
田中徹 勉強会と懇親会に両方参加 よろしくお願いします
yusukei 勉強会と懇親会に両方参加 よろしくお願いします
Hey8 勉強会にのみ参加(懇親会には不参加) 今回は勉強会にのみ参加させていただきます。
深澤 勝 勉強会と懇親会に両方参加 よろしくお願いします
xsho 勉強会にのみ参加(懇親会には不参加) よろしくお願いします
nori 勉強会にのみ参加(懇親会には不参加) はじめての参加ですがよろしくお願いします
Akimitsu 勉強会と懇親会に両方参加 今回もよろしくお願いします。
ura 勉強会にのみ参加(懇親会には不参加) 今回もよろしくお願いします。
鶴木雅宣 勉強会にのみ参加(懇親会には不参加) よろしくおねがいします
みやづか 勉強会と懇親会に両方参加 よろしくお願いします
michisu 勉強会と懇親会に両方参加 勉強になってます
koyama 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
kaoru 勉強会と懇親会に両方参加 初参加です。よろしくお願いします。
fujisho 勉強会と懇親会に両方参加 01以来2回目です。よろしくお願いします。
gjo 勉強会と懇親会に両方参加 よろしくお願いします。
hotta 勉強会にのみ参加(懇親会には不参加) よろしく
ふるかわとおる 勉強会にのみ参加(懇親会には不参加) 魅惑のメタクラス。楽しみにしています。
shinriyo 勉強会と懇親会に両方参加 Pythonはまだよく分かりませんが、宜しくお願いします。
nmasato 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
Toc 勉強会にのみ参加(懇親会には不参加) 楽しみにしています。よろしくお願いします。
hkurosawa 勉強会と懇親会に両方参加 前回に続き2
渋谷 和弘 勉強会と懇親会に両方参加 この勉強会はいい刺激になるので、是非参加させていただきます。
金子健介 勉強会と懇親会に両方参加 初参加です。よろしくお願いします。
hiromu 勉強会と懇親会に両方参加 よろしくお願いします。
Takashi Matsuo 勉強会と懇親会に両方参加 メタ良いですね
おおたに 勉強会と懇親会に両方参加 今回はでれそう
ウエノ 勉強会と懇親会に両方参加
齊藤 淳 勉強会と懇親会に両方参加 まだOKですか?よろしくお願いします。
shrkw 勉強会と懇親会に両方参加 Templateha
nanzono 勉強会と懇親会に両方参加 初参加です。よろしくお願いします。
瀬戸口 勉強会と懇親会に両方参加 滑り込む感じで参加します。
徳武 北都 勉強会と懇親会に両方参加 よろしくお願いします。
稲田直哉 勉強会と懇親会に両方参加 よろしくおねがいします。
古跡 智仁 勉強会と懇親会に両方参加 初参加ですが、どうかよろしくお願いします。
きたむら 勉強会にのみ参加(懇親会には不参加) よろしくお願いいたします。
kitahara 勉強会にのみ参加(懇親会には不参加) よろしくお願いします。
katoh 勉強会と懇親会に両方参加 今回も参加します。メタ、楽しみにしてます。
 参加者数  46

Category(s)
python
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を学ぼうと思って躓いてしまった人はぜひ読んで下さい。
 

Powered by Plone, the Open Source Content Management System