前回はどのように要約を書けばいいかの話だけで、実際に要約するまでに至らなかったので、今回はその続きの話をしましょう。

まずは、要約の目的を設定しましょう。この設定を行う場合はどのような人が読むとちょうどいい要約になるかを想定してできるだけ具体的に行います。ここでは「Java言語によるWebアプリケーション開発経験者がプログラミングという観点からGroovy/Grailsは使う価値があるかの判断材料にする」と、目的を設定します。

次はannotatingをしていきますが、私は

  • 重要な文を囲む
  • キーワードや重要なフレーズに下線を引く
  • 疑問がある単語を○で囲む
  • 空白にパラグラフのまとめや大まかな分類を書く

筆者が行ったannotatingの例

という作業を行いました。このannotatingを"Grails Features and Architecture"の章について行った例をスキャナで読み込んだ画像があるので参考にしてください。annotatingするときには、前回も触れましたが、main ideaなのかサポートのためのdetailsやsamplesなのかを区別する努力をしましょう。1回読んだだけでは区別は難しいかもしれませんが、気にしながら読んでいると2回目にはわかるようになるかと思います。

annotatingから要約に進むとき、役に立つのは空白部分に書き込んだまとめや分類です。英語のテキストには「空白に書いたパラグラフのまとめを繋げればほぼ要約は完成する」と説明されていることがあるくらいです。理解も深まるのでできるだけまとめを書いていきましょう。ただし、ソフトウェアのドキュメントの場合、サンプルコードやそのsnippets、コマンド実行例があったり、箇条書きの部分があったりと、見かけどおりのパラグラフでは内容が切れていないことがあります。話が変わったかなと思うところで段落をまとめて、各段落ごとにまとめを書くといいでしょう。

annotatingができたら、要約を書く前にoutliningを行うとさらに要約を書きやすくなります。outliningというのは別の紙にannotatingの際に書いたまとめを順番に並べてみる作業です。技術文書の場合、各章のタイトルがあることが多いので、まずはこのタイトルを並べて書いてみます。そして、各章ごとにその章のポイントは何なのかをできるだけ簡潔に書いていくといいでしょう。

前回取り上げた"An Introduction to Groovy and Grails"では、次のようにoutliningをしてみました。ここでは前回書き出したthesisの3つのポイントのどれと関連しているかがわかるようにタイトルに書き足しています。

  • What is Groovy? - the Web development capabilities of Groovy
    GroovyはJavaに似ているが、シンプルでルールも少なくてしかも高い能力がある。
  • Web Development with Groovy - the Web development capabilities of Groovy
    お決まりのメソッドやお決まりの変数宣言の必要がないgroovletを使う。JSP相当のGSPもあるがJSP/GSPどちらも使える。
  • Grails Features and Architecture - the various features of Grails
    "coding by convention"パラダイムのアイディアによりMVCモデルのコードを自動生成し、短時間で複雑さを低減したプログラミングを可能にするのがGrailsである。
  • Grails Installation
    (設定の話題でプログラミングではないので取り上げません)
  • Developing a Grails Application: Application Structure - a sample Grails Web application
    最初にgrails create-appコマンドを使ってcontrollers、view、domains(model相当)、test、configurationなどからなるGrailsプロジェクトのディレクトリ階層を作る。
  • Database(Dose this section focus on one of the features or setting up of a sample application?)
    Grailsは付属しているHSQL DB以外のDBでも簡単に利用できる。
  • Domain Classes -a sample Grails Web application
    2番めにCRUD操作のメソッドを持つdomainクラスをgrails create-domain-classコマンドで自動生成させる。
  • Controllers and Views - a sample Grails Web application 3番めにcontrollersとviewsを generate-all(generate-controller)コマンドで自動生成させる。
  • Deploying and Running Grails on a Java EE Server - a sample Grails Web application
    付属のResinで実行するか、grails warコマンドでwar fileを作成すれば、他のアプリケーションサーバで動かせる。
  • Creating Custom Controllers - the various features of Grails
    grails create-contorllerコマンドを使うとdomainクラスに依存しないcontrollerのクラスを自動生成できる。
  • Create Custom View - the various features of Grails
    現在Grailsにはdomainクラスに依存しないviewを自動生成するコマンドはないので、そのようなviewファイルを自分で作る。
  • Services- the various features of Grails
    Springのdependency Injectionを利用してビジネスロジックを分離できるようになっている。
  • Dynamic Methods and Properties - the various features of Grails
    GroovyとGrailsの特徴となっているMeta Object Protocol(MOP)によりダイナミックメソッド、ダイナミックプロパティ(定義しなくても利用できるメソッド、プロパティ)が存在する。
  • In passing: Auto Reload and @Property
    (プログラミングの話題ではなく、利用できる機能でもないので取り上げません)

どうでしょうか。要約の目的からして省いてもいい部分はまとめを書いていません。以上のまとめを繋げると、

GroovyはJavaに似ているが、シンプルでルールも少なくてしかも高い能力がある。Webアプリケーションでは、お決まりのメソッドやお決まりの変数宣言の必要がないgroovletを使う。JSP相当のGSPもあるがJSP/GSPどちらも使える。

GroovyのフレームワークGrailsは"coding by convention"パラダイムのアイディアによりMVCモデルのコードを自動生成し、短時間で複雑さを低減したプログラミングを可能にしている。Grailsでアプリケーションを作る場合、最初にgrails create-appコマンドを使ってGrailsプロジェクトのディレクトリ階層を作る。

2番めにCRUD操作のメソッドを持つdomainクラスをgrails create-domain-classコマンドで自動生成させる。

3番目のステップではControllersとViewをgenerate-all(generate-controller)コマンドを使って自動生成させる。このようにして作ったアプリケーションは付属のResinで実行するか、grails warコマンドでwar fileを作成すれば、他のアプリケーションサーバで動かせる。(略)

のようになります。要約らしくなりましたね。

2回続けて要約の話をしましたが、参考になったでしょうか。main ideaとそのsupportを区別するところが一番難しいのではないかと思いますが、慣れれば必ずできるようになるので、何度か試してみてください。