give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

「RSpec で example の外で定義したローカル変数を使うのはアリか?」に対する僕の見解と解決策

はじめに

先日、「RSpec で example の外で定義したローカル変数を使うのはアリか?」というブログ記事を拝見しました。

ブログの作者である「きいあむ」さんは、「exampleの外で定義したローカル変数を使うのもアリなのでは?」というスタンスで記事を書かれています。

ですが、僕は「うーん、これはちょっと・・・」という感が否めません。
そこでこのエントリでは上記ブログ記事の内容に対する、僕の見解と考えられる解決策を書いていきます。
RSpecでテストを書くことがある人は参考にしてみてください。

上記ブログの簡単なまとめ

さくっと要点を把握したい、という方のために、きいあむさんの意見を簡単にまとめておきます。

RSpecでは値を共通化するために、インスタンス変数やletを使います。
たとえば、何も考えずに愚直テストを書くとこんな感じになります。

describe User do
  it 'is valid' do
    user = User.create(name: 'Alice')
    expect(user).to be_valid?
  end
  it 'sets name' do
    user = User.create(name: 'Alice')
    expect(user.name).to eq 'Alice'
  end
end

上のコードでは"user = User.create(name: 'Alice')"が重複しているので、beforeブロックとインスタンス変数を使って共通化することができます。

describe User do
  before do
    @user = User.create(name: 'Alice')
  end
  it 'is valid' do
    expect(@user).to be_valid?
  end
  it 'sets name' do
    expect(@user.name).to eq 'Alice'
  end
end

ですが、RSpecの場合はインスタンス変数よりもletを使う方が一般的にベターです。

describe User do
  let(:user) { User.create(name: 'Alice') }
  it 'is valid' do
    expect(user).to be_valid?
  end
  it 'sets name' do
    expect(user.name).to eq 'Alice'
  end
end

インスタンス変数よりもletを使うメリットについては以前こちらのQiita記事に書いたので、ここでは省略します。

だいたいはこんなふうに書くのがRSpecの世界では一般的なのですが、先ほどのきいあむさんのブログの中では、「example(it)の外でローカル変数を使ってもいいんじゃないか?」という話が書いてあります。
たとえばこんな感じです。

describe User do
  # userをローカル変数として宣言する
  user = User.create(name: 'Alice')
  it 'is valid' do
    expect(user).to be_valid?
  end
  it 'sets name' do
    expect(user.name).to eq 'Alice'
  end
end

具体的なユースケースや詳しい挙動についてはきいあむさんのブログで説明されているので、そちらをご覧ください。

その発想は無かった・・・が!

僕は長年RSpecを使っていましたが、データを共通化するためにローカル変数を使うという発想は全くありませんでした。
言われてみれば、これでも確かに動きます。
きいあむさんは「(元々)RSpec の作法をよく知らなかった」とのことですが、非常に面白いコード例だなと思いました。

が!

確かに動くことは動くものの、これを「アリ」として広めてしまうのはちょっと問題がある気がします。
具体的にどのあたりが問題なのかを以下に書いていきます。

問題点1:一般的ではない(DSLから逸脱している)ため、他の人が困惑する

きいあむさん自身もブログで「このような書き方を全く見かけない」と書いているとおり、exampleの外で宣言したローカル変数を使い回すというのは一般的ではありません。
そのため、このコードを見た人が「なんでこんなことをしてるんだろう?どういう意図なんだろう?」と困惑してしまいます。

特に、RSpecはDSLを強調するテスティングフレームワークなので、DSLから外れたコードを書くと違和感がかなり強くなります。

チームで開発したりするときは毎回質問が飛んで、元の作者が毎回それに答える、というような非効率なやりとりが発生するかもしれません。
なので、共通言語としてのDSLからはなるべく逸脱しないようにする方が良いです。

問題点2:RSpecのDSLとRuby言語の仕様で脳みそを切り替える必要がある

ローカル変数にした場合、そこだけRuby言語のルールでコードを読む必要があります。
下記のコードでuserがletと(一見)同じように動くのは、「ブロックの外で宣言されたローカル変数はローカル内部で参照可能」というRuby言語の仕様に従っているためです。

describe User do
  # ブロックの外で宣言したローカル変数は・・・
  user = User.create(name: 'Alice')
  it 'is valid' do
    # ブロック内でも参照できる
    expect(user).to be_valid?
  end
  it 'sets name' do
    # ブロック内でも参照できる
    expect(user.name).to eq 'Alice'
  end
end

上のようなシンプルなコードであればまだ動きを把握しやすいです。
しかし、テストコードが大きくなってdescribeやcontextがたくさんネストしたり、ローカル変数とletが混在したりしはじめると、RSpecのDSLとして理解すべき部分とRuby言語の仕様として理解すべき部分が入り交じって、動きを把握しづらくなります。

問題点3:変数の寿命が長くなり、予期しないタイミングでデータの状態が変わるリスクがある

beforeとインスタンス変数を使った場合やletを使った場合は、exampleのたびにデータ(@userやuser)が作り直され、exampleごとにテストデータが独立しています。

しかし、exampleの外のローカル変数はRSpecがテストコードを読み込んでいくタイミングで作成され、それがずっと保持されます。
そのため、次のように変数の状態をうっかり変えてしまうと他のテストが失敗します。

describe User do
  # この変数はずっと保持される
  user = User.create(name: 'Alice')
  it 'is valid' do
    expect(user).to be_valid?
    # テスト実行中にわざとnameを変更する
    user.name = 'Bob'
  end
  it 'sets name' do
    # user.nameが'Bob'になっているので、テストが失敗する
    expect(user.name).to eq 'Alice'
  end
end

これはきいあむさんもブログの中で「テスト実行中に変数の状態が変わったりしたら、なんかまずそうなので、定数にしたり freeze した方が安全かも」と書いていて、まさにその通りです。
上のコード例はちょっとわざとらしいですが、配列やハッシュであれば要素の追加や削除で状態を変えられてしまう可能性は結構あると思います。
なので、不必要に変数の寿命を延ばすのは避けるべきです。


・・・と、僕がぱっと思いつく問題点はこんな感じです。
では、どういうふうに書き直すのがいいでしょうか?

解決策あれこれ

解決策はいくつか考えられます。
なお、きいあむさん自身もブログ内で「RSpecの流儀に合わせるなら」という別解を示しているので、重複する部分もあるかもしれません。

その1:お作法を知らなかったのなら、素直にletやインスタンス変数を使う

「letやインスタンス変数を使うのがRSpecのお作法だとは知らなかった」というのが理由であれば、素直にletやインスタンス変数を使うspecに書き直す方がいいです。
理由は先ほど述べたような問題点があるからです。

その2:固定値を使い回したいのなら、定数化する

どのテストでも変化しない共通の固定値を宣言するならローカル変数ではなく、定数にした方が意図が伝わりやすいと思います。

describe SomeController do
  # 共通の値を定数化する
  IN_SALE = 'in_sale'.freeze
  context 'ログイン前' do
    it 'リダイレクトされる' do
      get :index, params: { status: IN_SALE }
      expect(response).to redirect_to root_path
    end
  end
  context 'ログイン後' do
    before do
      sign_in
    end
    it 'リダイレクトされない' do
      get :index, params: { status: IN_SALE }
      expect(response).not_to redirect_to root_path
    end
  end
end

とはいえ、他のspecで同名の定数を宣言していると"warning: already initialized constant IN_SALE"のような警告が出て既存の定数を上書きしてしまうので、それほど安全な解決策ではありません。

その3:パフォーマンスが問題になるならbefore :allを使う

userを作成するのに非常に長い時間がかかるので、絶対に1回しか実行したくない、という場合は"before :all"を使います。

describe User do
  before :all do
    # 1回しか実行されない
    @user = User.create(name: 'Alice')
  end
  it 'is valid' do
    expect(@user).to be_valid?
  end
  it 'sets name' do
    expect(@user.name).to eq 'Alice'
  end
end

インスタンス変数だとtypoが怖い、という場合は、別途letを宣言するのもいいかもしれません。(こんなコードは実際に書いたことはないですが)

describe User do
  let(:user) { @user }
  before :all do
    @user = User.create(name: 'Alice')
  end
  it 'is valid' do
    expect(user).to be_valid?
  end
  it 'sets name' do
    expect(user.name).to eq 'Alice'
  end
end

ただし、example外のローカル変数と同様、作成した変数(user)はテスト実行中保持されるので、うかつに状態を変えないように注意しなければなりません。

その4:タイピング量の多さが問題なら、雑にspecを書く

「"let(:user) { User.create(name: 'Alice') }"だとタイピング量が多くてしんどい、"user = User.create(name: 'Alice')"の方がラクだ」という場合は、いっそのこと「雑なspec」を書くのもひとつの手です。

たとえば、無理にletにしなくてもexample内のローカル変数で書けばいいです。(最初に示したコード例がそれ)

describe User do
  it 'is valid' do
    user = User.create(name: 'Alice')
    expect(user).to be_valid?
  end
  it 'sets name' do
    user = User.create(name: 'Alice')
    expect(user.name).to eq 'Alice'
  end
end

なんならexampleをまとめちゃうのもアリです。

describe User do
  example do
    user = User.create(name: 'Alice')
    expect(user).to be_valid?
    expect(user.name).to eq 'Alice'
  end
end

exampleをまとめると途中でテストが失敗したときに後のテストがパスするのかしないのか分からない、というデメリットがあります。
また、毎回example内にローカル変数を宣言するとテストコードがDRYにならない、というデメリットもあります。
ですが、さくっとテストを書けるメリットと天秤にかけて、あえて早く書ける方を選ぶのもいいと思います。(最近僕はこの傾向が強いです)

複数のdescribeやcontextにまたがるのであれば、beforeブロックの中でインスタンス変数を作るという手もあります。

describe User do
  before do
    # letをやめてインスタンス変数で宣言してしまう
    @alice = User.create(name: 'Alice')
    @bob = User.create(name: 'Bob')
    @carol = User.create(name: 'Carol')
    @dave = User.create(name: 'Dave')
    @ellen = User.create(name: 'Ellen')
  end
  context 'Aの場合' do
    it 'xxxすること' do
      # @aliceや@bobを使ったテストを書く
    end
  end
  context 'Bの場合' do
    it 'xxxすること' do
      # @aliceや@bobを使ったテストを書く
    end
  end
end

もちろん、インスタンス変数だとtypoしたときにNameErrorではなくnilが返ってきてしまう、という問題がありますが、たいていの場合はテストの結果がおかしくなって問題に気づくはずなので、そこまで致命的ではないと思います。

その5:DSLの制約が苦痛なら、Minitestやtest-unitを使う

「RSpecの流儀に従うのは苦痛だ、自分はもっと自由にRuby言語の機能を活用したい!」という場合は、Minitestやtest-unitを使うのがいいと思います。
Minitestやtest-unitは「Rubyらしさ」を重視したテスティングフレームワークで、「Ruby言語でできることはテストコード内でも自由に利用すればよい」というスタンスを持っています。
とはいえ、情報が少なかったり、RSpecで簡単にできていたことができなかったりすることもあるので、一長一短な面はあります。

まとめ

というわけで、このエントリでは「RSpec で example の外で定義したローカル変数を使うのはアリか?」というきいあむさんのブログに対する僕の見解と解決策を書いてみました。
「exampleの外にローカル変数を宣言する」というアイデアはこれまで思いつかなかったし、実験レベルではなかなか面白いなと思います。
ですが、積極的に実務のコードに取り入れていくのはちょっとNGかな、というのが僕の見解です。

みなさんはどうお考えでしょうか?
「僕はこう思う」という意見があれば、みなさんもご自身のブログ等で公開してみてください!

あわせて読みたい

「そもそもRSpecがよくわからないんだけど?」という方はこちらのQiita記事をご覧ください。

「雑にspecを書く」場合をもう少し詳しく説明しています。

RSpecとMinitestってどう違うの?という方はこちらのスライドが参考になるかもし得ません。

PR:RSpecの電子書籍を販売しています

すでにご存知の方も多いかもしれませんが、僕が翻訳した「Everyday Rails - RSpecによるRailsテスト入門」という技術書を電子書籍で販売しています。
RSpec初心者の方でも十分わかりやすい内容になっているので、まだ読んでない方はぜひ読んでみてください!

Everyday Rails - RSpecによるRailsテスト入門
f:id:JunichiIto:20160424081240p:plain

兵庫県西脇市のシティプロモーションや地方創生について思うこと

はじめに

僕は兵庫県西脇市という田舎町に住んでいます。
去年ぐらいから市役所の方から声をかけてもらうようになり、いわゆる「地方創生」関連のタウンミーティング等に参加させてもらっています。
先日は「わたしがかえる大会議」という市民ワークショップに参加してきました。
これは西脇市のシティプロモーション戦略(いわば町おこし)を市民で議論するワークショップです。

当日の様子は西脇市のWebサイトに掲載されています。

 平成28年7月25日(月曜日)に開催された「第4回まち・ひと・しごと創生会議」 で、当該会議をシティプロモーション戦略プランの策定・検証・推進機関と位置付け、その下に市民の皆さん等の意見を聞く場として、市民ワークショップ(通称"わたしがかえる大会議")を設置することが決定されました。


 初開催となる今回は、本格的な人口減少社会の到来に備えて、西脇市の"ブランド力"を強化する必要性などについて考えました。
 参加したのは、西脇市を中心にファッションや飲食、農業、アートなど各分野で活躍する30~40歳代前半の皆さん。市を取り巻く現状や望ましい将来像などについて各自発表した後、西脇市の魅力の掘り起こしや、市のブランド力向上のための将来目標(ビジョン)などについて活発に意見が交わされました。


 メンバーたちは、「西脇市には一流の"織"や"食"など多彩な魅力がある。市民一人ひとりにそれらの魅力を知ってもらい、胸を張ってほしい」「本物を知るこのまちで、自分の望む未来を実現したいと誰もが考えることができれば、よい方向に変わっていくのでは」などと期待を込めて話していました。
 次回のワークショップでは、市のブランド戦略や市民としての誇りを喚起する取り組みなどについて検討される予定です。
 

市民ワークショップ "わたしがかえる大会議" - 西脇市

f:id:JunichiIto:20160819142245j:plain:w400f:id:JunichiIto:20160819134828j:plainf:id:JunichiIto:20160819134033j:plain
写真:西脇市

放っておくとどんどん過疎化や少子高齢化が進んでいく地方都市で、行政がこういった具体的なアクションをリードしていくのは非常に良いことだと思います。
また、ワークショップに参加していた西脇市民の方(市外の方も一部おられました)も、みなさん西脇市が大好きな方たちばかりで、西脇市の現状や将来について熱く議論されていました。

一方で「都市部から西脇市に移住した人間」の感覚としては、熱い地元愛だけじゃ町おこしは成功しないんじゃないかな~と思う気持ちもあります。
そのあたりのふわふわっとした気持ちをつらつらと書いていってみます。

そのまえに:軽く自己紹介

僕は大阪府豊中市で生まれ育ちました。
20代半ばまで豊中に住んでいたので、それまではいわゆる「都会っ子」でした。
今、西脇市に住んでいるのは妻の実家が兵庫県西脇市にあるからです。

もともと西脇市に住むつもりはなかったのですが、長男が生まれたときに「自然豊かな田舎で子どもを育てたい」と思ったのがきっかけで西脇市に移住しました。
西脇市に住んでかれこれ10年近く経ちます。

現在はソニックガーデンという東京のIT企業のプログラマとして、自宅でリモートワーク(在宅勤務)しています。

f:id:JunichiIto:20160831092747j:plain
写真:西脇市

さらに:西脇市についても簡単に紹介

西脇市は神戸の北西約50kmに位置する、自然豊かな田舎町です。

f:id:JunichiIto:20160831100002j:plain
画像:西脇市

面積は約132㎢、人口は約4万2000人です。(出典
ちなみに東京都渋谷区は面積が約15㎢、人口が約22万人なので、「西脇は渋谷に比べて9倍近い面積があるのに、人口は5分の1しかいない町」ということになります。
(こうやって比べると東京の人の多さにビックリしますね。。)

播州織という先染め綿織物が昔ながらの特産品ですが、生産量や工場は最盛期の10分の1まで落ち込み、厳しい状況が続いています。(出典

f:id:JunichiIto:20160831093237j:plain
写真:西脇市

最近では神戸ビーフとして認定されている黒田庄和牛を使ったローストビーフなども地元の特産品として力を入れています。

f:id:JunichiIto:20160831093357j:plain
写真:西脇ローストビーフ提供店舗|西脇いちおしグルメ

思うこと1:西脇市はいい町だ

僕自身は西脇市は非常にいい町だと思っています。
自然が豊かで、子どもたちと外で遊ぶのにもってこいです。
先日も近くの用水路でザリガニを釣って遊んでいました。

f:id:JunichiIto:20160831093701j:plain

食べ物も美味しいですし、大阪に住んでいた頃には考えられなかったような大きな家も建てることができました。
僕は音楽好きでギターをよく弾きますが、多少大きな音で鳴らしても近所迷惑にならないのは本当に嬉しいです。

f:id:JunichiIto:20160831093754j:plain
写真:西脇市

もちろん「都会に比べて悪いところは全くない」というわけではありませんが、それでもプラスマイナスすれば、僕にとっては都会よりも西脇に住む方がプラスになっています。


さて、こんなふうに西脇市民の各自が「西脇いいよ!西脇大好き!」って思うことは全然構いません。
むしろ、好ましいことだと思います。

しかし、シティプロモーションをする場合はそれだけではダメだと思っています。

思うこと2:それって、市外の人にニーズはある?

シティプロモーションを行う相手は基本的に市外の人(特に都会の人?)になります。
市外の人たちに対して「西脇いいよ!」「播州織いいよ!」「西脇に移住しませんか?」と叫ぶだけでは、その人たちのアクションにつながらないと思います。
少しキツい言い方をするなら「内輪で盛り上がってちゃダメ」だと思っています。

当たり前のことですが、ニーズがないものに投資をしても意味がありません。
まず相手のニーズがあるか?市外の人たち、都会の人たちはそれを必要としているのか?を第一に考え、それを西脇の何かに結びつける必要があると思います。

西脇にはXXXがある、西脇のXXXは素晴らしい、自分と同じようにきっとみんな気に入るはずだ、だからXXXをプロモーションする!・・・という順番で考えてしまうと、「実は全然ニーズがなくてサッパリ売れなかった」という事態に陥ります。

ニーズありきで西脇とうまく結びついている良い具体例を挙げるならこんな感じです。

私は服飾デザイナーだ。服のデザインだけでなく、使う生地からこだわりたい。そのためには生地の産地に直結した職場環境が必要だ。
→ 西脇に移住すれば播州織の産地で服のデザインができる!

私は子育て中の母親だ。子どもたちにボーネルンドの遊び道具で遊ばせたい。できればお金はあまりかけたくない。
→ 西脇の複合施設「みらいえ」に行けば無料でボーネルンドの遊び道具で遊べる!

私は都会生まれの都会育ちだ。今も都会に住んでいる。しかし、一度野生のホタルを子どもたちに見せてやりたい。
→ 西脇に行けば野生のホタルが見られる!

私はおいしいものを食べるのが大好きだ。先日知人から週2回しか営業しないこだわりのパン屋さんがあると聞いた。一度行ってみたい。
→ 調べてみたらそのパン屋さんは西脇にあった!

ここでのポイントは必ずしも「西脇」である必要はない点です。
「西脇」を「丹波」や「加西」に変えても文章としては成り立ちます。
でも、それでいいんです。
市外の人たちからすれば「XXXがしたい」というニーズが先にあり、それを求めた先にたまたま西脇があった、という話ですが、それで全然構わないと思います。
むしろ、そうでないと市外の人たちは動いてくれません。

ニーズよりも先に「西脇でなければダメ」「播州織でなければダメ」という「指名」をもらえるようにするには、京都だとか、シャネルだとか、誰もが知っていてみんなが憧れるようなブランド力を付ける必要があります。
ですが、いきなりそこを目指すのはかなり非現実的だと思います。

思うこと3:それってお金になる?

次に大事なことは「儲からないと意味がない」ということです。
無料の遊び道具で遊んですぐに帰った、ホタルを見るだけ見てすぐに帰った、では西脇には全くお金が落ちません。
西脇に来たらどこかで買い物をしてもらったり、食事をしてもらったりしないと、人が来るだけ来て終わり、になってしまいます。

お金が儲かれば仕事も増えやすくなり、その結果人も増えます。
人や職場が増えれば行政も潤って、市民の生活に還元されやすくなります。
もしそうなれば西脇市民の人たちも「町おこしが成功した」と感じ取ってくれるのではないでしょうか。

お金はつぎ込んだ、そこそこ人も集まった、でもトータルとしては赤字だった、ではダメです。
新しい事業を始めるなら、ちょっとでもいいから毎年黒字になるような事業を計画する必要があります。

・・・という話は僕独自の考えではなく、以前読んだこちらの本の受け売りですw

稼ぐまちが地方を変える 誰も言わなかった10の鉄則 (NHK出版新書)

稼ぐまちが地方を変える 誰も言わなかった10の鉄則 (NHK出版新書)

著者の木下斉さんは地方創生に関連したWeb連載も執筆されています。

たとえば、現在西脇市では「ブランド戦略」を考えようとしていますが、地域のブランド化については以下のような記事が書かれています。

このWeb連載はどの話も「うーん、たしかに・・・」と唸ってしまう内容ばかりです。
地方創生に関わる人であれば、一度目を通しておいて損はないと思います。

まとめ:ダメ出しは易く、アクションは難し(自省)

というわけで、シティプロモーションや地方創生に関して、僕が考えていることをあれこれ書いてみました。

いや~、でもね、自分でも半分わかってはいるんですよ、ダメ出しするだけなら簡単だって。
「じゃあ、一体どうすれば?何かいいアイデアあるの?アイデアがあったとして、自分から行動できるの??」って言われたら僕も「んぐぐぐ・・・」となってしまいます。
それだけに、ダメ出しばっかりするのは気が引けるんですが、それでもやっぱり「内輪で盛り上がって終わり」じゃダメだと思うので、思い切ってここに書いてみることにしました。

とりあえず、僕の考えはアウトプットしたので、ワークショップに参加しているみなさんにもこうした考えを頭の片隅に置いてもらいながら、これから引き続き議論していけたらいいな~と思います。

シティプロモーション活動、うまく進むといいなあ。
僕もがんばりまーす!

あわせて読みたい

田舎暮らし、楽しいですよ~という話はこちらに書きました。

今年はもう見頃が過ぎてしまいましたが、西脇市では野生のホタルが見られます。
来年の6月になったら西脇市へぜひ!

新鮮な魚介類が食べたい → よし、舞鶴へ行こう、という具体例もあります。
こういう流れを西脇でも作りたいですね。
blog.jnito.com

すいません、「週2回しか営業しないこだわりのパン屋さん」っていうのは僕の妻がやっている店のことですw
Coupé Baguette クープ バゲット
f:id:JunichiIto:20150324074822j:plain

西脇市の移住促進サイトです。僕たち夫婦のインタビュー動画も載ってます!
西脇市定住促進サイト ほっこり、のんびり にしわきごこち
f:id:JunichiIto:20160831095331p:plain

西脇市の複合施設「みらいえ」に行くとボーネルンドの遊び道具が無料で遊べます!
市外の人でも利用OKです。
【西脇市茜が丘複合施設 Miraie(みらいえ)①】 | 兵庫のちいさな移住手帖
f:id:JunichiIto:20160831094747j:plain

服飾デザイナーの村田さんは理想の仕事環境を求めて東京から西脇に移住されました。
hatsutoki(ハツトキ)は村田さんが立ち上げられた服のブランドです。
hatsutoki | ハツトキ
f:id:JunichiIto:20160831095813p:plain

大の大人が本気で夏休みの読書感想文を書いてみた話

はじめに

我が家には小2と小5の二人の子どもがいます。
今は夏休みで当然夏休みの宿題が出ています。

で、夏休みの宿題と言えばアレですよ、アレ。読書感想文!
うちの子どもたちもしっかり読書感想文の宿題が出されていました。
僕も小さい頃やりましたが、未だに続いているんですね~。

そして子どもたちは読書感想文が苦手です。
毎年四苦八苦しながら書いています。
(まあ、得意な子の方が少ないと思いますが)

しかし、僕は今年でもう39歳!ブログもたくさん書いてる!
一部の界隈では評価も高い!(のか?)
大の大人が本気を出せば、読書感想文なんて超楽勝で書けるはず!!

というわけで、試しに僕も子どもたちと同じ条件で読書感想文を書いてみました。

f:id:JunichiIto:20160827074929j:plain
先日家族でひらかたパークに出かけました。(本文とは無関係)

今回の課題図書

子どもたちが図書館で借りてきた本は以下の2冊です。

世の中への扉 ピアノはともだち 奇跡のピアニスト 辻井伸行の秘密

世の中への扉 ピアノはともだち 奇跡のピアニスト 辻井伸行の秘密

メガネをかけたら

メガネをかけたら

上の本は盲目のピアニスト、辻井伸行さんの本で、辻井さんが生まれてからヴァン・クライバーン国際ピアノコンクールで優勝するまでの半生が描かれています。
これは小5の息子が借りてきました。

下は恥ずかしくてどうしてもメガネをかけたくない小学生の女の子が、先生や両親の協力を得て抵抗なくメガネをかけられるようになった、というエピソードを描いた絵本です。
これは小2の娘が借りてきました。

読書感想文の執筆ルール

僕は以下の条件で読書感想文を書くことにしました。

  • 分量は学校から出された宿題と同じにする
    • 小5の読書感想文は原稿用紙2.5枚以上3枚以下(1000字~1200字)
    • 小2の読書感想文は原稿用紙1.5枚以上2枚以下(600字~800字)
  • 読書感想文で使う漢字はそれぞれ小5と小2までに習った漢字とする
  • 僕の書いた読書感想文を子どもたちに丸写しさせない(当然)
  • 自分は架空の39歳の小学5年生、小学2年生という設定にする(えっ)

まあ、最後の設定は余計かもしれませんが、こんな条件で大の大人が読書感想文を書いてみました。
それがこちらです!

感想文「ピアノはともだち」を読んで

 ぼくは辻井伸行さんのことは名前は知っていましたが、これまで演そうはちゃんと聞いたことがありませんでした。この本を読んで辻井さんの演そうに興味を持ったので、YouTubeで辻井さんの動画を見てみました。本の中では「しょう害は関係ない」「辻井さんは心でひいている」といった、技術面以外のことを強調していましたが、動画を見てぼくはむしろ辻井さんのテクニックの方にびっくりしました。
 まず、辻井さんは遠くはなれたけんばんを何度も行き来しながら演そうしていました。目が見えないのに、何で遠くはなれたけんばんの位置がわかるのでしょうか。ぼくもピアノを習っていましたが、目かくしで同じ事をやれと言われたら絶対にできません。それに、こんなに長くてむずかしい曲を楽ふなしで、音を聞くだけで演そうできてしまうというのも信じられません。
 本を読んでいるときは「すごいなあ。人間ってやれば何でもできるんだ。」というようにしか感じませんでしたが、動画を見ると「本当にこんなことが人間にできるんだろうか。実は目が見えているんじゃないか。むしろそう言われた方がなっとくできる。」と思いました。本のサブタイトルには「きせきのピアニスト」と書いてありますが、辻井さんは本当にきせきのピアニストだと思います。
 本の中には辻井さんが生まれてから、20才のときにヴァン・クライバーン国際ピアノコンクールでゆう勝するまでの物語がえがかれています。その中で印象的だったのは辻井さんのお母さんをはじめ、学校の先生やピアノの先生など、たくさんの人たちの出会いと協力があったことです。もちろん、辻井さん自身の才能や努力もすごいと思いますが、周りの人たちの出会いと協力がなければ、ここまですごいピアニストになることはなかったと思います。
 人間は自分一人の力では生きていけません。それはしょう害がある人も、ない人も同じです。ぼくは辻井さんのようなすごい人にはなれないかもしれませんが、これからはぼくももっと人との出会いを大切にしていこうと思いました。また、自分の周りにいる人たちに対してもいろんな協力をしてあげることで、自分がその人の人生に何かよいえいきょうをあたえられたらいいなと思います。

(920字)

参考:辻井伸行さんの演奏動画

辻井伸行さんによる演奏の一例です。
これで「目が見えてない」「楽譜が読めないので耳で覚える」って僕には信じられません。。


辻井伸行 ラ・カンパネラ

感想文「メガネをかけたら」を読んで

 ぼくはメガネをかけていないので、メガネをかける子の気もちはちょっとよくわかりません。でも、目がわるくてメガネをかける子は、まわりにメガネをかけている子がいないとすごくはずかしいのかもしれません。
 さいしょ、まわりの大人は「めがねをかけるとおりこうそうに見えるよ」とか「かわいく見えるよ」と言って、女の子にメガネをつけさせようとします。でも本当にかしこくなったり、かわいくなったりするわけではないので、そんなことばでははずかしい気もちをかえることはできませんでした。
 はずかしい気もちがかわったのは、まわりの大人もメガネをつけてくれるようになったのと、大人の人から「メガネをつけるとものがよく見えるようになる」と教えてもらったからです。メガネをかけているのは自分だけではないということと、メガネをかける本当のりゆうがわかったから、女の子はメガネをかけるのがいやじゃなくなったんだと思います。
 そして、そんなふうにまわりの大人をかえてくれたのは、たんにんの先生です。きっとたんにんの先生が女の子のお母さんやほかの先生にきょうりょくしてくれるようにおねがいしたんだと思います。この先生はとてもやさしいなと思いました。ぼくもこの先生のようにほかの人の気もちを考えてやさしくできるようになりたいです。

(546字)

約30年ぶりに読書感想文を書いた感想

えーと、すいません。予想以上に難しかったです!!
書く前は「こんなの楽勝でしょ?」って思っていましたが、全然楽勝じゃなかったです。。

規定の字数に達しなかった

ご覧のとおり「ピアノはともだち」の方は規定の1000字に到達しませんでした(泣)。
長文ブログを書くのは得意なのに、読書感想文になると規定の字数に達しないというのは自分でも意外でした。

まあ、とってつけたような適当な文章を最後に加えれば1000字以上にすることもできますが、不自然になるし、見苦しいのでやめました。。。

ボリュームが多い

小2の絵本はともかく、小5の「ピアノはともだち」は思った以上に本のボリュームが多かったです。
「めちゃめちゃ速読モード」で読んでも1時間かかりました。
子どもがじっくり読むと何日もかかると思います。

また、いろんなエピソードが出てくるので、読みながらメモしていかないと内容を忘れそうになります。
僕はこんな感じでEvernoteにメモを取りながら読んでいきました。

f:id:JunichiIto:20160827082040p:plain

分量のコントロールが難しい

また、1000字以上1200字以下という分量に収めるのも結構難しいです。(そして見事に失敗しましたが)
まず文章を書き始める前にだいたいのアウトラインをまとめておかないと、極端に短くなってしまったり、本のあらすじだけをつらつらと書いていたらそれで字数オーバー、みたいなことが起きると思います。

僕はパソコンを使うので分量の調整はまだラクにできますが、紙と鉛筆だと気軽に書き直せません。
なので、いったん別の原稿用紙に下書きをし、字数を調整してから本番の原稿用紙に書いていく必要があるなと思いました。

内容も子どもレベル・・・

内容に関しては、「本のあらすじばかり書かずに、自分の思ったこと、感じたことを中心に書いていこう」と心がけました。
読書感想文を読む人(つまり学校の先生)は本の内容をだいたいわかっている、という前提です。

とはいえ、改めて自分の書いた読書感想文を読んでみると、とても大の大人が書いた文章には見えないですね。。。
普通に小学生レベルの読書感想文のような気がしてきました(汗)。

最後の「僕も~できるようになりたいです」「僕も~をがんばろうと思います」的な締めくくりはいかにも義務教育チックでなるべく避けたかったのですが、いい締めくくりが思い浮かばず、結局「由緒正しい日本の小学生」みたいな終わり方になってしまいました。

そんなこんなで、30年ぶりの読書感想文は「ごめん、お父さんが悪かった。やっぱ、読書感想文って難しいわ!!」という結果となりました(チーン)。

まとめ

子どもたちが小さいうちは「はっはっはー、そんなこともわからないのか?よーし、お父さんが教えてやろう」と大きな顔ができますが、だんだんと学校の勉強も難しくなってきて、「ん?ちょっと待ってな。えーと・・・」と考え込むことが増えてきます。
実際、小5の息子の算数の問題なんかはすでに結構ややこしいです。

中学校ぐらいまでの勉強なら教えられるかな-?でも高校の数学とかはたぶん無理だろうな・・・。
英語は得意な方なので、せめて英語だけは高校になっても教えてあげられるようにしたいな-、なんて思ったりします。

とりあえず、夏休みの読書感想文はナメたらあかん、大人だって苦労する、ということがよくわかりました。
「ほらほら、早く書けよ!!」と偉そうに子どもを突っつくのではなく、僕もその大変さを理解して優しく接してあげたいです。

・・・と、「由緒正しい日本の小学生」みたいな終わり方でこのエントリを締めくくります、まる。

世の中への扉 ピアノはともだち 奇跡のピアニスト 辻井伸行の秘密

世の中への扉 ピアノはともだち 奇跡のピアニスト 辻井伸行の秘密

メガネをかけたら

メガネをかけたら

P.S.

子どもたちは無事に自分たちで読書感想文を書き終えたのでご心配なく。

あわせて読みたい

その昔に書いた子どもの勉強に関するエントリです。

学校の読書感想文じゃなくて、仕事関係の書評を書くのは得意ですよ!!(たぶん)
blog.jnito.com