taiyopの雑多なブログ

普段学んだ事や取り組んだ趣味・嗜好をつらつらと書き綴っています。

Rubyistのための英語勉強会 西脇・神戸.rbに参加してきました!

兵庫県Rubyコミュニティ 西脇・神戸.rb の勉強会に参加してきました。 nishiwaki-koberb.doorkeeper.jp

今回は14名が参加され、常連から初めて参加された方までたくさんいました。 f:id:taiyop:20150905090752j:plain ※会場は神戸市東灘区にあるNilquibeというコワーキングスペースです。

何をしたか

英語で何に困っているかやなぜ英語を学びたいかを共有・議論しながらの実践練習をしました。 プログラマーならではの悩みや学習意欲を共有し、実践練習をして皆で英語力を上げようという感じです。

目次

英語の実力テスト

参加者は事前にアンケートで行われた自己申告制の実力評価をしていました。

しかし、

司会の@jnchitoさん
「まずは自己申告の実力と実際の実力が同じかテストしてみましょう。」

抜き打ちテストがありました。
weblioの英語問題集を使ったテストでした。
見栄張った方からすれば肩ガクガクな展開です。 (そんな人はいませんでしたがw) uwl.weblio.jp

実はコレ、個人的にはかなり難しかったです。 私の診断結果はレベル9でした! f:id:taiyop:20150829134721p:plain

正解を振り返ると、結構もったいないミスもあって英語感鈍ってるなーって感じでした・・・・。

英語で困っている事例やなぜ英語を学びたいか

抜き打ちテスト後は、皆で英語で困ってること・英語を学びたい理由を共有しました。 こんな感じのがあがっていました。

  • githubのREADMEやWikiを読むのがつらい。うまく流し読みが出来ず、時間がかかる。
  • OSSにコミットしたい。
  • 英語のジョークを理解したい。
  • 映画を字幕なしでみたい。
  • git commit logを書くときに悩む。分かりやすく書きたい。
  • エラーログを誤読してしまう。
  • 変数名悩む。
  • gitを「ジット」と言われた時に訂正しづらい。
  • 外国人プログラマーと会話したい。
  • 海外カンファレンスに参加したい。

自分も同じ悩みがあったりするので、「確かにそうだなー」という事ばかりでした。

良い英語の学びかた

Nilquibeを運営している@ymotoさんがスライド形式で教えてくれました。
(ちなみに@ymotoさんはweblioの抜き打ちテストで13点でした。)

HOW TO BUILD VOCABULARY f:id:taiyop:20150905220158p:plain

IT技術書を読むなら少なくとも6000語、新聞・雑誌・小説を読むなら12000語は必要とのことでした。
ちなみに教えてもらった学習方法で一番行いたいと思ったのが英英辞書です。
フィリピン留学をした事のある友人から「向こうでは英英翻訳で勉強していた」というのを聞いた事があり、 英語力の高い人は結構この勉強法を使っている印象です。

ダメなことは「本だけを使って覚えること」だそうです。 耳から覚えるのが大事で、本だけだと会話や聞き取りにつながらないためです。 書くときは英文チェッカーのようなものを使えば良いとのこと。仰る通りです!

ちなみに英英辞書には下記のようなものがあるそうです。
母国語の使う辞書を使うのではなく、外国人向けの英英辞書を使うのが良いとのこと!

その他、英単語の画像検索もやってみたいと思いました。
英語で画像検索すれば、イメージで英語を覚えられるので頭に残りやすくなるからとか!

ただし、

@ymotoさん「エログロ画像が出てきたりするので注意!!」だそうです。(笑
画像検索を使おうと思う方はうまく直感を働かせなければなりません。

実践ワークショップ

今回のワークショップではRubyist ConnectGithub Issueに取り組みました。 ※Rubyist Connectとは、Rubyistをつなげるコミュニティプラットフォームです。
開発をしながらコミットログの英語の書き方や変数名、メソッド名などを考えていきました。

取り組んだIssueはこれです。
メールアドレスを登録して、新しいメンバーの通知を受け取るようにしたい

ここではプロフィール登録をしたときにメール通知が来るという仕様でしたので、次の2つに分けて取り組んでみました。

  • 『メール通知を受け取るかどうか選択できる機能』
  • 『メール通知を受け取る設定の人ならば、新規Rubyist紹介の通知がくる』

最終的にはこんな感じになりました。
(最終的には更にリファクタリングされていますが。)

if @user.first_active?
  target_users = User.where(new_user_notification_enabled: true).where.not(id: @user.id)
  NotificationMailer.new_user_notification(target_users, @user).deliver_now
end

まず、『メール通知を受け取るかどうか選択できる機能』の開発で『new_user_notification_enabled』というカラムを追加しました。
メール通知を受け取るかどうかのフラグ情報を格納する所です。

カラム名には、他にも以下のような案が上がっていました。

  • enable_new_user_notification
  • require_email_notification
  • new_user_subscription
  • new_user_notificatable

subscription -購読- は個人的には良い案だなと聞いて思ったのですが、購読というには大げさな表現でメール通知するかどうかのための名前としては適切でないということで不採用でした。
enable_new_user_notificationやrequire_email_notificationだと動詞から始まっているのがメソッド名と同じ書き方で誤解を生みやすいということでこれらも不採用でした。
結果として、妥当なのが『new_user_notification_enabled』でした。

次に、『ユーザーがプロフィール登録されたら』という判別条件も英語で考えてみました。 これは英語というよりもドメインについての議論の方が難しく、例えば

  • ユーザーが初めて自己紹介をしたら?
  • ユーザーがアクティブになれば?

のどちらが良いかという議論がありました。
現在の処理をそのまま表すには「初めて自己紹介をしたら?」というのが正しいです。
しかし、「自己紹介を書いたら新規ユーザー通知される」というのは現時点の仕様での判別条件なので、今後は例えば「5人フォローしたら」などにチェック条件が変わる可能性があり、その際はメソッド名も変更しないといけなくなります。
ですのでここでは先々の変更も考慮して、条件の抽象度を上げて「アクティブになれば?」が採用されました。
(だいたいこんな流れで決まっていたような気がします。)

こんな感じで実践ワークショップをしていたのですが、同じ問題でも考えのプロセスがそれぞれなので聞いたり議論したりがすごく楽しかったです。考え方の視野が広がる感じでした。

ビアバッシュ懇親会

勉強会の後は皆でビアバッシュでした。
ビアバッシュでは普段聞かないプライベートな事も聞けたり話したり出来てこれもまた楽しい時間を過ごせました!

まとめ

西脇・神戸.rbでは初めての英語勉強会だったのですが、参加して良かったという感じです。
とても楽しめました!
今年に入ってからコードを書く量が群と減っており、趣味ではペンタブでのお絵描きやモデリングなどに手を出してしまっているのでプログラミングを書けていませんでした。
勉強会に行く事でプログラミングスキルの向上が出来るので個人的にはとてもいい機会をいただいているという感じです!
西脇・神戸.rbには2年は継続して参加しているのですが、未だに有意義だと思えるのはすごいなという感じです。

次は10/10,11のRubyプログラミングキャンプです。 nishiwaki-koberb.doorkeeper.jp

ここでは趣味プログラミングで作っているサービスの開発をする予定です。
まだ1名枠が空いているので、ご興味のある方はぜひ参加してみてくださいー!