私の構造的学習法 <後編> ”4つの戦略”

前回のエントリーでは、学習のゴールである概念ネットワークについて説明しましたが、今回は本題の学習法について説明したいと思います。前回のエントリーを読まれていない方はこちらをご覧の上、続きを読んでください。

私の考える構造的学習法は4つの戦略から成り立っています。なぜそれらが有効なのかは、適宜補足を加えていきますが、前回エントリーで説明した概念ネットワークの幾何学的な意味を想像しながら読んでもらえると理解の助けになると思います。

マッピング

最初の戦略はマッピングをマッピングと呼んでいるものです。概念ネットワークに新しいノードを追加したい場合、既知の概念との距離が遠ければ遠いほど、新しい概念との関係性を表現するのは難しくなり、理解の速度が落ちます。今までまったく予備知識の無い分野にチャレンジした時に、なかなか理解が進まずにどかしく感じた経験は誰しもあるかと思います。それはこの性質によるものです。

この問題を解決する基本戦略はシンプルで、既知の概念と新しく学ぶ概念の距離を最小化するアプローチが有効です。そのためには飛び石的に理解していることの島をいくつか先に作っておくということです。

具体的には、

  • その分野の権威的な書籍を読む前に、入門書をざっと1時間ほど斜め読みする
  • 書籍の目次をみて重要そうなキーワードをピックアップして事前に検索して調査しておく
  • その分野に詳しい人と30分でも雑談しつつ議論してみる

といった工夫をすることで、既知の概念の島をつくることができます。

私はこれをよく「穴の空いた地図でいいので、まず地図を作ろう」と言ったりしています。最初に大まかにこれから学ぶ分野全体のキーとなる概念を選定して、辞書的な理解でよいので把握をする。こうすることで、新たにぶつかる概念は、既に理解している最寄りの概念との関係性の中で理解を深めていけるようになります。それにより各概念間の距離を小さくすることができ、結果個々の概念の理解が進みやすくなるというわけです。

この戦略は、今まで取り組んだことがない新しい分野の学習を行う際に有効です。

パターンコピーとメタファー

2つ目と3つ目の戦略は、関係性をまとめてコピーすることで概念ネットワークの構築を効率化する手法です。概念の関係性を定義するのは簡単に見えて、たとえ1つであっても意外と時間がかかるものです。しかし、人間の脳というのは想像以上に高機能で、概念を1ノードずつ繋げるよりも、似たようなパターンを探してきてそれを当てはめる方が得意だったりします。この能力をうまく活用しない手はありません。

この手法を適用するには少しコツがあります。この戦略は、

  • 既に深く学習をした分野の横展開を行う場合(パターンコピー)
  • 今まで取り組んだことがない新しい分野の学習を行う場合(メタファー)

の2つのケースで利用できるのですが、まとめてコピーという点では同じでも、それぞれ少し思考パターンが異なるので工夫が必要です。

パターンコピー

まず前者のパターンコピーから説明したいと思います。これは既に知っている分野と並列関係にある分野を学ぶ時に特に活用できます。既にあるプログラミング言語を深く学んだことがある人が、他の言語を学ぶときに初めてプログラミング言語を学ぶよりも圧倒的に早く学習できたりするのは、このパターンコピーのおかげなのです。既知の言語体系全体を一度コピーして差分だけを解釈していけばよいので、for文、if文など基本的な概念はほとんど労力は要らず学ぶことができ、その言語特有な書き方を重点的に学ぶことで短い時間で新しい言語を習得することができるというわけです。

このように、ある分野を深く体系的に学んだ人は、パターンコピーを活用することで周辺分野の学習のスピードが速くなります。T字型人材(ある分野に深い造詣があり、かつ幅広い基礎知識をもっている人)が重宝がられるのは、このパターンコピーの効用がそれだけ高いということだと思います。これを活用するためには、まずは自分が得意だと思える分野を作ってそこから横展開をしていく形をとることが重要です。これは、深堀りするか広く浅い知識をつけるかの舵取り次第で長期的な学習のスピードが変わるということを意味しています。

パターンコピーを活用するためには、具体的には、

  • マッピングする際に、これから学びたい分野で並列関係にあるものを把握する
  • そのうち一つを集中的に学んで、その分野での概念ネットワークを構築する
  • その概念を隣の分野に対してパターンコピーを活用しながら学ぶ

といった手順を意識しながら学習計画を立てると効果的です。

メタファー

次にメタファー(喩え)について説明したいと思います。メタファーはパターンコピーと違って、近い分野に適用されるものではなく、全く違った分野に適用されるメソッドです。その分少し適用の難易度が高いです。具体的にどういうものかをメモリとハードディスクの関係を例に説明します。

メモリよりもハードディスクの方が容量が大くて、メモリはハードディスクよりもずっと高速に動作するという関係性を知っているとします。その時にさらにその関係性を深く知るために、メタファーを使ってこの関係性と似たようなものがないかを探してきます。たとえば、メモリが机の上で、ハードディスクが本棚みたいなものかな、とか、メモリが飛行機でハードディスクはタンカーのようなものかなとか。

そして、どれが構造的にうまく表現できているかを選択します。この例では、後者は容量とスピードについての関係は説明できていますが、ハードディスクにあるデータは利用される時に一度メモリに移動されるという点で構造的にマッチしなくなるので喩えとしてはあまりよくなさそうだなと判断して、前者の喩えを利用する判断をするかと思います。

次に、それらを比較してその差がどこにあるのかを考えていきます。ここがメタファーの本領発揮をするところです。本棚から本を取り出して机の上に広げて作業をするイメージした時に、例えば本を出しすぎて机があふれたとします。どのように対応するでしょうか?ある人は本棚に本を格納したり、ある人は本を平積みにしたりすると思います。それを逆にコンピューターはどのようにしているのでしょうか?と疑問を持つことができます。きっと同じ様な技法がメモリとハードディスクの関係にもあるはずと、未知の分野であっても自分が知らないことを感じることができるようになります。実際、本棚に本を戻すという役割はガベージコレクションが担ってますし、メモリの内部を圧縮して容量を抑える手法も存在します。同様に、机の本を調べるのも時間がかかるので、毎回本から調べるのではなくどのように行動しているでしょうか?私たちは調べる前にまずは脳で記憶している情報から優先的に処理しています。そういう機構はあるのだろうか?と疑問に思うことができればL2キャッシュの存在にも気付けるはずです。

メタファーを使って考えると、未知の分野の理解を促進すると共に、既知の概念の理解を補強することもできます。たとえば、メモリとハードディスクをつなぐバスに該当するのは、逆に机と本棚の関係の中に存在するのかなど思考を深めることができるというわけです。このようにして各概念ネットワークがより強固なものとなっていきます。

メタファーといってもあくまで喩えなので、完全に概念ネットワークが一致することはありません。最後に埋められない差は必ず出てきます。例えば、メモリのデュアルチャネルの関係性を、机と本棚の関係性の中で説明するのは難しかったりします。しかし、前編でもお話した通り、違いがはっきりするということは理解をしていることの証です。埋められない差が明確になったことはその分野についてしっかり学べた証拠でもあるのです。

このようにメタファーを使うことで、未知の分野の学習を効率的に行うことができ、相互に比較をすることで深い洞察を得ることができます。

モデリング

最後の戦略はモデリングと呼ばれるものです。これは他の3つの戦略とは少し種類が異なります。他の手法は、既知の概念との関係性をいかに効率的に探すかというものでしたが、この戦略はそもそもパターンとして探しやすいように概念ネットワークを構築することを目的としています。残念ながら読み出せないデータに価値はありません。概念ネットワークを構築する時も同様に、後で読み出しやすいように工夫することが重要です。

そのためには、物事を個々の事象として記憶するのではなく、一段抽象化してそれを印象づけて自分の脳にパターンとして記憶することが重要です。

例えば、標本化定理などを学んだのはかれこれ12年ほど前になりますが、私の中では、この定理は、「何かを計測する時に、計測対象物の変化の速さによって計測すべき周期を変えないと、正しく対象物を計測できないし、制御することもできない」と抽象化されて記憶されています。正確性に欠く覚え方ですが、このように抽象化して覚えておくと、信号処理の定理も、例えば計測対象を「人」に変えて考えてみるだけで、「人の現状を知る上で、その方の気持ちや能力の変化の速さに応じて、レビューをする間隔を変えないと、その人の現状を正しく知る事はできないし、その人に期待した仕事をしてもらうこともできない」といったような、マネジメントの法則に読み替えることができるようになります。「一を聞いて十を知る」ことができる人は、このモデリングとメタファー思考に長けている人だと思います。

具体的な個別事象を抽象化する作業を通じて、物事の本質をとらえる事になるため、抽象化された記憶というのは非常に強く残ります。12年経った今でもこういった定理が思い出せるのは当時の抽象化作業によるものだと思います。

このようにモデリングを活用して事象の本質を抽象化することで、記憶にも残りやすく、応用しやすい概念ネットワークを築くことができます。

まとめ

これらの戦略を見て、「なるほどそんなテクニックがあったのか」と感じてもらえたら一定程度目的は果たせているのでしょうが、私としては「要はどのように学ぶのか見通しを立てることで学習効率を上げることができるんだな」と感じてもらえるとより一層嬉しいです。この4つの戦略を知っていれば、学び始める前からどのような段取りで学ぶべきかのグランドデザインを自分ですることができます。自分でグランドデザインをできるということは、学びのプロセスが主体的になるということです。

私は、テクニックはあくまでテクニックであり、主体的に学ぶことが学習効率を上げる一番の近道だと思っています。ただし、主体性というものはともすると精神論になりがちなので、主体的に学ぶためのメソッドの紹介をさせて頂きました。

自分が普段あまり意識せずにやっていることを、まとめるとこのような感じでしょうか。そもそも抽象的な話なので極力具体的な例も交えつつ書いてみましたが、読み直してみても分かりにくいですね。。精進します><体系的にまとめたのは初めてなのできっと抜け漏れもあるかと思いますが、ご意見等ありましたら頂ければと思います。

私の構造的学習法 <前編> ”理解とは何か?”

以前のエントリーで「もう少し構造的な学習方法については詳しく書きたいので、別のエントリーで紹介したいと思います」と言っておきながらしばらく放置していたのを若いメンバーに指摘され筆をとった次第です(笑)今まで個人的に感覚で実践してきたものをまとめたものですので、何かのヒントになれば幸いです。

私が思うに学びというのは大きく2種類あるかと思っています。それは、静的な学び(概念の理解)と動的な学び(因果律の習得)です。この一連のエントリーでは、前者の概念の理解を効率的に行うための学び方(個人的にそれを構造的学習法と呼んでます)を紹介したいと思います。後者の学びは、フィードバック学習法と呼んでいるものがあるのですが、別の機会に紹介したいと思います。

気が重かった理由は単純で、きっと書き始めたら短くはならないだろうと踏んでましたが、実際書いてみると予想通りの長文となってしまいましたので、エントリーを分けて書きたいと思います。

本エントリーでは、構造的学習法を説明をするにあたって前提知識として、学びのゴールイメージとしての”理解”について書いてみました。構造的学習法の中身については次のエントリーで説明したいと思います。

理解とは何か

具体的な学習法に入る前に、まず学ぶことのゴールをイメージしてみましょう。学び終わった結果どういう状態になっていて欲しいのでしょうか。端的に言うとそのテーマに関して、”理解”している状態ではないかと思います。ただ、この”理解”とは何なのかを答えるのが、意外と難しいのです。”理解”を辞書で調べてみると

「物事の道理や筋道が正しくわかること。意味・内容をのみこむこと。(Goo辞書より引用)」
などと記載されています。辞書的な説明としてはよいと思いますが、これだけでは”理解”を理解したとは言えないですよね。

では理解とは何なのでしょうか?語源にさかのぼってみると、理(ことわり)というのは事(こと)を割(わ)ることから来ているそうです。理解とは、理(ことわり)をさらに分解すること。つまり、ある概念と他のものとの違いが明確になっていることが理解ではないかと、私は思っています。つまり、理解するということは、物事が違うことを知り、その違いがどういう関係性にあるのかを明らかにしていくことなのです。

少し例をあげます。例えば、LinuxとOSという2つの概念の関係性を見てみましょう(エンジニアであれば一度はLinuxとは何かを一般の人に説明したことがあるのではないでしょうか)。それは同じものでしょうか?違うものでしょうか?これらは異なるものです。図にするとこんな感じになります。まずは違うものだということが分かりますね。

ではこの2つはどのような関係性にあるのでしょうか。OSの中には、他の種類のOSも存在していて、その中の1種類がLinuxという関係になっています。ここでOSとLinuxは違うものであり、その関係性は包含関係にあるということ明らかにすることができました。

このような感じで、関係性を確かめていくことが物事の理解の一歩となります。

関係の中で意味づけされる

この例で重要なことは、Linuxという概念を人はそれ単独で理解できないということです。OSという概念との関係性の中でLinuxを理解しています。このように物事の意味というのはすべて相対的に形成されていくものなのです。私たちは、新しいことを学ぶとき、必ず今まで知っている何かと比較しながら理解を進めていきます。これは当たり前のように思えて非常に重要なことです。

では、この例においてLinuxが何かを知るにあたってそもそもOSとは何かを理解していなかったらどうすればいいのでしょうか?その時は普通、「LinuxというのはWindowsのような役割を果たすもので、そういったものを総称してOSと呼ぶんだよ」と教えるのではないかと思います。

このアプローチは、WindowsとLinuxの関係性を先に把握した上で、その後にWindowsとOS、LinuxとOSの関係性を明らかにしています。

このように、人は今まで知っている何か(Windows)と比較しながら知らなかったこと(Linux, OS)を理解をしていく癖があります。

2点間だけの距離では不十分

少し話は変わりますが、簡単な幾何の問題を考えてみましょう。3次元の空間である点Xの位置を特定したいとします。そのとき、とある点aから特定したい点Xまでの距離を知ることができました。その場合、Xの場所を特定することはできるでしょうか?

もちろん、Xの位置を特定することはできません。なぜなら2点間の距離が分かったとしても、aを中心とした球の表面の中のどの点がXなのか決められないからです。3次元の空間において、3つ以上の点からの距離が分からないと目的の点の位置を特定することはできません。

学習のゴールは概念ネットワークの構築

概念同士の関係性もこれと同様です。何か1つの概念を理解をするにあたって、ある物事との関係性を明らかにするだけではその概念の位置は特定できません。位置が分からないということは、理解できていないということです。

先ほどの例でいうと、OSとLinuxとの関係性のみではLinuxを理解したとは言えません。カーネルとLinuxの関係、ハードウェアとLinuxの関係、GPLLinuxの関係などなど、複数の概念との関係性を考えることでLinuxとは何を意味するものなのか次第にクリアになっていきます。

このように概念同士が関係性で延々とつながったネットワークが、その人の学んだ成果となります。その構造は、各概念が網の目の様につながっており、それぞれに関係性が定められている状態を指します。

学習のゴールとして私たちが得たいものはこの関係性の集合なのです。この集合を概念ネットワークと呼んでいます。導入のエントリーの割に少し長くなってしまいましたが、学習のゴールイメージは明確になったでしょうか?(後編へ続く)

Hackathon @ GaiaX フォトレポート

11月某日稟議の承認依頼があがってきたので、
グループウェアの画面を開いてみると、
そこには社内Hackathonのお菓子代の稟議が。。社内Hackathon!?
そのようにして初めて社内Hackathonの企画の存在を知ったわけです。
が、意外とこういうゲリラ的な動き嫌いじゃありません。いや、すみません。むしろ好きです。

みんな10月にYAPCに参加してウズウズしたのか、社内でHackathonやろう!
ということで社内の有志が集まって企画したところ、
総勢20名を超える参加者が集まりました。

今日は写真を交えて当日の様子を紹介します。

ハッカソン、はじまりますよー。


お前は大学院生か! 我ながら、貫録なし。


ペアとなってプログラミング。楽しそうですね。


シャレオツなメガネが気になりますね。ディスプレイも各々会場に持ち込みました。


ハッカソンで失った糖分の補給も重要です。


当日はスタバのケータリングお願いしました。ポーズがかわいいですね。


さらにカメラ目線。


各チームのプレゼンテーション。


社長も参加して、聞きいってます。


発表者も熱が入ってきました!


新人の齊藤くん。熱が入りすぎて、ヘンなポーズ。


さらに熱が入って、ヘンなポーズ。


鳥居賞の発表です。なぜか賞品を渡している私の方が低姿勢w
受賞チームは、ミドルウェアのインストールの自動化をする
ツール(GXinsco)を開発した王、佐々木ペア。
さらっとCで書いてしまうあたりさすがです。


次は、肥後賞(開発部部長)の発表です。人をほめて伸ばす
サービス(HMN84)を開発した小山、金木ペア。
心温まる企画とシュールなデザインのギャップがよかったです。


次は、佐野賞(運用部部長)の発表です。ドライブコース上の
美味しいお店を洗い出して教えてくれるサービス(Candy)を
開発した、高野、鳥居ペア。
車好きの佐野部長に狙いを絞った甲斐がありました。


最後は社長賞です。総票数が多かったHMN84が優勝でした!


最後は、一本締め!お疲れ様でした。

今回自分が作ったサービスは、最初処理が遅かったので、APIへの
リクエストの処理を並列処理化したり、キャッシュを組み込んだりしました。
1日という限られた時間でしたが、いろいろ工夫を試せて楽しかったです。

また、普段なかなか一緒に仕事をできないメンバーと制作することで、
参加者のみんなも新しい発見がたくさんあったようです。
運営を企画して、推進してくれたメンバーに感謝!
次回は3か月後ということで、今から楽しみです。

明星和楽を振り返って

運営当日はドタバタしてみてあまり写真が撮れなかったのですが、自分が撮った写真の中でお気に入りの1枚。クロージングトーク前の会場の写真です。

テクノロジーとクリエイティブと(お酒の)祭典、明星和楽(笑)

3日間にイベントを振り返って一番感じたのは、結局やってみないと自分たちも明星和楽というイベントがどういうイベントになるのか分からなかった、ということに尽きる気がします。終わってみて初めてなるほど明星和楽というのはこういうイベントだったんだ!と企画をした人たち本人が新たな発見をした感覚になったのは新鮮でした。ジャズでいうとアドリブ演奏のような感じで、参加している人たちがうねりになって盛り上がっていく感じは、最初からきっちり計画されきったイベントでは成しえなかったのではないかと思います。

これがその瞬間に盛り上がって終わりになるのではなく、今回会場でつながったものから新しいものが生み出されていくことを願ってます!

下ノ畑ニ居リマス

ガイアックス鳥居でございます。
今日11日から3日間、弊社もスポンサーしている福岡で開催されている
「テクノロジーとクリエイティブの祭典明星 和楽(みょうじょうわらく)」
というイベントに参加しています。
(本エントリーはイベント参加者向けのエントリーです)

最初はゲストとしてゆっくりさせてもらおうかと思っていたのですが、
折角こんなお祭りに参加するのであれば”同じ阿呆なら踊らにゃ損損”
ということで運営スタッフとしても参加した結果、、

弊社のスポンサーブースはこんな感じで、無人ブースと化しています(笑)
関係者のみなさま、本当にすみません、すみません><

会場のブースにある短縮URLからアクセス頂いた方で、
ちょっと話を聞いてみたいという方は、http://fb.com/shintaro.torii
宛てにメッセージを送って頂ければ、現場へ向かいますので気軽に
お呼び立てください。

そもそも明星和楽の手伝いをしようと思ったのは、
遡ると福岡で過ごしていた高校時代にWIREDという雑誌を本屋で手に取ったのが事の発端です。
それまでパソコンに関する情報といえばASCIIやWinPCなどオタク雑誌しか無かった時代に、
ビルゲイツやスティーブ・ジョブスの話(はまだまともな方)や、
もっとわけのわからない未来について、当たり前のように語ってくるメディアは
他に無かったのではないかなと思います。


(ちなみにこの表紙は村井純先生ですw)

その時から西海岸のあの熱気というか、自由な空気を
日本に持ち込まないといけないなと感じていました。
今も私がネット業界仕事しているのも、言ってみるならばそのおかげです。

それから14年経って感じるのは、インフラも人材も資金においても
日本という環境はハードとしては本当に恵まれているということです。
一方これだけ条件揃っていれば、もっともっと新しいチャレンジを生み出せるはずだとも感じます。
そのギャップが生まれる原因はなんだろうと考えた時に、14年前に感じた直観の通り、
あの熱気や自由な空気こそ今必要とされているのではないかと、そう感じます。

日頃東京で仕事をしているので、東京でのスタートアップの支援する活動が活発化しているのは理解しています。
ただ、「革命は辺境から起こる」という格言の通り、新しいチャレンジはメインストリームからではなく、
オルタナティブな環境から生まれてくるのではないかなと感じています。
そう考えたときに、まさに福岡という場はとても恵まれた環境なのではないでしょうか。
そういった想いからこのイベントの支援をしています。

予想にたがわず、イベントの運営メンバーはフリーダムすぎて時々ついていけないぐらいで、
とにかく熱気がすごいです。というか、熱気でなんとかもっています(笑)
ということでこのイベントが新しいチャレンジのきっかけになればよいなと思います!
参加されている方は大いに交わり楽しんでいってください。

最後に宣伝ですが、ガイアックスでも、2012年1月に福岡に新しいソフトウェアプロダクトの
開発拠点を設立する予定です。私自身も開発拠点で仕事をすることになります。
立ち上げにあたっては東京や他の地域からもメンバーが参加しますが、
現地でもUXデザイナー、アプリケーションエンジニア、インターンの採用を予定しています。
興味がある方は http://fb.com/shintaro.torii までメッセージを頂ければと思います!

ブラウザでワンライナー

今日は小ネタで。意外と知らない人が多かったので。
ブラウザを使ってワンライナーでHTMLを表示する方法を紹介します。
ブラウザのアドレスバーで

data:text/html, <h1> Hello World </h1>

と入力するだけ! 皆さん知ってました?

VimのText Objects を正しく理解する

Windows, Linux, MacOSどのOSでも利用できるエディタということで個人的にVimを愛用しています。私たちの会社では、エンジニアはエディタは各々好きなものを利用することにしているので、社内では他にもEmacsEclipseやメモ帳などが使われています。メモ帳Hacksは別の人に任せるとして、今回はVim派を代表して、Vimの便利な機能の中でも意外と活用されていないText Objectsについて紹介したいと思います。

基本となるText Objects

Vimには3種類の基本となるText Objectsが存在します。単語、文章、段落の3種類です。まずは単語から見てみましょう。

aw
前後の空白を含む単語(a word)
iw
前後の空白を含まない単語(inner word)

aが冠詞のaを表し、iがinnerを表し、wは単語を表しています。同じように文章と段落は以下の様に表現されます。

as
前後の空白を含む文章(a sentence)
is
前後の空白を含む文章(inner sentence)
ap
前後の空白を含む段落(a paragraph)
ip
前後の空白を含む段落(inner paragraph)

sが文章を表し、pが段落を表しているのは説明するまでもないですね。ただ、これだけでは何を言っているのかわかりませんよね?awとタイプしてもwと追記されるだけですし、もう少し見ていきましょう。

Text Objectsの操作

VimはこれらのText Objectsを対象として様々な操作を行うことができます。操作をする時のコマンドの形式は以下の様になります。

<回数><操作><Text Objects>

Vimを使っている人であれば、いつものやつね。という感じかもしれませんが、6ddとタイプして6行削除する様な操作と同じ形式です。
例えば以下のような文章を例に見てみましょう(カーソルはproductsのdにあたっている前提)。

It's really hard to design pro"d"ucts by focus groups. 

単語を前後の空白も含めて消したい場合、daw(delete a word)とタイプすると以下のようになります。前後の空白を含めて消去と言いましたが、正確には削除後にdesignとbyの間に空白が1つ残っている点に注意してください。

It's really hard to design by focus groups.

またdiwとタイプすると以下のようになります。わかりにくいですが、designの後にスペースが2つ続いています。

It's really hard to design  by focus groups.

ではdwと何が違うのでしょうか?dwとタイプすると以下のようになります。

It's really hard to design proby focus groups.

dwはそのカーソルの位置からそれ以降の単語を削除するため、単語を丸ごと消したい場合bなどを利用して単語の先頭へカーソルを移動させる必要がありましたが、Text Objectsを利用するとカーソル移動を省略できます。bdwとdawでタイプ数変わらないじゃん、という冷静な突っ込みは無視します。この例ではd(削除)を行いましたが、その他にもc(変更), y(ヤンク/コピー)もできます。同様に文章や段落も、das, dis, dap, dipでそれぞれ削除できます。
尚、2dawとタイプすると以下のように2単語が削除されます。

It's really hard to design focus groups.

ちなみに2diwとタイプすると以下のように1単語しか削除されていないように見えますが、iwは1つ以上連続したスペースを1つのinner wordとして見なすため、2diwとタイプするとproductという単語とスペース1つが削除されているというわけです。

It's really hard to design by focus groups.

また日本語の場合はどうなるのでしょうか?以下の文を例に見てみましょう(カーソルはフォーカスグループのスにあたっている前提)。

フォーカ"ス"グループによって製品をデザインするのはとても難しい。

単語を削除するためにdawとタイプすると

によって製品をデザインするのはとても難しい。

このように意図した通りにフォーカスグループという単語全体が削除されます。実はdiwとタイプしても同様に単語全体が削除されます。

によって製品をデザインするのはとても難しい。

このように日本語は単語間にスペースが無いため、dawとdiwの結果は同じになるようです。

プログラミング/マークアップに利用できるText Objects

w(単語)、s(文章)、p(段落)に対する操作を見てきましたが、プログラミングやマークアップでは以下のText Objectsの方が利用できます。個人的にもプログラミングをする際には、こちらの方が利用頻度は高いのでよく使うものから覚えて慣れておくとよいと思います。

a]
前後のを含むで囲まれたブロック
i]
前後のを含まないで囲まれたブロック
a)
前後の()lを含む()で囲まれたブロック
i)
前後の()を含まない()で囲まれたブロック
a>
前後の<>を含む<>で囲まれたブロック
i>
前後の<>を含まない<>で囲まれたブロック
a}
前後の{}を含む{}で囲まれたブロック
i}
前後の{}を含まない{}で囲まれたブロック
a"
前後の""を含む""で囲まれたブロック
i"
前後の""を含まない""で囲まれたブロック
a'
前後の''を含む''で囲まれたブロック
i'
前後の''を含まない''で囲まれたブロック
at
前後のタグ(htmlやxmlタグなど)を含むタグで囲まれたブロック
it
前後のタグ(htmlやxmlタグなど)を含まないタグで囲まれたブロック

コマンドを忘れた場合も:help text-objectsで調べられるので併せてそちらも活用してください。