2011-12-31

2011年を振り返って

資格試験

まあ散々といっていい結果に。

1月 英検準1級 (一次試験) 一次合格 (73点・合格点67点)
2月 英検準1級 (二次試験) 不合格A (19点・合格点22点)
6月 プロジェクトマネージャ試験 棄権 (-_-)
10月 ネットワークスペシャリスト試験 不合格 (午後Iで1点足りず(T_T))
12月 TOEIC IP 結果待ち

言い訳めいた感じになりますが、この年令になってくると、資格試験的なものに注力するという行為に熱意がわかない感じです。まあ、もともと資格それ自体に意味はないと思っていて、試験に合格するために(計画的に)勉強するということ自体にはそれなりに意義があるかも……と考えていますが、今年受けた試験は、どれもこれも事前にほとんど勉強していないという体たらく。

仕事

以前仕事で英語を使うようになって思ったことでも書きましたが、業務で英語を使うことが必須になりました。職場環境も大きく変わりましたし、初めての海外出張(ベトナム)にも行きました。ベトナム出張はなかなかエキサイティングな体験だったのですが、Twitterでいろいろ書いてしまったせいか、どうもブログに書く気が起きなくてそのままになっちゃっています。

開発

いくつかアプリやサービスを作りましたが、まともな完成度まで達したのはTwiKnow!くらいですかね。Androidアプリにしても、開発環境だけ整えたものの、結局何も作っていない……。

英語学習

年の始めにsmart.fm終了→新iKnow!という大きな動きがありましたが、今のところ引き続き新iKnow!での英語学習は継続できており、英語学習の面では大きな影響はありませんでした。ちなみに、今年一年の通算学習時間は255時間でした。

英語学習において、iKnow!だけしかやっていないのはどうなのか、他にも何かやるべきではないか、というのは2年くらい前から感じていることですが、毎年定期的に受けているTOEIC IPテストのスコアは有意に上昇し続けているので、まあ今のままでもいいか、と現状のままにしているという経緯がありました。

しかし、(今年のTOEIC IPの結果はまだ出ていないものの、)TOEICスコアがどうこうという話ではなく、職場で英語で苦しんでいる今、もっと実践的な英語運用能力を身につけないとダメだということを実感しています。なので来年は、とりわけ今苦しんでいる英会話と英文ライティングを何とかするためのトレーニングをやりたいと思っています。

英文ライティングといえば、今年はLang-8にも登録したのですが、結局ほとんど日記を書かないままに終わってしまいました。仕事で毎日英文メールを書くようになってからは、仕事であれだけ苦労しているのにプライベートでも英語で日記を書く気になれない感じです。

来年に向けて

仕事で英語が必要になったこともあり、今まで以上に英語学習に注力する方向でがんばろうと思います。

2011-10-08

weblio英単語帳のデータをCSV形式にして出力するブックマークレット

weblio英単語帳のデータをCSVデータにするブックマークレット

weblioという辞書サイトにて「weblio語彙力診断」というクイズ形式の実力診断テストがあり、時折やっています。また、このサイトには「英単語帳」というサービスがあり、前述のテストにて不正解だった単語をクリックひとつですべて登録することができます(要ユーザー登録)。

しかし、この語彙力診断テスト、正解するたびにどんどん難易度の高い単語が出てくるので、テストをするたびに常に不正解の単語がいくつか出てくることになり、その度に単語帳に登録していくと単語がたまる一方。むろん、不正解した単語をきっちり覚えこんで単語帳から削除すればいいのですが、英単語というのはそんなに簡単に覚えられるものではありません。できれば、この不正解単語リストを他の学習システムに持って行きたいところです。

しかし、このweblio英単語帳のサービス、新たな機能がどんどん追加されているのはいいのですが、単語帳データのエクスポート機能というのは今までサポートされていませんでした。で、先日「登録単語のエクスポート」という機能が追加されたので試してみたのですが、本当に「単語」だけが並んでいるリストで、ちょっと使い物になりません。

そういうわけで、画面に表示されている単語帳のデータをCSVデータにして、画面上部のテキストボックス内に表示するブックマークレットを作ってみました。表示されたCSVデータを全選択→コピーして、メモ帳などにペーストして、拡張子をcsvとしてセーブすれば、Excelなどのソフトで扱うことができます。

本当は、CSVデータを元にiKnow!のカスタムコースを作る仕組みを作りたいのですが、こちらはおいおい進めていきます。

余談

当初はPerlスクリプトにて、WWW::MechanizeとWeb::Scraperを使った形で実装していたのですが、Perlスクリプトという形態では使えるユーザーが限られてしまうのと、weblio英単語帳にアクセスするためには「ログイン」が必要なことを考えて、ブックマークレットという方式に移行しました。前者の問題は「PAR (Parl Archiving Toolkit)」とかを使えば何とかなりそうですが、後者の問題がちょっと面倒です。

技術的には、Mechanizeではログイン処理も普通にサポートしていますし、実際にweblio英単語帳にログインする処理も簡単に実装できたのですが、ログインにあたっては当然「パスワード入力」が必要で、そこがやっかい。得体のしれないPerlスクリプト(あるいはそれをコンパイルした実行ファイル)に、ユーザーIDとパスワードを入力したい人はいないよなー、ということで、ブックマークレットで逃げることにしました。

2011-09-18

仕事で英語を使うようになって思ったこと

7月頃から仕事の内容が変わり、業務において日常的に英語を使うようになりました。まあ、「英語漬け」などというにはほど遠い環境で、英語を使うとはいっても一日に英文メールを数通くらい出す程度で、あとは週一でのTV電話会議くらいです。それでも、コミュニケーションのツールとして英語を本格的に使うのは初めてで、色々と感じるところがありました。そろそろ今の業務も2ヶ月が過ぎて慣れてきた感があるので、当初感じたことを残しておこうかと思います。

道具としての英語の便利さ

まず思ったのが、「日本語が分からない人とでもコミュニケーションができるのは便利」ということです。今までコミュニケーションの道具として英語を使った経験がほとんどなかったので、「(日本語が分からない)海外の人とも英語で意思の疎通ができる」というのは新鮮でした。

また、これは英語と直接は関係しない話ですが、文章を書く際に「かな漢字変換」という操作がなくて済むというのは快適に感じました。いかに最近のかな漢字変換の精度が上がったとはいえ、誤変換がまったくない訳ではありませんし、そもそもそんな操作を必要としないというのには勝てません。綴りが正しいかどうか不安に思うときもありますが、メーラーにせよワープロソフトにせよ、たいていのソフトはスペルチェッカー機能があるので問題ありませんし。

道具として用をなさない

次に思ったのが、もうちょっと英語の能力を磨かないと道具として用をなさないということです。特に、TV電話会議にて痛感したのが「話す・聞く」スキルの低さ。こちらから言いたいことをうまく英語で言えない上、向こうが何を言っているのか分からないという状態。相手もネイティブスピーカーではなく、(我々同様)発音にかなり癖があるのは事実ですが、単語を一つ聞き逃しただけで、文全体の意味をつかめないようではいけません。結局「あとでメールで伝えてね」みたいなことを言ってしのぐケースが多発しています。

メールのやり取りなどの「読む・書く」という局面においても、やはり問題は多いのですが、こちらは時間というリソースと引き換えにすることでなんとかできるのが救い。とはいえ、一通のメールを書くのに何十分もかけていては仕事の効率が悪すぎるというものです。こちらも何とかしないとな……。

今まで、いかに「試験勉強」として英語学習をしていたかということを思い知らされました。TOEICのリスニングパートでは、言っていることをちゃんと理解していなくても正解を選ぶことはできますが、仕事の場で英語でコミュニケーションするにあたっては、それでは困ります。

今後の英語学習の方向性をどうするか?

どうするもなにも、「読む・書く・話す・聞く」の4技能すべてにおいて全然だめな状態であることが明白で、どこから手をつけたものかという感じです。今の業務を続けていれば自然に英語能力も上がっていく……のならいいのですが、現状、仕事における英語の使用頻度がそこまで高くないので、別途何らかの強化が必要です。どうしようかな……。今まで半ば惰性で続けてきた英語学習の方法を見直すべき時かもしれません。

2011-07-28

Google Chromeの音声入力機能を英語学習に応用できないか?

音声入力で遊ぶ

遅ればせながら、Google Chrome 11から音声入力機能が追加されていたことを知りました。バージョン番号を言われても、Chromeの場合はあまりバージョンを意識することはないかと思いますが、普通は自動アップデートされているため、ほとんどのChromeでサポートされているはずです。

使い方は簡単で、以下のように、従来のテキストボックス(input要素)に"x-webkit-speech"を追加するだけです(HTML5の本来の仕様では"speech"だけでいいみたいですが、現状のChromeでは"x-webkit-"のプレフィックスが必要みたいです)。また、lang属性で明確に言語を指定しておくと、認識精度が向上します。

English: <input type="text" lang="en" speech x-webkit-speech>
日本語: <input type="text" lang="ja" speech x-webkit-speech>

Google Chromeを使っていてマイクを持っている方は、以下のテキストボックスで実際に音声入力を試してみることができます。右端のマイクアイコンをクリックすると音声入力待ちの状態になりますので、マイクで何かしゃべってみてください。

English:

日本語:

英語学習への応用

こういう面白いものが簡単に使えるとなると、これを応用して英語学習に活用できないものかと考えてしまうわけです。ぱっと思いついたのは、いわゆる「瞬間英作文」のトレーニングを、マイク入力をからめてインタラクティブ性のあるアプリっぽく仕立てることで、退屈さを少しでも紛らわせることができないものかと考えました。具体的にはこんな感じです。「回答」の欄に音声で英文を入力すると、「正解」の欄に正しい英文が表示されるはずです。

問題:

回答:

正解:

しかしながら、実際にやってみると分かるかと思いますが、(少なくとも私の発音では)認識精度に難があり、機械的に正解かどうかを判断させるのはとても無理そうです。仮にアプリ仕立てにするとして、正解/不正解の判断は人間側にやらせるほうが無難そうです。

また、現状のChromeのつくりでは、音声入力を開始する際にはいちいちマイクアイコンをクリックする必要があり、トレーニングをテンポよく進めることができないのではないかという懸念もあります。このあたりは、一度プロトタイプを作ってみないことには判断できないかなあ……。

2011-07-24

TwitterでOAuthを使う際の不満点

iKnow!の学習結果をTwitterでツイートするTwiKnow!というサービスをテスト公開していますが、他人のTwitterタイムラインにツイートするにあたり、OAuthという技術を使っています(OAuthについて詳しくは説明しません)。

で、TwitterでOAuthを使う際に思ったのですが、出来ることが多すぎるのがちょっと嫌な感じです。以下はTwitterのアプリ認証の画面ですが、「次の動作が許可されます」とあるリスト内に「新しくフォローする」とか「プロフィールを更新する」とか、穏やかでない内容が並んでいます。Twiknow!は「ツイートする」の機能しか使わないんですけどね。なんだか痛くもない腹を探られる感じです。

TwitterのOAuth認証画面

見てのとおり、アプリ認証画面の右側には開発者によるアプリの説明文も表示されるので、ここに「このアプリではツイートすることしかしません」みたいなことを記載するという手もありますが、それはそれで筋が悪い感じがします。OAuthの認可において、ユーザーが信用していいのはあくまでTwitter側が出す説明文のみであるべきで、開発者側の出す説明文を信用して認証するような風潮が蔓延すると、裏でこっそりとプロフィール更新やら新規フォローなどをしでかすアプリを安易に認証してしまうことにつながりかねません。

この件についての正しい解決法は、Twitter側がOAuthで可能な操作を細分化して、アプリ側では必要最小限の権限だけを取得するようにする、ということになるのでしょうか。聞くところによると、以前のTwitter OAuthでは、単にツイートするだけのアプリでも、ダイレクトメッセージへのアクセスができてしまう権限までついていたようなので、今の状態でもある程度は改善していると言えるみたいですが……。

2011-06-29

iKnow!の学習結果をTwitterでツイートするサービス「TwiKnow!」テスト公開中

TwiKnow!

今月初めから開発を開始して、ようやっと仮公開にこぎつけました。smart.fm終了後、まだiKnow!で勉強をがんばっていて、なおかつTwitterを使っている方は、ぜひ使ってみてくださいね。ただし、まだテスト中で、動作テストもあまりできていないので、まずいことが起こる可能性もあります。その点はご了承ください。

Twitter上でお知らせしたところ、すでに十数人くらいの方に使っていただいているようです。このサービスは、(下の「開発理由」にあるとおり、)ユーザーが多くなればなるほど効果が出てくるものなので、どんどん広まって使ってもらえればいいなと思っています。

開発理由

現在のiKnow!は、かつて存在していた語学学習SNSサイト「smart.fm」が前身となっています。smart.fmの頃は、自分のフレンド達の学習状況が逐一ホーム画面に流れていて、それをきっかけとしたユーザー間の交流があったり、あるいは周りの人の頑張りに刺激されて自分のやる気に結びついたりするなど、学習のモチベーションを保つのに一役買っていました。

しかしながら今のiKnow!は、smart.fm時代に充実していたコミュニティ機能はすべて無くなってしまい、自分ひとりだけで学習を進めるストイックなサイトになっています。

そこで、かつてのsmart.fmのフィーチャーをTwitterで再現させて、孤独な学習を耐え抜くための一助にしたいと考えた次第です。

http://twiknow.appspot.com/

2011-06-05

iKnow!の学習結果を通知するサービス「TwiKnow! (仮)」

以前にも書きましたが、英語学習SNSのsmart.fmが3月末で終了したことに伴い、新サービスiKnow!に移行して、毎日の英語学習を細々と続けています。しかし、新iKnow!にてSNS要素が完全に撤廃されたことは思ったよりもモチベーションに対する影響が大きく、4月以降の勉強時間がガタ落ちしている状態です(4月から急に仕事が忙しくなったこともありますが……)。

smart.fmのSNS機能では、自分とまわりのフォロワーとの間で学習状況の情報が通知されるようになっていて、他の人が頑張っているのを見て自分も頑張って学習する、といった正のフィードバックが回っていました。幸い、smart.fmで知り合った人々の何人かとはTwitter上でフォローしている関係にあり、今でも継続してiKnow!で学習を続けているユーザーもいます。

そこで、毎日のiKnow!の学習時間をTwitterでtweetするサービスを作ってみようかなと考えています。大昔、まだsmart.fmでなく(旧)iKnow!だったころは、「おめでとうございます! 学習アイテムが1000アイテムに到達しました」みたいなメッセージも出ていたので、そのあたりも再現したいところです。こういった通知メッセージのtweetで、iKnow!学習者間でのコミュニケーションのきっかけになればいいなと思います。

サービス名は「TwiKnow! (仮)」とします。サービス内容からしてこれしかない、という感じの名前です。プラットフォームは例によってGoogle AppEngineです。AppEngineだと、おあつらえむきに、一日一回タスクを起動するといったことが簡単にできるので楽そうです。とりあえず、「twiknow.appspot.com」のドメインを取っておきました。

現在、OAuthについて調べながら実装していますが、TwitterでOAuthを使う時って出来ることが多すぎるため、痛くもない腹を探られる感がありますね。単にtweetしかしないサービスなのに、OAuthの認証画面でアプリが出来ることのリストには「新しいユーザーをフォローする」とか「プロフィールを更新する」などと書かれていたりします。もっと細分化してほしいなあ。

2011-05-31

残り人生を見える化するアプリ「Lifetime Calendar」

Lifetime Calendar

ここしばらく非常に多忙な状態が続いていました。忙しいと、あっという間に月日が流れていく感覚があり、気がつけば5月も終わりです。このままでは1ヶ月後に「今年ももう半分過ぎた」などと言っているに違いありません。忙しくなってくると、一週間の仕事の疲れがたまって土日を無為に過ごすことも多くなり、人生無駄にしている感がつのる一方です。

さて、少し前から、Twitterでのタイムライン上で「@foobar は12345日生きた。人生あと17655日しかない。今日は有意義だったか?」といった感じのTweetが定期的に見られるようになりました。これは30thouというサービスからのTweetで、人生は30000日と仮定して、今まで何日生きて、あと何日残っているかというのを数字で意識させるようにして、一日一日を有意義に生きるようにしよう、という趣旨のメッセージのようです。

これを見て、興味深いと感じると同時に、「日数の数字だけでなく、もっとビジュアル的な表現はできないかな」と思いました。いわゆる「見える化」というやつでしょうか。で、ぱっと思いついたのが、1年(12ヶ月)分のカレンダーを3×4の形で並べたものを、さらに一生分(例えば80年分)並べるというものです。

百聞は一見にしかず、というわけで、さくっとWebアプリとして実装してみました。HTML5のcanvas要素を使用したので、サポートしていないブラウザでは動きません(端的にはIE8)。ご了承ください。

Lifetime Calendar (実際の表示例)

しかし、こうやって改めて可視化してみると、一日が一個の長方形に相当するとして、一生全体でたったこれだけしかないのかという気持ちになりますね……。

スクリーンショット

Lifetime Calendar

カレンダー内の文字は、自前で5×5ピクセルの英数字フォントをでっち上げて描画しています。現状、canvas要素におけるテキスト描画はいまいち怪しいので……。また、「Save As ...」のボタンを押すと、カレンダーをPNG画像として保存できます。

Lifetime Calendar

生年月日の入力には、jQuery UIの「Datepicker」を使っています。「PLEASE ENTER YOUR BIRTH DATE」のメッセージは、わざわざcanvas要素で描画する必要はなかったのですが、せっかく自前でフォントを作ったので使ってみました。妙な雰囲気になったかも。

2011-05-14

オーディオプログラミング言語「ChucK」をさわる

ちょっとした音データを作る必要があって、何かいいツールはないかと探していたときに、「ChucK」という言語(「オーディオプログラミング言語」だそうです)を知りました。これはなかなか面白そう。音声データの編集(エフェクトとか)や、音ネタをさくっと作るときなんかに重宝しそうです。

まずは"Hello, world"代わりに、適当に音を出すプログラムを書くとこんな感じになります。懐かしのPC-98の起動音(「ピポッ」てやつです)を鳴らして、wavファイルにも出力するプログラムです。出力結果はこちら(pc98.wav)。

SqrOsc osc => WvOut wout => dac;

0.1 => osc.gain;
wout.wavFilename("pc98.wav");

osc.freq(2000);
100::ms => now;
osc.freq(1000);
100::ms => now;

ChucKの言語仕様は少し独特な感じですが、見れば何となく分かるかと思います。まずは、いろんなモジュール(ChucKでは"UGen"(unit generator)というようです)を「=>」という演算子(「ChucK演算子」と呼ぶらしい)でつないでいって、最終的に「dac」に渡すように結線します。そして、「now」に経過時間を入れることで時間が進み、時間経過に伴って結線に従った音が鳴るという流れのようです。

ちなみに、「WvOut wout」は、音声データをファイル出力するために噛ませているもので、外しても音は鳴ります。逆に、音声ファイル出力だけやりたい(その場で音は鳴らさない)場合は、dacの代わりに「blackhole」という /dev/null 的なUGenにつなげればOKです。

ChucKで組み込みで用意しているUGenのリストを見ると、矩形波・のこぎり波・フィルタ・エンベロープ・リバーブ・コーラス・FM・etc...といった、シンセ方面でよく見かけるものが揃っていて、いろいろと楽しそうなことができそうです。

以下は、エンベロープで整形した矩形波を3和音で鳴らし、リバーブとコーラスをかけたサンプルです。「♪セーガー」ってやつですね。出力結果はこちら(sega.wav)。

2011-05-04

iKnow!の「チェックポイント」について

ここ最近非常に忙しくて、日々の勉強もほとんど出来ていない状況です。先月(4月)のiKnow!の勉強時間は、わずか「8時間51分」とのこと。今年に入ってから、1~3月の勉強時間は、26時間・23時間・24時間と推移していたのですが、ここにきて勉強しない(できない)ことが常態化しつつある状況で、よくない傾向です。しかし、さすがにゴールデンウィークはある程度は休めそうなので(本当は10連休の予定だったのですが)、久々にiKnow!をやっています。

で、久しぶりにiKnow!を使っていて気づいたことについてメモしておきます。新iKnow!には「チェックポイント」というものがあって、公式の説明では以下のように記載されています。

iKnow! アプリケーションでは、コースプログレスが10%増加するごと(10%、20%…)にチェックポイントというイベントが発生します。

チェックポイントに達すると、次の学習セッションはこれまでの確認も兼ねてトレーニングアプリを用いた学習となります。

http://iknow.jp/faqs/361

しかしながら、iKnow!ユーザーでも、上記のようなチェックポイント到達のイベントを一度も見たことがない方もいるかと思います。どうも、このチェックポイントがあるかどうかは、コースによって違っているようです。簡単に言うと、smart.fm時代のコース(昔は「ゴール」という名前でしたっけ)にはチェックポイントはなく、新iKnow!向けのコースでのみチェックポイントのイベントが有効になっているようです。smart.fm→新iKnow!の移行時に、内容としては同じなのに、100アイテム前後で小分けされた新コースがたくさん追加されましたが、これらのコースは新iKnow!向けのコースに相当します。

このチェックポイントイベントの有り無しですが、実は画面を見れば一発で分かります。チェックポイントのあるコースでは、進捗を表すグラフで10%毎に印がついています。単なるデザイン上の要素かと思っていましたが、それだけではなかったんですね。今頃になってようやく気づきました……。

iKnow! progress bar (new)

iKnow! progress bar (old)

2011-04-21

Japanese 8-bit games: Are they suitable for learners of the Japanese language?

As you can see from my profile icon, I like video games. And the icon also shows that I'm the kind of person who cannot follow the latest trends of video games.

Well, there seem to be many people studying Japanese on Lang-8. However, the Japanese language is not easy to learn, I guess. Normal Japanese sentences consist of hiragana, katakana, and kanji characters without breaking spaces. I think that such Japanese sentences are not easy to read for beginners of Japanese.

Meanwhile, most Japanese 8-bit games didn't use kanji on screen because of the limitation of performance. They displayed messages in hiragana and katakana without kanji. And they left a space between words in the sentence for readability.

A screenshot of DRAGON QUEST II

  • 「まさおは わたすふりをしたが けっきょく じぶんで もった。」(original)
  • 「まさおは渡すふりをしたが、結局自分で持った。」(normal Japanese)
  • "Masao pretended to hand in an item, but took it back after all." (English translation by me)

Such Japanese sentences seem to be understandable for learners of Japanese. What do you think?

2011-04-17

Monster surprised you.

たまには趣向を変えて、ゲーム(video game)の話を。自分のアイコンにこんな画像 を使っているのでお分かりかもしれませんが、私はそれなりにゲームが好きです。そして、これもアイコン画像から想像がつくかもしれませんが、昔はゲーム好きだったものの、最近のゲームにはあまりついていけていない類の人間です。(ちなみにこのアイコン画像は、ファミコンの「ドラゴンクエストII (1987, エニックス)」に登場するキャラクターのドット絵です)

さて、ゲームと並んで、ここ数年で私の中で興味のあることの一つとして「英語学習」が挙げられますが、ゲームと英語学習といえば、私の中ではファミコン版「Wizardry」が思い浮かびます(非常に有名なゲームなので説明は割愛)。このゲームはアメリカのゲームで、当然ゲーム内の文章は英語なのですが、ファミコンに移植された際に「日本語/英語のメッセージ切り替え」というフィーチャーがサポートされました。これを意識してか、ファミコン版Wizardryのパッケージや広告には「このゲームは、13歳以上の方に特にオススメします。Ages 13 to adult.」というフレーズが書かれており、妙に意味深な雰囲気があったのを今でも覚えています。

で、当時私も「13歳以上」である中学生の頃にこのゲームにはまったわけですが、「英語モード」の文章は、中学生の英語力ではまったく太刀打ちできませんでした。それでも、日本語モードと照らし合わせることで「“piety”というのは“信仰心”という意味か」みたいな感じで(非常に偏った方面の)ボキャブラリ増強につながった……かもしれません。

しかし、ちゃんと辞書を引いて調べていたわけではないので、間違った理解をすることもしばしばでした。英語モードでは、敵から先制攻撃を受ける際に「MONSTER SURPRISED YOU」というメッセージが表示されるのですが、これを見ててっきり「surprised」というのは「先手を取る」とか「機先を制する」といった意味なんだろうとしばらく思い込んでいました。後から「surprise」の本当の意味を知ったときには文字通り驚いたものです……。

Wizardryの画面写真(わざわざファミコンをひっぱり出してきて撮影しました)

今あらためて見ると、「THE MONSTERS SURPRISED YOU.」の方がしっくりくる気がしますが、どうなんでしょうね? 日本人にとって、冠詞や複数形についての感覚を理解するのは難しい……。

iKnow!の画面幅を広くするユーザーCSS

(2011年5月19日追記: 本件、5月17日のiKnow!のアップデートにて解決した模様です。そのため、現在では本記事のユーザーCSSを適用すると逆に表示がおかしくなります)

ここ最近非常に忙しく、せっかく料金を払ったiKnow!も活用できていません。勉強時間が少ない毎日が常態化してしまい、よくない傾向です。なんとかしなくては。

ところで、iKnow!を使っていて前々から気になっていたのですが、例文が長い時に、文章の配置がかぶってしまい、非常に読みづらくなる場合が多々あります。例えば以下の画面のような状態です。

iKnow! window (normal)

iKnow!のサポートフォーラムでは前々から上がっていた問題なので、いつかは改善するかと思っていたのですが、いつまでたっても直らない模様。表示上の問題なので、簡単に解決しそうなものなのですが。

そういうわけで、ユーザーCSSを使って自力で解決することにしました。iKnow!の学習アプリはウェブアプリなので、HTML・CSS・JavaScriptで構成されています。ネイティブアプリやFlashアプリと異なり、ユーザー側からいろいろちょっかいを出せます。

作成したユーザーCSSは、Gistに置いておきました。<https://gist.github.com/923850> これを適用した結果は以下のとおりです。まあ、こんなところでしょうか。

iKnow! window (widened)

残念ながら、CSSではウィンドウサイズを変更することはできないので、学習アプリのウィンドウ幅については自分で広げてください(最大化するのが手軽だと思います)。また、ユーザーCSSの使い方については、適当に検索して調べてみてください。

2011-04-02

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット・その2

以前、「studylog(スタログ)」でiKnow!の学習時間を入力するためのブックマークレットを作成しましたが(参照)、数日前からstudylog側の学習時間入力画面のHTMLが変わったため、使えなくなってしまっていました。まずは取り急ぎ修正しました。

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット

注意点(前回の記事と同様です)

  • studylogでは「参考書」としてiKnow!の学習時間を管理することになりますが、参考書のテキスト名には「iKnow」(または「smart.fm」)の文字列を入れておいてください。
    • これを元に、自動入力するフォーム部品を探します。
  • studylogでは勉強時間を「5分単位」で入力するようになっているため、iKnow!での学習時間は5分単位で切り捨てした時間が設定されます。
    • ただし、「0分より上、かつ、5分未満」の場合のみ「5分」として扱います。
  • このブックマークレットでは、studylogの画面上のフォームに学習時間を設定することしか行いません。学習時間の送信は行いません(自分でボタンを押して送信してください)。
  • ブックマークレットの冒頭に「javascript:(function(){var uid=''||~」という感じで「uid」という変数を定義していますが、ここに自分のiKnow!のIDを入れてください(「var uid='en45'」のように)。
    • そうしないと、ブックマークレット実行時に毎回自分のIDを入力しないといけなくなります。

2011-03-31

今後の英語学習について

新iKnow!は継続する方向で

来月からの新iKnow!に備え、ファミリーマートでオンラインマネーを4200円購入しました。ファミリーマートの端末からだと1円単位で購入できるので、端数が発生しなくて便利です。クレジットカード払いでもよかったのですが、あまりカード番号をさらしたくなかったので、後腐れのないプリペイドカード決済を選択しました(とりあえず今回はウェブマネーで)。現時点では決済方法がよく分からないのでちょっと不安ですが(「手数料として105円必要なので4200円きっちりでは足りません」みたいなことを言われたら泣きます)。

とまあ、一応私は新iKnow!を継続することにしたのですが、正直なところ現時点での新iKnow!のアプリに満足しているわけではありませんし、今後のサービスの改善についても特に期待しているわけではありません。ただ、現在まがりなりにも毎日smart.fmで勉強することが習慣になっているので、定着した習慣を途切れさせたくないために「現状維持」を目的として新サービスに加入することにしました。

そういう心境なので、新iKnow!に移行したところで、今までどおり淡々と細々と学習を続けることになりそうです。「せっかくお金を払っているんだから、しっかり活用しないともったいない」みたいな気分にでもなれば、日々の学習時間も多少増えるかもしれませんが、個人的には高々4200円程度の金額ではそんな気にはなりそうにありません(仮に「12000円」であったとしても同じでしょうね)。

今後の英語学習について

とはいえ、今後の英語学習のことを考えたとき、iKnow!を続けるだけで本当にいいのか、という気持ちもあります。例えば先日の英検準1級受験では、一次試験はそれなりの点で通過できたものの英作文の評価はいまいちで、二次試験ではさっぱり話せずに撃沈したわけで、アウトプット能力を向上させる必要があるというのは明白です。当然ですが、iKnow!ではアウトプット能力の強化は見込めません。まあ、一次試験をパスできたのはiKnow!の学習による効果もあったと思うので(特に語彙)、iKnow!はこれはこれで続けるとしても、他の学習方法も考えないといけません。

アウトプットにはライティングとスピーキングがありますが、ライティングについてはやはり「Lang-8」でしょうかね。Lang-8については以前から気になっていたのですが、定期的に更新できそうな日記のネタがないのがネックで二の足を踏んでいました。ですが、細かいことをあれこれ考えずに、まずは始めてみましょうかね。そういえば今になって思うと、以前smart.fmのサイトで書いていた「どうぶつの森日記」はLang-8向けだったかも。あのゲームは海外のプレイヤーとの交流もできましたし。

スピーキングについては、現状では自分の言いたいことを英語にするのに時間がかかってスムーズに文章が出てこないという状態で、これについては「瞬間英作文」のトレーニングが効果的そうだと思っています。しかし、テキストは用意したものの、時折思い立ったときに取り組んでいる程度で、とても定期的に続いているとは言えない状態です。私は本当に書籍ベースの勉強が苦手なんですよね……。

studylog(スタログ)に登録するも……

書籍ベースの勉強を継続するため「スタログ」というウェブサービスにも登録してみました。これは、毎日の勉強時間を記録するようにして達成感を得られるようにしてモチベーションアップを図り、勉強を継続できる正のフィードバックを形成する、という趣旨で、まだ3月に始まったばかりのサービスです。私の勉強記録はこちらになります。<http://studylog.jp/en45masao/>

いまどきのウェブサービスにはソーシャルな要素は欠かせませんが、このスタログにも、Twitter等の外部サービスとの連動の他、「サポーター」というシステムがあります。サポーターは、ユーザー(学習者)の勉強記録を見たり、コメントを残したりすることができるとのことで、ユーザーを励まして、学習継続の支えにする役割のようです。

このシステムを知ったときは、今のsmart.fmのSNSみたいな学習者同士のコミュニティができるかも……と思ったのですが、あまりそういう感じではないようです。どうもこのサポーターというのは家族や友人などの身近な人を想定しているようで、サポーターになってもらうにはメールベースでの承認という(けっこう敷居の高い)プロセスが必要とのことです。ユーザー(学習者)同士が知り合うコミュニティも用意されていないので、知らない人同士が(「フレンド」や「フォロー/フォロワー」みたいな感じで)「サポーター」になるというのもあまりなさそうです。

それはさておき、studylogへの登録完了後、「瞬間英作文」のトレーニングとstudylogでの記録を開始したのですが、その直後に震災のゴタゴタなどがあり、学習時間の記録も「瞬間英作文」の学習継続も途切れたままになってしまっています(震災は本当は関係ありませんが……)。これも4月から再開したいところです。

最後に

smart.fm卒業の方も、iKnow!継続予定の方も、今後も継続して語学をがんばりましょう。

2011-03-30

Smart.fm Study Log Saver ~ 学習時間記録取得ツール

Smart.fm Study Log Saver

smart.fm終了まであと2日しかないタイミングなのに、この期に及んで何をやっているんだという感じですが、これまでのsmart.fmでの学習時間の生データをCSVファイルで取得する「Smart.fm Study Log Saver」というアプリをでっち上げました。Excelなどに取り込んで、好きに料理してください。

今までやってきたiKnow!アプリケーションの日々の学習時間については、新サイトのiKnow!にて学習履歴を見ることができます。しかし、新サイトのiKnow!ではDictationとBrainspeedがなくなってしまうため、これらの学習記録も見ることができなくなってしまいます。そういうわけで、睡眠時間を数時間ほど削って作ってみました。Dictationのスキルレベルの変動をExcelでグラフにプロットして見たりすると、けっこう面白いかもしれません。

ただし、smart.fmのサーバに残っている学習記録は2009年11月までのようで、そこより前のデータは取得できません。その点ご注意ください。

また、2月半ば頃から動かなくなってしまっていた「Smart.fm List Converter」ですが、先日raffaelさんにソースコードを修正していただいて、こっそり動くようになっています。一応お知らせまで。

2011-03-26

Windowsの「圧縮フォルダ」ではまる

先日公開した「Smart.fm Memento Maker」では、日記や画像のファイルをzipファイルにまとめて圧縮しているのですが、ユーザーの方から「ダウンロードしたzipファイルに何も入っていない」という報告がいくつか挙がってきました。自分の環境では(生成された)zipファイルを何事もなく展開できているので不思議に思っていたところ、どうもWindows標準の「圧縮フォルダ」でうまく扱えないということが判明しました。確かに、zipファイルをオープンしても、ファイルリストに何も表示されません。

ここで直感的に「パス区切り文字が原因に違いない」と考えました。というのも、zipファイル内の個々のファイルのパス文字列を設定する際に、ディレクトリの区切り文字として「スラッシュ(/)」を使っていたからです。コードとしては以下のような感じです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import zipfile

content = 'The quick brown fox jumps over the lazy dog.\n'
zipobj = zipfile.ZipFile('foo.zip', 'w', zipfile.ZIP_DEFLATED)
zipobj.writestr('/test.txt'.encode('utf-8'), content)
zipobj.close()

そこで、「Windowsだし、スラッシュではなくてバックスラッシュでないとだめなのでは?」と安直に考えて、パス区切り文字をバックスラッシュ('\')に変更してみました。が、やはり現象は変わらず。うーむ。

しかしその後の調査の結果、やはりパス区切り文字が原因だと判明しました。zipファイル内の個々のファイルにて、パス文字列の先頭にパス区切り文字(スラッシュ)を付けていたのですが、これを削るとWindowsの圧縮フォルダでも正常に扱えることが分かりました。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import zipfile

content = 'The quick brown fox jumps over the lazy dog.\n'
zipobj = zipfile.ZipFile('foo.zip', 'w', zipfile.ZIP_DEFLATED)
zipobj.writestr('test.txt'.encode('utf-8'), content) # 先頭のスラッシュを削ればOK
zipobj.close()

ファイルパスの先頭にスラッシュがある場合、内部では「名前が空文字列('')のディレクトリ」として扱われているのかもしれません。今になって考えると、なんで私はファイルパスの先頭にスラッシュをつけようとしたのか、ちょっと疑問に思います。

一応これで期待通りに動作できるようになったのですが、本件、ファイルパスの先頭にスラッシュを付けようとした私が悪いのか、あるいは先頭のスラッシュを扱えないWindowsの圧縮フォルダが悪いのか、どちらなのでしょうか? というわけで、ちょっとzipファイルの規格を調べたところ、以下のような記述が見つかりました。「MUST NOT」ではなくて「SHOULD NOT」ではありますが、いずれにせよ先頭のスラッシュは含まないのが無難ということでしょうかね。

file name: (Variable)
The name of the file, with optional relative path. The path stored should not contain a drive or device letter, or a leading slash. All slashes should be forward slashes '/' as opposed to backwards slashes '\' for compatibility with Amiga and UNIX file systems etc. (snip...)
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
ファイル名: (可変長)
ファイルの名前(と任意の相対パス)。パス領域には、ドライブ文字・デバイス文字・先頭のスラッシュを含むべきではない。すべてのスラッシュは、AmigaやUNIX等のファイルシステムとの互換性のために、バックスラッシュ('\')ではなく、フォワードスラッシュ('/')とするべきである。(中略)

以上、備忘のため残しておきます。

2011-03-20

Smart.fm Memento Maker ~ 日記一括ダウンロードツール

Smart.fm Memento Maker

smart.fmの日記(と画像)を一括ダウンロードするアプリ「Smart.fm Memento Maker」を作成しました。ようやく正式公開できるレベルになりました。

Smart.fm Memento Maker

使い方は簡単で、smart.fmのIDを入力して「Save」ボタンを押して、あとは(気長に)待つだけです。処理の完了後「Download」ボタンを押せば、日記と画像の入ったzipファイルをダウンロードできます(もしボタンを押してもダウンロードできない場合、ボタンの左側のリンクを右クリックして「名前を付けて保存」を選んでください)。

Smart.fm Memento Maker

日記はHTMLファイルで保存されますが、このHTMLファイルをそのまま開いても、レイアウトなどは崩れてしまうのでご了承ください。あくまで保存できるのは中身(文章)だけです。日記についたコメントもそのままでは見ることはできませんが、別ファイル(「(最大6桁の数字)_comment.html」みたいな名前のファイル)に保存されているので、そちらのファイルを見てください。ちなみに、取得できるのは公開設定にしてある日記だけです。

また、ダウンロードしたzipファイルの中には「mt_log.txt」というすべての日記とコメントの文面が収められたテキストファイルも入っています。このファイルは「Movable Type形式 (MT形式)」というもので、これを使ってsmart.fmの日記を他のブログにインポート(引越し)することができます。世の中にはブログサービスがたくさんありますが、いくつかのブログサービスでは「MT形式でのインポート」というのをサポートしています。試しに、私の日記Seesarブログ にインポートしてみましたので、どんな感じか参考にしてください(後ほど削除します)。

ただし、画像についてはおそらくは自動で移行できないと思いますので、ダウンロードしたzipファイルの中の画像ファイルを移行先のブログサービスにアップロードして、個々の日記の画像のURLを差し替える作業が必要になるかと思います。上の例ではブログ中の画像も正常に表示されているように見えますが、これは画像ファイルの場所として直接smart.fmのサーバ内の画像を指定しているためで、後日smart.fmのサーバが停止した後はブログ中の画像が見えなくなってしまいます(本来はSeesarブログのサーバに画像をアップロードし直す必要があります)。

smart.fm終了まで時間がありませんが、ご活用ください。

2011-03-10

ブックマークレット中に「% (剰余)」を使ってはまる

先日作成したブックマークレットの動作確認中に、一点だけ意味不明な動作に悩まされました。

すでにタイトルでネタバレしていますが、ブックマークレット中に「% (剰余)」の記号を使った際に、その箇所が「URLエンコードされた文字」と解釈されてしまい、Google Chromeからさんざん「Uncaught SyntaxError: Unexpected token ILLEGAL」と怒られてしまいました。時間の計算をする際に「60で割った余り」が必要になったため「min % 60」という計算をしている箇所があったのですが、ブックマークレットにした際にコード全体の空白を除去したため、「%60」という「URLエンコードされた“`”(アクセント記号)」という意味になってしまったという次第です。

二度と同じ罠にはまらないように、備忘のため記しておきます。皆さんもお気をつけください。

2011-03-09

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット

studylog(スタログ)」というウェブサービスに登録してみました。毎日の勉強時間を記録するようにして達成感を得られるようにしてモチベーションアップを図り、勉強を継続できる正のフィードバックを形成する、という趣旨のサービスです。いまどきのウェブサービスらしく、ソーシャルな要素もあるようです。私の勉強記録はこちらになります。<http://studylog.jp/en45masao/>

私の場合、iKnow!smart.fmといったウェブサイトでの英語学習や、Nintendo DSソフトでの英語学習はそれなりに継続できているのですが、書籍での勉強がどうも苦手で、なかなか継続できません。英検準1級二次試験に向けて「瞬間英作文」の本を買ったのですが、時折思い立ったときに取り組んでみたりはしているものの、定期的に続いているとはとても言えない状態です。そういう中、Twitterのタイムラインでこのサイトの情報を得て、渡りに船とばかりに登録した次第です。

まだ登録したばかりでろくに触ってもいないので感想も何もないのですが、早くも「毎日勉強時間を記録するのはけっこう面倒かも」と思い始めています。これはブラウザから入力するUI部分が問題というわけではなく、学習する際に勉強時間を把握する――勉強の前後でいちいち開始時刻と終了時刻を記録して勉強時間を計算する――のが(個人的には)面倒に感じるということです。まあ、それはそれで計画的に勉強をするためのいい仕組みになるかもしれません。そもそも5分刻みでの入力になるので適当な入力でも構わないと思いますし。

とはいえ、私はこのstudylogでiKnow!(smart.fm)での学習時間も管理しようとしているのですが、このサイトでの学習時間はAPIを使って簡単に取得できるため、ここくらいは自動化したいところです。というわけで、studylogの勉強ログ入力画面にて、iKnow!(smart.fm)での学習時間を簡単に入力するためのブックマークレットを作ってみました。

studylog(スタログ)でiKnow!の学習時間を入力するためのブックマークレット

注意点

  • studylogでは「参考書」としてiKnow!(smart.fm)の学習時間を管理することになりますが、参考書のテキスト名には「iKnow」または「smart.fm」の文字列を入れておいてください。
    • これを元に、自動入力するフォーム部品を探します。
  • studylogでは勉強時間を「5分単位」で入力するようになっているため、iKnow!(smart.fm)での学習時間は5分単位で切り捨てした時間が設定されます。
    • ただし、「0分より上、かつ、5分未満」の場合のみ「5分」として扱います。
  • このブックマークレットでは、studylogの画面上のフォームに学習時間を設定することしか行いません。学習時間の送信は行いません(自分でボタンを押して送信してください)。
  • ブックマークレットの冒頭に「javascript:(function(){var uid=''||~」という感じで「uid」という変数を定義していますが、ここに自分のiKnow!(smart.fm)のIDを入れてください(「var uid='en45'」のように)。
    • そうしないと、ブックマークレット実行時に毎回自分のIDを入力しないといけなくなります。
  • 学習時間取得のためにsmart.fm APIを使っているのですが、smart.fmは3月いっぱいでサービス終了となるため、その後は使えなくなります(何か別の手を考えないと……)。
  • studylogの勉強ログ入力画面に変更があったりすると、動かなくなる可能性大です。
    • 始まったばかりのサービスですし、ユーザー側の要求に合わせてどんどん変わっていくということは大いに考えられます。

2011-03-05

Python・AppEngine初学者の雑感

ここ最近、PythonでGoogle AppEngineを使ってプログラムを書いているのですが、どちらも始めたばかりなのでいろいろと新鮮な驚きや疑問に思うことなどがあります。新しいことを始めたときに学習記録を残しておくと後で見たときに面白いので、とりとめのない話ですがここに書いておきます。

Pythonについて

  • lenとdelがコレクションのメソッドになっていないのにはびっくりしました。
    • 「len」という名前の変数を使ったりしたらどうなるんでしょう。
  • 「Pythonのfor文は、いわゆるforeachのみで、C言語風のfor文は存在しない」「一般的な回数ループ処理をやりたいときは、等差数列のリストを作るrange関数を使って for i in range(10) のようにする」というのを知って、一貫性があるなーと思ったのですが、xrangeという関数があることを知ってちょっと微妙な気分に。
    • 「xrangeだとリストを生成しないので、ループ回数が大きいときはxrangeの方が速い」との話ですが……for文でrangeを使っている場合には内部で勝手に最適化(実際にリストを生成しないようにする)をしているのかと思っていました。
    • あと、この両者を使い分ける基準はどのあたりにあるんでしょうか。少なくとも一般的な回数ループ処理では、常にxrangeを使っていればいいようにも思いますが。

AppEngineについて

  • 無料枠では「1日あたり10万タスクまで」となっているようですが、意外にきつい制限かも。
    • 普通にテストしていても1000タスクくらい軽く消費してしまいます。
  • ローカル環境におけるタスクキューの動作がいまいち信用できない感じです。
    • たまにキューに積まれたタスクの消化が止まってしまうことがあります。
      • ですがそんな場合でも、管理画面(http://localhost:8080/_ah/admin)をブラウザで開いて再読み込みすればタスクの実行が再開されたりします。理由は不明。
    • そういえば、管理画面のタスクキューの「Purge」ボタンは「たまっているタスクをすべて実行する」みたいな挙動かと思っていました。実際には、タスクは実行されずにキューからクリアされるようです。
      • そういう挙動であれば「Flush」と表記するんですかね。CPUキャッシュの操作でもこれらの用語を使いますが、いつもどっちがどっちだかわからなくなります。

2011-03-04

2010年度第3回 英検準1級 二次試験 結果

英検準1級二次試験の結果が届きました。すでにネットで結果を見て不合格であることは分かっているのですが、ネット上の速報サービスでは合否と合計点しか分かりません。結果の詳細は以下のとおりです。

STEP EIKEN Grade Pre-1 Second Stage (2010-3)

ナレーション 7/15
Q & A 9/20
アティチュード 3/ 3
合計 19/38 (不合格A)

……正直これだけ見たところで、詳しいことは何も分かりませんね。「ナレーションもQ&Aもひどい」ということくらいしか言えません。せめてQ&Aの4つの質問それぞれの配点結果が知りたいところです。会場で渡された面接カード右側の評価シートのマーク内容をそのまま出してくれればいいのですが。

あとは、アティチュードが「3点(満点)」というのはなんだか納得がいきません。というのも、冒頭にフリートークらしい会話もほとんどなく、挨拶程度しかなかった(しかもその短い会話でも相手の言っていることを取り違えてしまった)のと、ナレーションやQ&Aの最中もほとんどずっと問題カードの方を見ていて、アイコンタクトができていなかったからです。Q&Aの1問目は「もしあなたが○コマ目の登場人物だとしたら……」という質問なので、そこで問題カードに視線を移さざるをえないのですが、その後話すときに面接官の方に視線を向けるのを忘れたままになっていました(3問目が終わったあたりで気づきました)。なんで3点もついているんでしょうか。

さて、次回英検の二次試験は2011年7月10日です。今後に向けて、直接的な二次試験対策もやりますが、前回の日記にも書いたように、一般的なスピーキング能力を上げることに取り組んでいきたいと思います。まずは「瞬間英作文」のトレーニングから始めます。しかし、二次試験だけ受ける場合、10分足らずの面接だけであるにもかかわらず、受験料はフルプライス(6000円)なんですね……。

2011-02-22

2010年度第3回 英検準1級 二次試験

日曜日に英検準1級の二次試験を受けてきました。結果から言うと大失敗で、あまりのしゃべれなさ加減に自分でもあきれました。正直思い出したくもないというのが本音ですが、臥薪嘗胆という言葉もありますし、自分の失敗の様子を記録して、失敗を今後の糧として次回に臨みたいと思います。語学というものは恥をかいて上達するものなのです……。

ナレーション

英検二次試験の問題は何種類か(3種類?)用意されているようで、私は「商店街」の問題でした。以下の4コマを1分間見て、2分間でストーリーを説明すればいいのですが……。

  • 1コマ目: 商店街に客が少なくて店の人達が困っている様子。
  • 2コマ目: 商店街の会合で何かやろうと議論している様子。ホワイトボード上の案: 木を植える・花壇を作る・ベンチを設置
  • 3コマ目: その後、会合で出た案を実施して商店街の通りを改装し、商店街に人がたくさん来ている様子。
  • 4コマ目: 秋になって、植えた木の落ち葉の掃除が大変そうな様子。

この4コマを見て、どんなストーリーなのかいまいち読み取れず困惑しました。そもそも客が少ないから木を植えたり花壇を作るという発想がよく分かりませんし、4コマ目が唐突な感じで、このストーリーはトータルとして「ハッピーエンド」なのか「バッドエンド」なのか、よく分かりません。客が増えたから成功なのか、後始末が大変だったから失敗なのか。当初の予定では、最後のコマを見て「彼らは幸せそうでした」とか「彼はその結果に落胆しました」といった全体を統括する「シメ」のフレーズを作って締めくくろうと思っていたのですが、どうすればいいのか……。

悩んでいるうちにあっという間に1分間が過ぎ、ナレーション開始です。最初の1フレーズは問題カードに記載されているのでそれを読むだけですが、スムーズに話せるのはここまで。その後はさんざん詰まりながら、絵に描かれていることをぽつりぽつりと話すのが精一杯。コマにせりふがある場合は直接話法でごまかせますが、それ以外のコマはろくなことが言えない。最後のコマもシメの文章を思いつけず、尻切れトンボ状態に。時間もだいぶ余ってしまい、空白の時間に耐えられず「That's all.」と言って終わらせました。

この時点でほぼ失敗したなと思い、かなり戦意喪失モードでしたが、とにかく最後までやらなくては、と質疑応答に臨みました。

質疑応答

1問目は定番の「もしあなたが○コマ目の登場人物だとしたら、何を言った/考えた/思ったでしょうか?」の質問で、「4コマ目で掃除している人はどう考えていると思いますか?」でした。前述のように、4コマ目の意図が読み取れなかったため途方にくれました。4コマ目の絵に「It's a hard work.」みたいなことが書かれていた(と思う)ので、直接話法で「私は考えたでしょう“掃除するのは大変だ”と」とだけ言ったのですが、これで点がもらえるわけもないので、しばらく間が空いた後「だけど(客を呼ぶ)活動は成功した。私はその結果に満足している」みたいなことを言ったつもりです(が、伝わったかどうかは不明)。

2問目は事業を経営することがどうのこうのという質問でした。質問で何を聞かれているか(「I beg your perdon?」で聞き返しても)よく分からず、適当に「I think so.」と回答するはめに。その後何か言わないといけないと思って「世の中にはニッチ市場がたくさんある。そこを狙えばうまくいくかもしれない」みたいなことをしどろもどろで伝えました。

3問目はボランティアを教えることの重要性(ボランティアの重要性を教えることだったかも)がどうのこうのという質問でした。これまた何がなにやらわからず、「それは重要です」と言ってごまかして、何か言わないと……と思い「ボランティア活動のやり方を教えることで、人々のモラルも向上する」みたいな文章をでっち上げて、とぎれとぎれに言ったつもりです。質問に対する答えにもなってなさそうですし、まったくもって整合性のない発言です。

4問目はえらく唐突で、地球温暖化についての質問でした。そもそもなんでこのテーマで地球温暖化の話が出るのか意味不明で困惑しましたが、とにかく何かしら言わないといけないので、「それは重要です。エネルギーの使用量を減らすことで天然資源の消費量を減らせます。それは環境を保護する助けになります」みたいなことを言ってごまかしました。

以上、約10分間、とにかく自分の英語能力の低さを嫌というほど味わいました。

分析

こうも散々な結果に終わった原因は、直接的には「準備不足」です。二次試験対策本(過去問題)を購入したのが2月10日で、パラパラ見始めたのが2月13日から。その後は、行き帰りの電車や会社の昼休みなどに本を見ながら頭の中で面接のシミュレーションをしてみたりしたものの、声を出しての練習は帰ってからでないとできません。しかし、直前の一週間は帰宅後に毎日練習をやろうと思っていたのですが、ちょうどその頃どんどん仕事が忙しくなって、連日帰りが午前様の状況となってしまいました。集中練習をしようと思っていた試験前日も休日出勤で、結局まともに練習をしたのは前日の夜という体たらく。10回以上やってみたのですが、ナレーションにしても質疑応答にしても、一度として満足のいくように話せませんでした。

しかし、それ以前の問題として、自分の言いたいことを瞬時に英語で組み立ててアウトプットする能力というのが決定的に欠けているなと感じました。スピーキングの際に、自分の頭の中では「日本語文を英文に翻訳する」ということをいちいちやっているような感じで、思ったことが即座に出てこない。とりわけ試験のような場だと、もたもたして時間が過ぎるにつれてどんどん頭の中が真っ白になっていく感じです。自分の場合、リスニングについては頭の中で日本語を介在させずにそのまま理解することができつつありますが、スピーキングについては、ごく限られた言い回しを除き、とてもそんなことはできない状態です。

この件については、いろいろな方から「瞬間英作文」のトレーニングを薦められたので、次回までの準備として取り組んでみたいと思っています。しかしながら、どうも私は本を使っての勉強があまり続かない傾向にあるので、なにかアプリ的なものがないかと思っています。

当日の雑感いろいろ

  • 会場では、入口で携帯電話を入れるための袋を渡されます。どうもこの袋の色で問題の種類が異なるようです。
    • 私は緑でした。
  • だいぶ早く着いたので、待合室(教室)の中で2番目でした。そのせいかあまり待たずにすみました。
  • 面接カードに名前やら個人番号やらを記載・マークするのですが、右半分は評価シートになっています。それによると:
    • ナレーション: 5段階評価×3つのポイント?→15点
    • 質疑応答: 5段階評価×4問→20点
    • アティチュード: 5段階評価→(何らかの変換?)→3点
  • 全体的に受験者は若い人が多めで、女性の方が多かったようです。
    • ほとんどの人がカジュアルな格好でした。
  • 受験者の中に、小学生っぽい男の子と、制服を着た女の子(中学生か高校生)がいました。
    • 二次試験の会場にいるということは、一次試験を合格しているわけです。すごいなー。
  • 待合室から面接室の前に移動した後、並んでいる椅子に座ってしばらく待つわけですが、廊下なので寒い……。
    • 面接室の中から声が漏れ聞こえてくるので、何かのヒントにならないかと耳をすましてみるのですが、聞き取れませんでした。
  • 面接官の方は、私の時は初老の日本人男性でした。
    • 発音はゆっくり目で、特に聞き取りにくいということはありませんでした。
  • 帰ってから気づきましたが、会場(高校)は土足でOKでした。
    • 受験票に「上履き必須」とあったから、わざわざスリッパを買ってきたのに。
    • 雨天や雨上がりの場合だけ上履きを使わせるつもりだったのかも。

2011-02-12

smart.fmの「もっと見る」をすべて展開するブックマークレット

smart.fmの「もっと見る」をすべて展開するブックマークレット

背景

smart.fmのサイトでは、ウォールや日記にてコメントを残すことができますが、コメントの数が多くなると一定数以降のコメントは折りたたまれて、残りは「もっと見る」というリンクを辿らないと表示されません。特に、ウォールのコメント(Shout)については、初期の頃からのコメントがずっと残っているので、過去のものをすべて読もうとすると何度も何度も「もっと見る」をクリックすることを強いられます。

smart.fm終了にあたり、こういったコメントなどによるユーザー間の交流の記録も失われてしまうわけで、せめてローカルに保存しておきたいところです。当初はAPIを使って何とかしようと思ったのですが、一筋縄にはいかないようで、次善の策としてFirefoxの拡張機能「ScrapBook」を使って、ブラウザに表示されている内容をごっそり保存するのが手っ取り早いと思います。しかし、表示されている内容しか保存できないため、ScrapBookで保存する前には、「もっと読む」をすべてクリックしてコメント内容を展開する必要があります。

そこで、手でいちいちクリックする代わりに、「もっと見る」リンクを自動で探して展開するブックマークレットを作ってみた次第です。

使い方

登録・起動は一般的なブックマークレットと同様です(この説明で分かる方だけが使ってください)。

ブックマークレットを起動すると、smart.fmの画面上の「もっと見る」リンクが次々に展開されていきます。けっこう時間がかかるので、処理中は画面左上に「ローディングアイコン」を表示するようにしました(中央の数字は画面上の「もっと見る」リンクの数です)。クリックすると処理を途中で中断します。

技術的な話

私が普段JavaScriptを書く際には「jQuery」を使っています(Webアプリを作る際は「jQuery UI」も)。正直なところ、すでにこれなしではJavaScriptでプログラムを書ける気がしません。そもそも、JavaScriptを使い始めたのがごく最近で、JavaScriptを初めてからすぐにjQueryを使うようになったので、「素のJavaScript」だけでプログラムを書いた経験がほとんどありません。

とはいえ、ブックマークレットを書くという局面では、jQueryを使うのは牛刀な感じがしてきます。ブックマークレットで外部ライブラリをロードするというのも大げさに感じます。

しかしながら、すでにjQueryを使っているサイトのページに対してブックマークレットを適用するのであれば話は別です。smart.fmではjQuery(1.3.2)を使っているので、smart.fmのサイトで使うブックマークレットならば、普通にjQueryを使えるわけです。

jQueryさえあれば、「もっと見る」リンクをすべてクリックするなんてことはお茶の子さいさいです。ブックマークレットはあまり長くしすぎるとブラウザ側でブックマークとして扱えなくなってしまうのですが、jQueryを使うとコードが非常にコンパクトにまとまります。ローディングアイコンを出してみたり、途中でキャンセルできるようにしたりしましたが、トータルで500文字以下に抑えられました。

危険性

しかし、ブックマークレットを作ってみて実感しましたが、ブックマークレットというものは本質的に危険な仕組みです。特に今回のように「クリック」操作を伴う場合、クリックする対象を間違えて選択してしまうと大変なことになりかねません(プログラムミスがあって、誤って「クリック」の対象を「削除ボタン」にしてしまったとすると……)。

普通に作っていても危険なのだとすると、故意にユーザーに危害を与えるべく悪意を持って開発すれば、いくらでもユーザーに損害を与えることができてしまうわけです。例えば、画面内のすべての「コメント送信」ボタンを「クリック」することも可能ですし、事前に画面内のすべてのテキストボックスに「f*ck you」みたいな文字列を設定しておくことも朝飯前なわけです。

むろん私にはそのような意図は毛頭ありませんが、どこの馬の骨とも知れない人間が提供しているブックマークレットを使うということがいかに危険なことであるか、リスクを認識した上で、自己責任で利用するようお願いします。これはこのブックマークレットに限った話ではなく、一般的な話です。

(このブックマークレットはsmart.fmユーザー向けのものであるため、本来この記事はsmart.fmの日記にて書くべきなのですが、(ギークではない一般の人が多い)smart.fmのユーザー層に「非公式のブックマークレットを安易に使う習慣」が広まってしまうことを懸念して、smart.fmの日記では公開していません)

処理の内容を説明する意味も含めて、ブックマークレット化する前の元ネタのJavaScriptコードも載せておきます。

2011-02-07

TOEIC IPスコアレポート

TOEIC IPスコアレポート(2010)

先日受験したTOEIC IPのスコアレポートが返ってきました。スコアについてはすでに通知されていましたが、「ABILITIES MEASURED」を見てみます。

ABILITIES MEASURED (Listening)

短い会話から要点を推測できる 92%
長めの会話から要点を推測できる 95%
短い会話において詳細が理解できる 93%
長めの会話において詳細が理解できる 88%

ABILITIES MEASURED (Reading)

文書の中の情報をもとに推測できる 95%
文書の中の具体的な情報を見つけて理解できる 88%
文書の中でちりばめられた情報を関連付けることができる 78%
語彙が理解できる 97%
文法が理解できる 87%

特筆すべき点としては、「語彙が理解できる」の項目が97%とやけに高いことでしょうか。今までこの項目は60%台だったのですが、一体何があったのでしょうか。以前からこの「ABILITIES MEASURED」は今ひとつあてにならない(個々の能力を評価するには問題数が不足気味なのでは?)と思ってはいますが、ここは素直にsmart.fmでの日頃の学習の成果だ、ということにしておきますかね。

あとは「文書の中でちりばめられた情報を関連付けることができる」の項目が比較的低いのがちょっと気になります。そもそもこの項目って、PartV~PartVIIのどの問題に対応するんですかね? 字面からするとPartVIIのダブルパッセージの問題あたりでしょうか。であるなら、試験当日は残り時間を間違えて、最後の方の問題を大急ぎで解いていたため、結果が悪いのもうなずけます。

TOEIC IPスコアレポート

これを書いていて、比較のために以前のスコアレポートを見ていたのですが、だいぶ前のTOEIC IPのスコアレポートも出てきたので、ちょっと紹介してみます。TOEICのIPテストは、受験できる環境にない人にとっては基本的に受験機会がないため、公開テストのスコアレポートは見慣れていても、IPテストのスコアレポートは新鮮に見える方もいらっしゃるでしょう。私は逆で、IPテストはさんざん受けていますが、公開テストはあまり経験がありません。

TOEIC IPスコアレポート(2006)

これは2006年のものです。TOEICは2006年5月にリニューアルしましたが、IPテストはしばらく旧方式のままでした。そのため、2006年の7月に受けたIPテストのスコアレポートにはABILITIES MEASUREDなどの分析はありません。単にスコアが書かれているだけです。

この頃は、Nintendo DSの「えいご漬け」が出た頃で、発売日に買ってから半年ほど毎日やっていました。それまで400点前後の点数だったのですが、けっこう効果があるものだなと思いました。その半年後のIPテストではさらに点数が跳ね上がってびっくりしました。「毎日やる」ことの重要性を感じたのはこの時期です。

TOEIC IPスコアレポート(2005)

こちらは2005年のものです。TOEICのロゴが現行のものと違っていますね。この頃は、試験前に市販のTOEIC模試をやるくらいはしていましたが、普段は何も英語の勉強をしていませんでした。試験直前に模試をやってみては、その難しさにため息をついていたものです。

TOEIC IPスコアレポート(2005)

手元に残っているもので最古の2002年のものです。写真では分かりにくいのですが、縁にミシン目が入っていて切り離されています。紙質も悪く、印刷も適当な感じです。その他にも、以前は「スコアロースター(受験者全員のスコア一覧表)」を短冊状に切り分けて、自分の成績が記載された欄の紙片を渡されたこともありました。

というわけで、英語の勉強を本格的に始める前にTOEICを受けておくと、その後の実力のアップが数字で分かるのでおすすめです。私自身いまだに英語の能力が上がった実感があまりわかないのですが、こうやって点数で表されると少しは英語が上達したのかなという気になります。私もかつては、TOEICで800点とか900点とかを取る人は英語ペラペラなんだろうなー、なんて思っていました……。

2011-02-06

今週の目標学習時間達成

新iKnow!サイトでは週ごとの目標時間を設定できるわけですが、私は「週7時間(一日1時間)」を目標として設定していました。今週前半は「借金」ばかり増えていっていましたが、週の後半に追い込みをかけて、土曜日の23時ぎりぎりになんとか目標を達成しました。

目標を達成するとこんなメッセージが出ます。日付が変わるとたぶん消えてしまうので、キャプチャしておきました。

今週のターゲットにたどり着きました!"

(それにしても、「今週のターゲットにたどり着きました!」というメッセージはなんだかこなれていない日本語です。「今週の目標時間に到達しました!」あたりが妥当ではないでしょうかね)

また、先日コースを完了させたときにも、以下のような演出がありました。学習終了後、画面が急にアニメーションしだしたのでびっくりしました。

おめでとうございます!

このように、新iKnow!サイトでは、学習のモチベーションを上げるための仕組みも少し強化されているようです(アプリのソースを見るかぎりでは、(謎の)「チェックポイント到達」のメッセージも用意されているようです。まだ一度も見たことありませんが)。

とはいえ、システムに祝福されるよりは、フレンドの皆さんから祝福される方がよっぽど励みになるよなあ、というのが(smart.fm終了を控えたユーザーとしての)偽らざる感想です。新iKnow!リリース時のメッセージにて少し触れられていますが、新iKnow!サイトにおいて、SNS的な要素ははたしてどういう形になるのでしょうか。

また、まだ詳細は申し上げられませんが、「iKnow!」 での学習を通じて、ユーザーの皆さん同士が有意義で意味のあるつながりを持てるような新しい機能も近日中にリリースする予定です。

http://iknow.jp/ceo_message?language_code=ja

2011-02-05

AppEngine上で一括ダウンローダーを作ろうとしたものの……

前回の記事で書きましたが、私が英語学習のために使っていたサービス「smart.fm」が終了し、有料の新サービス「iKnow!」に移行します。有料化というのも痛いのですが、新サービスのiKnow!には、旧サービスのsmart.fmにあったSNS的な機能がまったく存在しないというのもかなり重大な話です。

今後新サイトでSNS要素がどうなるかは分かりませんが、少なくともsmart.fmが終了するにあたり、smart.fmのSNSにおける主要コンテンツである「日記」については今後消滅する公算が大なので、なんとかローカルに保存したいところです。

というわけで、smart.fmの日記コンテンツをzipで一括ダウンロードする「Smart.fm Memento Maker」なるツールを大急ぎで作っているところです。日記を取得するスマートな方法がないものか模索したのですが、いい手はないようなので、まずは全日記エントリのHTMLを力技で抜いてくるプログラムをでっち上げました。

かなり時間はかかるものの、ローカルではちゃんと動いているようなのでGoogle AppEngineにデプロイしたのですが、「DeadlineExceededError」が発生してまともに動きません。しまった、AppEngineでは一定期間内に応答を返さないとダメなのを忘れていました。これは再設計が必要かも……。

2011-01-31

2010年度 英検準1級(第3回) 間違った問題の復習

先週日曜日に英検準1級を受けましたが、いまさらですが間違った箇所の復習をしてみました。本当は二次試験の準備をしないといけない時期なのですが……。

復習するべき問題は、3問中2問も間違えてしまった大問3-1(pp.8-9)です。問題文の原文を全部載せると引用の範疇に収まらなさそうなので、以下は訳文(超適当訳)のみです。問題文自体は英検の公式サイトから取得できます。

Paradise Lost?

ハワイの最も有名な観光目的地のワイキキビーチは、1年に30センチの割合で浸食されています。これは主として、ここ100年に渡る自然の気候変動による海面の上昇が原因です。さらなる原因は、しかしながら、堤防――皮肉にも、自分たちが持つ土地の海岸線の領域を守るために作られた建造物――の建築でした。堤防は海に流れる水の流れを変え、通常よりも大きい力でワイキキビーチから砂を引き離しました。

もしビーチが消失したとすると、ハワイは年間およそ20億ドルの観光支出を失うことになります。見通しについての最近の調査で、ビーチが完全に侵食されたとして、58%の観光客がワイキキに滞在しなくなるだろうということが判明しました。この危機に対して、ハワイ州政府は、ビーチ回復プロジェクトに関して、ワイキキの多くのホテルを所有する京やホテルアンドリゾートと協力しました。400万ドルをかけた京やプロジェクトでは、近くの沖合からポンプで砂を汲み上げることでワイキキビーチを拡大します――基本的には流出した分の砂を置き換えます。海水浴客に新たなスペースを提供することに加えて、海底の余分な砂をきれいにすることで海洋環境を改善することも期待されています。

京やプロジェクトは差し当たりワイキキの観光産業を救うかもしれませんが、このプロジェクトのメリットに疑問をもつ人たちは、海面が上昇し続けることにより少なくとも2・3年に一度は同じような取り組みが必要になるだろうと指摘しています。その一方で、沿岸の土地の持ち主は、自分たちの土地を守るためにおそらく堤防を建て続けるでしょう。このプロジェクトを批判する何人かは、このようなことが起きないようにするため、海岸線でさらなる開発をすることを政府が禁止する必要があると発言しています。この意見が支持を得る兆候はあります。土地利用と環境を専門に扱う弁護士のデニス・ウォンは言います。「徐々に、人々は海岸線が非常に動的であることを理解し始めています。そしておそらく、それに対抗するよりはむしろ離れた方がメリットがあるでしょう」

私が間違えたのは問題No.33と34です。問題No.33は以下のとおりです。

No.33 The beach restoration project sponsored by the Hawaii state government and Kyo-ya will (ハワイ政府と京やの後援を受けているビーチ回復プロジェクトは、)

  1. prove unpopular with some hotels as it means Waikiki Beach must be closed for a period of time. (それがワイキキビーチをしばらくの間閉鎖しなくてはならないことを意味するため、いくつかのホテルから不評を買うことが判明する)
  2. provide tourists with an alternative to Waikiki Beach by improving the condition of lesser-known beaches nearby. (近くのあまり知られていない浜辺を改良することによって、観光客にワイキキビーチの代わりとなる浜辺を提供する)
  3. create a larger area of beach for public use while helping to maintain the health of the ocean. (海洋環境を維持するのに一役買いつつ、一般利用のためのより大きな浜辺を作る)
  4. involve transporting sand from beaches in other parts of Hawaii to replace the sand that has been lost. (失われた砂を差し替えるために、ハワイの他の場所から砂を運び出すことを行う)

ここで私は「4番」を選んで間違いました(正解は「3番」)。間違った原因ですが、

The $4 million Kyo-ya project will widen Waikiki Beach by pumping in sand from a short distance offshore -- essentially replacing sand that has been washed away. (400万ドルをかけた京やプロジェクトでは、近くの沖合からポンプで砂を汲み上げることでワイキキビーチを拡大します――基本的には流出した分の砂を置き換えます。)

この文章の最後の「offshore(沖合)」を「seashore(浜辺)」と誤読したのが敗因でした。もしかしてこれっていわゆる「引っ掛け問題」ですか? いや、まあ、考えてみれば、近くの浜辺から砂を移動するのであれば「by pumping in sand」みたいな表現はしないような気がします。しかも、その次の文章で、

Aside from providing beachgoers with additional space, it is also hoped this will improve the marine environment by cleaning excess sand from the seabed. (海水浴客に新たなスペースを提供することに加えて、海底の余分な砂をきれいにすることで海洋環境を改善することも期待されています。)

このように「seabed(海底)」とあるわけで、ちゃんと読んでいれば分かっていたことでした。

もう一つ間違えた問題はNo.34です。

No.34 What is the opinion of some critics of the beach restoration project? (ビーチ回復プロジェクトに対する批判者の意見は何か?)

  1. To effectively deal with further erosion, it is necessary to change current rules concerning property development. (さらなる浸食に効果的に対処するためには、土地開発に関する現行の制度を変更することが必要である)
  2. Hotels supporting the project have put more emphasis on the needs of tourists than those of Waikiki residents. (このプロジェクトを支援しているホテルは、ワイキキの居住者のニーズよりも、観光客のニーズの方により重点を置いている)
  3. Similar efforts in the future will be difficult because local property owners have indicated they will refuse to cooperate. (地元の土地のオーナーが今後協力することを拒むことを示唆しているので、将来の同様の取り組みは難しくなるだろう)
  4. The cost of the project should be entirely covered by the businesses that will directly gain from its completion. (プロジェクトにかかるコストは、その完成によって直接利益を得る企業によって、全額賄われるべきである)

1番と3番で迷ったあげく、適当に「3番」を選んで間違いました(正解は「1番」)。いま冷静に振り返れば、不正解の選択肢で述べられていることは本文中にまったく書かれていないことなので、なんで間違ったのかよく分かりません。

これは私の悪い癖で、この手の長文問題で内容の理解があやふやな状態な場合に、勝手な想像でストーリーをでっち上げて、それを元に回答するというのをよくやってしまいます。今回の場合、3番の選択肢はいかにもありそうな話だということで、時間に追われて3番を選択してしまったものと思われます。仮にこういう手段を使って正解できたとしても、試験で点を取ることにしか役立たないわけで、実際の英語運用能力にはさっぱり結びつきません。ちゃんと内容を理解するようにしないとダメですね。

さて、二次試験まであと3週間。まったく準備していませんが、そろそろ対策を始めますかね。