現在 http://en45masao.tumblr.com/ にてTumblrを使っています。2011年はBloggerを使っていましたが、なんとなくブログ投稿に際して敷居が高く感じられて、更新頻度が落ちる一方でした。一方、Twitterだと気軽に書けるし継続できたので、ちょっとでも投稿のための心理的障壁が低そうなTumblrを試しています。継続できそうならTumblrに移行するつもりです。
プログラミングや英語学習などに関して、調べたことや勉強したことをメモとして残していくつもりです。 I utilize this blog as a memo about programming, studying English, and so on.
2012-01-01
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!は「ツイートする」の機能しか使わないんですけどね。なんだか痛くもない腹を探られる感じです。

見てのとおり、アプリ認証画面の右側には開発者によるアプリの説明文も表示されるので、ここに「このアプリではツイートすることしかしません」みたいなことを記載するという手もありますが、それはそれで筋が悪い感じがします。OAuthの認可において、ユーザーが信用していいのはあくまでTwitter側が出す説明文のみであるべきで、開発者側の出す説明文を信用して認証するような風潮が蔓延すると、裏でこっそりとプロフィール更新やら新規フォローなどをしでかすアプリを安易に認証してしまうことにつながりかねません。
この件についての正しい解決法は、Twitter側がOAuthで可能な操作を細分化して、アプリ側では必要最小限の権限だけを取得するようにする、ということになるのでしょうか。聞くところによると、以前のTwitter OAuthでは、単にツイートするだけのアプリでも、ダイレクトメッセージへのアクセスができてしまう権限までついていたようなので、今の状態でもある程度は改善していると言えるみたいですが……。
2011-06-29
iKnow!の学習結果をTwitterでツイートするサービス「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」
ここしばらく非常に多忙な状態が続いていました。忙しいと、あっという間に月日が流れていく感覚があり、気がつけば5月も終わりです。このままでは1ヶ月後に「今年ももう半分過ぎた」などと言っているに違いありません。忙しくなってくると、一週間の仕事の疲れがたまって土日を無為に過ごすことも多くなり、人生無駄にしている感がつのる一方です。
さて、少し前から、Twitterでのタイムライン上で「@foobar は12345日生きた。人生あと17655日しかない。今日は有意義だったか?」といった感じのTweetが定期的に見られるようになりました。これは30thouというサービスからのTweetで、人生は30000日と仮定して、今まで何日生きて、あと何日残っているかというのを数字で意識させるようにして、一日一日を有意義に生きるようにしよう、という趣旨のメッセージのようです。
これを見て、興味深いと感じると同時に、「日数の数字だけでなく、もっとビジュアル的な表現はできないかな」と思いました。いわゆる「見える化」というやつでしょうか。で、ぱっと思いついたのが、1年(12ヶ月)分のカレンダーを3×4の形で並べたものを、さらに一生分(例えば80年分)並べるというものです。
百聞は一見にしかず、というわけで、さくっとWebアプリとして実装してみました。HTML5のcanvas要素を使用したので、サポートしていないブラウザでは動きません(端的にはIE8)。ご了承ください。
しかし、こうやって改めて可視化してみると、一日が一個の長方形に相当するとして、一生全体でたったこれだけしかないのかという気持ちになりますね……。
スクリーンショット
カレンダー内の文字は、自前で5×5ピクセルの英数字フォントをでっち上げて描画しています。現状、canvas要素におけるテキスト描画はいまいち怪しいので……。また、「Save As ...」のボタンを押すと、カレンダーをPNG画像として保存できます。
生年月日の入力には、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%毎に印がついています。単なるデザイン上の要素かと思っていましたが、それだけではなかったんですね。今頃になってようやく気づきました……。
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.

- 「まさおは わたすふりをしたが けっきょく じぶんで もった。」(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」の本当の意味を知ったときには文字通り驚いたものです……。

今あらためて見ると、「THE MONSTERS SURPRISED YOU.」の方がしっくりくる気がしますが、どうなんでしょうね? 日本人にとって、冠詞や複数形についての感覚を理解するのは難しい……。
iKnow!の画面幅を広くするユーザーCSS
(2011年5月19日追記: 本件、5月17日のiKnow!のアップデートにて解決した模様です。そのため、現在では本記事のユーザーCSSを適用すると逆に表示がおかしくなります)
ここ最近非常に忙しく、せっかく料金を払ったiKnow!も活用できていません。勉強時間が少ない毎日が常態化してしまい、よくない傾向です。なんとかしなくては。
ところで、iKnow!を使っていて前々から気になっていたのですが、例文が長い時に、文章の配置がかぶってしまい、非常に読みづらくなる場合が多々あります。例えば以下の画面のような状態です。
iKnow!のサポートフォーラムでは前々から上がっていた問題なので、いつかは改善するかと思っていたのですが、いつまでたっても直らない模様。表示上の問題なので、簡単に解決しそうなものなのですが。
そういうわけで、ユーザーCSSを使って自力で解決することにしました。iKnow!の学習アプリはウェブアプリなので、HTML・CSS・JavaScriptで構成されています。ネイティブアプリやFlashアプリと異なり、ユーザー側からいろいろちょっかいを出せます。
作成したユーザーCSSは、Gistに置いておきました。<https://gist.github.com/923850> これを適用した結果は以下のとおりです。まあ、こんなところでしょうか。
残念ながら、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終了まであと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」ではありますが、いずれにせよ先頭のスラッシュは含まないのが無難ということでしょうかね。
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
- 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...)
- ファイル名: (可変長)
- ファイルの名前(と任意の相対パス)。パス領域には、ドライブ文字・デバイス文字・先頭のスラッシュを含むべきではない。すべてのスラッシュは、AmigaやUNIX等のファイルシステムとの互換性のために、バックスラッシュ('\')ではなく、フォワードスラッシュ('/')とするべきである。(中略)
以上、備忘のため残しておきます。
2011-03-20
Smart.fm Memento Maker ~ 日記一括ダウンロードツール
smart.fmの日記(と画像)を一括ダウンロードするアプリ「Smart.fm Memento Maker」を作成しました。ようやく正式公開できるレベルになりました。
使い方は簡単で、smart.fmのIDを入力して「Save」ボタンを押して、あとは(気長に)待つだけです。処理の完了後「Download」ボタンを押せば、日記と画像の入ったzipファイルをダウンロードできます(もしボタンを押してもダウンロードできない場合、ボタンの左側のリンクを右クリックして「名前を付けて保存」を選んでください)。
日記は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エンコードされた“`”(アクセント記号)」という意味になってしまったという次第です。
二度と同じ罠にはまらないように、備忘のため記しておきます。皆さんもお気をつけください。










