傾いた本棚

研究,プログラミング,勉強,教育の話など

どこかにビューーン!攻略: 駅確定前に調べておくべきこと編

はじめに

JR東日本の「どこかにビューーン」は、JREポイント6000ポイントを利用して、往復の新幹線チケットを受け取れるサービスです。行き、帰りに乗る日時を指定すると、4つの候補駅が表示され、その中のどこかの駅に行くことになります。

どこかでビューーン ホームページ画面

どこかにビューーン! - JR東日本 より画像引用

これまでに3回ほど、「どこかにビューーン」を利用してみて、狙った駅の確率をなるべく高くしたい場合に避けるべきポイントや事前に調べておくべきポイントをいくつかまとめます。

どこかでビューーンを利用する前に、次回以降の予約の際の忘備録として書き残しておきます。このブログは推測を多く含んでおり,狙った場所に高確率であたることを保証するものではありません.結果に責任を負うことはできないことに注意してください.

また,本内容は東京・上野・大宮駅しか選べなかった場合の時期の攻略となります.現在,仙台・盛岡・新潟・長野駅も選択できるようになっていますが,追加駅分は考慮していません.

駅確定前に調べておくべきこと

ここでは、4つの駅が確定する前に調べておくと良いことをいくつか取り上げます。全て考慮するのは大変だと思うので、ガチ度合いに応じて調節してください。

以下の内容は,「新幹線が空いているほど,どこかでビューーン向けに割り当てられる空席が増える」という仮定の下で考えた内容です.どこかでビューーン確定後に,座席を変えられるシステムを確認したところ,どこかでビューーン向けにすべての空席が選択可能箇所として割り当てられているわけではなく,選べる箇所は限られていたので,空席の数によらずあらかじめどこかにビューーン向けの席数が決まっている可能性もあります.その場合には該当しない可能性もありますので,話半分に読んでください.

1. 時間指定なしを選ぶ

どこかにビューーンでは、4つの候補駅のリセマラ(何度か振り直して自分の好みの候補駅を表示すること)をする前に、出発駅を出る時間帯・元の駅に到着する時間帯を指定する必要があります。

どこかでビューーン設定画面

発着時間に希望時間帯がない場合は,発着ともに「時間指定なし」を選択し、発着時間が合わなかったために,候補から外れてしまったという可能性を減らすのが良いと思います。

(上級者向けのオプション) 時刻表で、狙う駅のある新幹線の発着時間の統計をとる。

最初の時間帯の指定によって、その時間内に目的の駅に着く新幹線の本数が決まってしまうため、あらかじめどのくらいの本数が発着するのかを調べておく方が、確率が高められるのではないかと思います。

例えば、(2023年6月時点では,) 秋田駅から東京駅に帰る列車のうち、20:00-に東京駅に到着するものは1本しかなく、この1本の空席から選ばれることになります。もしこの新幹線に空席がなければ (どこかでビューーン向けに割り当てられている空席も少なくなり)、秋田駅は早々に候補駅を外れてしまうかもしれません。

時間を指定する場合,できるだけ候補の新幹線の数が多い時間帯を、時刻表で調べてから時間指定を行うのが賢明な判断になるかもしれません。

2. 限定イベント・お得なイベントの期間を避ける。

どこかにビューーンは、4つの候補駅に着く列車・帰る列車に割り当てられた座席からランダムに割り当てられます。そのことから、空席が少なくなるようなお得なイベントの期間を避けることで、行きたい駅の割り当て席が残る可能性が高くなると考えられます(あくまで推測です)。以下にお得なイベントや,混雑するイベント例を示します。

お先にトクだ値スペシャ

お先にトクだ値スペシャルとは、期間限定で、新幹線乗車券が35%以上割引で購入できるシステムです。どの程度の座席が割り当てられているのかは分かりませんが、通常よりも空席が少なくなることが予想されます。

大人の休日倶楽部パス 発売期間

大人の休日倶楽部パスは、50歳以上で、大人の休日倶楽部の会員の方がお得に購入できるフリーパスです。新幹線や特急も対象となるため、通常よりも空席が少ないと考えられます。

青春18きっぷリゾートしらかみに乗っていた時に、隣に座っていたおじいさんにどこかにビューーンについて説明したところ、「じゃあ大人の休日倶楽部パスの期間はやめた方がいいと思う」と言われ、確かにと思いました。そのおじいさんは大人の休日倶楽部パスで乗っていたため、説得力がありました。

繁忙期・通常期

空席が少なく、かつホテルなどの料金も高くなりがちなため、避けた方がいいのではないかと思います。

季節ごとに人気になる地域

夏などの暑い時期は東北方面が,冬などのスキーシーズンは新潟や長野方面は一般客のチケットで埋まってしまう可能性があります.実際,夏の時期に予約した際は燕三条駅(新潟),秋の終わりごろに予約した際には一の関駅(岩手)が当たりました.

大規模なイベント(花火大会・夏祭り・ライブなど)

花火大会を狙って旅行に行く、地方でライブをやっており、新幹線で向かうなどという声を聞くため、空席は少なくなる可能性があります。あらかじめ狙う駅のお祭りの情報や、フェスなどが大規模に行われていないかを調べておく方がいいかもしれません。

祝休日

避けられるのであれば、避けた方がいいかもしれません。

そのほか、新幹線が混雑しやすくなるような注意点があればコメントなどで教えてください

直前の予約

6日前まで予約ができますが、空席が少なく、もし当たったとしてもホテルの空室が少ない可能性があります。21日前から予約ができるため、できるだけ21日前付近で予約をするのがいいと思います。割り当てられる座席は,どこかでビューーン向けに割り当てられた座席全体の余りから先着順である可能性が高いため,早めの予約のほうが候補は増えると思います.

大人数での予約

割り当て座席が限られているため,可能な限り1人か少人数での予約がいいと思います.

予約時の傾向と次に向けた対策

何度もこのサービスを利用したいという気持ちに駆られている場合、4つの候補駅決定後からメール通知までの時間で、自分の設定方法や狙いがいい感じだったのかどうかがわかりそうです。予約から3日以内にメールが届くとあります。

以下は、予約後から到着駅確定のメールが来るまでの時間の傾向と、予約後に新幹線に乗ってみて感じたことです。

予約後2-3時間でメール到着

当たった駅以外は空席がなく、候補から外れた駅が2−3駅以上あった可能性が高いです。

秋田・青森方面に行きたいと思って初回の予約をしたのですが、後々その予約タイミングがお先にトクだ値スペシャルとかぶっていたことから、2駅ほどは候補から外れたのかもしれないと考えました。

予約後1-2日間でメール到着

少なくとも2駅以上に向かう新幹線に空きがあった可能性があります。2,3回目の予約の時がそうで、「大人の休日倶楽部パス期間」以外の空席の要件は満たせていたような気がします。

予約事例

1回目: 2023年6月

白石蔵王(仙台)から観光地へのアクセスが良くなく,原則車での移動がメインだったため,1駅分追加で料金を支払い,仙台駅に行きました.青森や秋田を狙っていたのですが,この時期にちょうどお先に得だ値スペシャルをやっていたため,時期をずらすべきだったかなと思いました. 仙台に降りたのは初めてであったため,ずんだ餅や牛タンなどを食べました.仙台には猫島と呼ばれる田代島があり,猫と触れ合ってきました.最初は猫島に行く予定はなかったのですが,現地で知って急きょ行ってみました.このように予定を立てずにいろいろいけるのが楽しいです.最初なのでお試しでとよく考えずに予約したのですが,結果的に仙台に行けて楽しかったです.共著論文が忙しい時期を迎えており修正を手伝っていたため,結果的にワーケーションのような形となりました.

猫島の様子 夏の暖かい日のため,日陰で昼寝する猫たち.

2回目: 2023年9月

秋田・新青森が本命で,時点でかみのやま温泉が当たればと思い4つの駅を決めました.最終的に,カトラリーで有名な燕三条駅(新潟)になりました.DIYで有名な街でもあるようで,DIY!! -どぅー・いっと・ゆあせるふ- というアニメとコラボをしてました.行ってから見たのですが,きららアニメみたいに考えずに見られる感じでした. ぎりぎり青春18きっぷが使える時期だったので,新潟から北上して秋田や弘前駅に行きました.リゾートしらかみなど観光列車に乗れたのもよかったです.タイムズカーシェアで車を借りて,海沿いをドライブしたのですが,海沿いの景色が非常によくよかったです.新潟・秋田・青森と場所問わず気温が30℃超えており,夏なら避暑地で涼しいというわけでもなさそうでした.

新潟のローカル駅
青春18きっぷで北上し秋田の海沿いへ

3回目: 2023年11月

  • 候補駅: 角館・新青森・上田・一ノ関
  • 確定駅: 一ノ関

一ノ関(岩手)に行きました.バスがあると思って現地に行ったら,バスは乗客不足でほとんど走っておらず(路線バスはほとんど廃止),原則タクシー移動になるとのことでした.ホテルは駅近くで取って,タクシーや,観光地・一ノ関駅から出ている送迎バス的なものを使うのがよさそうです.今回は一ノ関駅からは移動せず,ワーケーション的な感じで利用しました.(どこかでビューーンにはまっていた影響で,)同じ年に旅行をしすぎており,身近な人には旅行に行くことを言わず,こっそり一人旅となりました(1回目・2回目も一人旅).

今回は,2023年10月から始まった,JRE POINT ステージによって,プレミアムとなっていたため,クーポンを利用して4000ポイントで目的地から往復しました.プレミアムだと通常より安いポイントでどこかにビューーンができるとのことで,楽天経済圏からJRE経済圏(?)に入り,ふるさと納税や日常生活の支払いなど,ポイ活をJREポイントメインに切り替えました.

4つの駅を選定する基準など

この記事では,なるべく行きたい箇所にあてるための準備に焦点をあてていますが,そもそもどんな駅がいいのか?などの解説は以下の記事などが参考になると思います.あまり新幹線駅の事情など詳しくなかったのですが,そもそも候補になっている駅の一覧や,駅のランク分けなど,参考になりました.

road2fire.net

おわりに(今後あるといいなと思うもの)

3回ほどどこかでビューーンを利用した結果をもとに,4つの駅を確定させる前の工夫について,推測込みで攻略方法を考えました.青森や秋田あたりを毎回狙って4つの駅を確定させているのですが,一度もあたってらず,なかなか確率は低くなりがちなのかなと思います.ただ,狙った駅に当たらずとも,毎回ワーケーションやリフレッシュなどを目的として楽しめています. あたった候補駅に近い観光スポットや,新幹線切符を買い足していける場所を調べる際には,以下の本などを使いました.

amzn.to

今回,このような攻略を書いていて,高校の卒論時に,「都区内大回り乗車をできるだけ長くやる」という問題をグラフ理論で考えたことを思い出し,懐かしくなりました.高校の頃の卒論を読み直してまとめなおすのもいいかもしれないと思いました.

今後,どこかでビューーンの攻略本のようなものが青春18きっぷガイド等と同じように出るといいなと思います.また,仙台・盛岡・新潟・長野駅も追加されたことで,どこかでビューーンの行先駅でこの付近になった場合,どこかにビューーンを2回以上使って乗り継ぐこともできるかもしれません.いずれにしても,どこになるかわからないわくわく感と,当たった先がよく知らないことで起こる新しい発見,着いてから観光地について知り,別の場所に行ってみようかなという気分になるのが,ランダム性があって面白いと思います.皆さんもJREポイントがたまったらぜひやってみてください.

ジェームズ・ヤング「アイデアのつくり方」を研究者向けに解釈する

はじめに

自分の専門とは異なる分野を新しく勉強して、新しいテーマを考える必要が出てきたため、研究の進め方やアイデアの出し方を見直すことにした。

ジェームス・W・ヤングの「アイデアのつくり方」は、研究のスタイルを見直す中で読んだ本の1つで、非常に簡潔にアイデアの作り方がまとまっている(解説を読まなければ全体で60ページほど、文庫本よりも1ページあたりの文章量は少ない)。

この本は、研究者によらず、新しいアイデアを必要とするすべての人のための本であり、研究者としてどうこの本を実践すればいいかという観点で、類似した研究How to 本やブログを参照しながら、文章としてまとめておくことにした。

ジェームズ・W・ヤング「アイデアのつくり方」まとめ

本の内容を箇条書きでまとめると以下のようになる。本書では、「アイデアが生まれる原理」と、「アイデアのつくり方」の手順に分けて説明されている。

イデアが生まれる原理

  1. イデアとは、既存の要素の組み合わせである。
  2. 新しい組み合わせを作り出す才能は、事物の関連性をみつけだす才能によって高められる。

イデアのつくり方(手順)

著者は、以下の5つの段階を順序立てて通過することで、アイデアがつくられると説明している。以下の各段階は、一定の順序で通過するべきであり、それより前の段階が完了するまでは先に進まないことが重要であると述べている。

  1. 資料の収集
  2. 収集した資料の組み合わせを検討する
  3. イデアが思いつかず思い悩む(アイデアを寝かせておく)
  4. イデアが思いつく
  5. 実際に取り組む

以上の「アイデアが生まれる原理」「アイデアのつくり方」について、各項目を詳しく説明したものが、本書の内容となる。

研究者からみた「アイデアのつくり方」解釈

以下では、アイデアを作る手順について、各段階を簡潔に説明しながら、各段階を本書よりももう少し細かく説明した本や、現代に合わせた類似の記事を取り上げていく。

1. 資料の収集

この段階は、直接アイデアに関連する情報を集める「特殊資料」の収集と、一見アイデアとは直接関係ない情報にふれる「一般資料」の収集を行う。

この「資料の収集」の過程は、一見すると雑務のようにも見え、多くの人が軽視しているが、高度な知的作業の一環であり、深く行うべきであると書かれている。

特殊資料

研究者にとって、「特殊資料」は、主に論文、関連する書籍や教科書である。自分の専門分野や、新たに参入する専門領域の論文を読む。

論文をたくさん読むべきか、そうでないかという議論は多数あるが、著者の立場では、これからつくるアイデアに関連する情報はなるべく詳しく調べるべきであるとしている。

新しく集めた特殊資料1つにつき、3x5インチのカードにまとめていくことを提案しており、あるテーマに関して、カードのファイル・ボックスができるレベルまで収集することを勧めている。

カードによる索引法は、川喜田二郎「発想法」や、外山滋比古「思考の整理術」でも説明されている。

カードによる索引法の現代版として、落合先生が授業の中で実践する、1論文あたりスライド1ページで多数論文の概要をまとめていく方法がある。

lafrenze.hatenablog.com

この段階をどこまでやるかという研究者向けの目安として、佐藤 雅昭「なぜあなたの研究は進まないのか」では、そのテーマや分野に関してレビュー論文を書ける程度としている。

一般資料

こちらは一見すると直接作りたいアイデアとは無関係な知識・教養を指す。アイデアの原理でも触れたように、アイデアは既存の要素の組み合わせであり、意外で面白い組み合わせの1つは、その分野と直接関係がないこともありえるためである。

今直接アイデアを出す必要がなかったとしても、日頃から自分の専門以外のあらゆることにも興味を持っておくことが、組み合わせの要素を増やすために重要であると述べられている。

2. 収集した資料の組み合わせを検討する

ある程度資料が揃ったら、収集した資料や知識の要素をそれぞれ組み合わせることを検討する。組み合わせ方としては、先程作成したカードをパズルのようにいくつか並べてみたり、シャッフルして目を通してみたりなどが考えられる。

このときのコツとして、仮の、部分的なアイデアを思いついたら、それを(どんなに突飛なものであっても)メモしておくことが重要である。

この資料の組み合わせの段階は、考えていて嫌気がさしてくる(考えが煮詰まる)段階に達するまでは追求し続けるのが良いとしている。

3. アイデアが思いつかず思い悩む(アイデアを寝かせておく)

まえの段階で、嫌気がさすまで組み合わせを検討したあと、一旦問題を放棄する段階である。問題を意識の外に移し、無意識の創造過程が勝手にはたらくのを待つ、つまりアイデアを寝かせておく工程が必要である。

イデアを放棄している間は、自分の感情や創造性を刺激するような芸術的なことや読書などに没頭し、一旦完全にわすれるのが良い。

「アイデアを寝かせておく」ことの重要性に関しては、さきほど紹介した外山滋比古「思考の整理学」にも詳しく書かれている。

4. アイデアが思いつく

嫌気がさすほどとことん考えた状態と、一旦放棄する状態を繰り返すことによって、実際にアイデアが思いつく段階にあたる。思いついたときの考えを忘れないために、こちらもノートやカードなどに整理しておくのが良いだろう。

5. 実際に取り組む (アイデアが良いものであるかを検討する)

イデアが思いついたときには良いものであると感じても、そもそも実際に良いものであるかどうか、取り組む上でアイデアにどんな手を加えていくかは別の問題である。

考えた研究のテーマが良いものであるかどうか、毎回運に任せず事前に検討する方法については、近藤克則「研究の育て方」にまとまっている。本書では、良い研究デザインの条件として、「意義」「新規性」「実現可能性」の3つの観点がすべて含まれていることが重要であると述べている。

ジェームズ・W・ヤングの「アイデアのつくり方」では、アイデアの作り方に焦点があてられており、それが実際にいいアイデアであるかどうかの判断についてはあまり書かれていないため、別途このような書籍を参照するのが良い。

近藤克則「研究の育て方」では、研究テーマを考えてからそれを簡単な構想にして「良い研究であるか」を判断し、具体的な研究計画に育てるまでの工程について詳細に説明がされている。

おわりに(所感)

研究の進め方に関する本やブログなどを、ジェームス・W・ヤング「アイデアのつくり方」に合わせてまとめてみた。本やブログごとに、各段階のどこに焦点を当てて説明しているかが異なっており、「アイデアのつくり方」では、そのすべてを完結にまとめて平等に説明していると感じた。また、自分がよいアイデアを考えられたと感じたときには、概ね上で説明したような手順を追っていたように思うので、良い本だと思う。

まとめながら自分の研究スタイルを振り返ってみると、アイデアを考える最初の「資料の収集」のフェーズが、だんだん適当になりつつあると気づいた。論文読みは、研究に慣れていない段階でやるもの・頭でっかちになるのでそんなに時間をかけるべきではないという意見にのまれてどんどん論文を読む時間が減り、アイデアを生み出すためのインプットの時間が不足していたように思う。

ずっと考えて思い悩むフェーズが必要な一方で、(成果が求められている状況では難しいかもしれないが)一旦意識の外に考えを追い出して、別の「一般的資料」や芸術・文芸にふれる呑気さも、研究の良いアイデアを出すためには必要なのだなと感じた。

私自身は今、博士号取得直後で、新しい分野の知識や技術を身につけて専門を広げていくことが求められているフェーズなので、これを好機とみて、初心に戻って論文を読み込むところから始めていきたいと思う。

Python3で音データの正規化: 正規化した音データを扱うMATLAB-LIKEな関数の作成

はじめに

PythonでSciPyなどを利用してデータを読み込むと,wavファイルの形式によってデータの最大値が異なり扱いづらいことがあります.wavファイル形式の違いによらずデータの振幅値を[-1, 1]の範囲に正規化して,処理を行いたいときの便利関数を作りました.

具体的には, wavファイルの形式によらず

  • デフォルトで音データを正規化してくれる wavread() 関数
  • 正規化されたデータを自分でもとに戻さなくても,音量を保って音データを書き込める wavwrite() 関数
  • (関数から呼び出される正規化用関数 audio_normalize() 関数)

が入ったライブラリ matwavlib を作成しましたので,内容を簡単に説明します.

  • 音データにFFT,スペクトログラム解析などを適用したい時
  • 読み込んだファイル形式によらず,データを読み込んで処理がしたい・処理をした音データを保存したい時
  • wavファイルの量子化ビット数を変換したい時

に役に立つのではないかと思います(少なくとも私は忘備録として使います).

対称とする読者

  • 音・音声データをPythonで処理する方(データサイエンスなど)
  • SciPyで時系列解析などを行う方
  • wavファイルのフォーマットの違いを意識せずに音データを扱いたい方
  • そのままコピーして使えるwav読み込み・書き込み関数を必要とする方
  • 特定のwav formatに変換する必要のある方

目次

結論

以下のコードをコピー・ダウンロードして利用してください. 環境には,Numpy, SciPyがインストールされている必要があります(Anacondaを利用している場合,標準でインストールされています).

matwavlib.pyのコード(この行をクリックするとコードが展開されます)

gistfa0a56f9e5e59a4f3a80e375b84c4156

読み込み・書き込みに使える関数の説明

y, fs = wavread(wavfile, norm=True)

  • 説明: 音データの読み込み(デフォルトでデータの正規化)
  • パラメータ
    • wavfile(str): 読み込みたいwavファイルのパスを入力
    • norm(bool): 音データを正規化するかどうか(DefalutでTrue)
  • 返り値
    • y (np.ndarray): 音声データ
    • fs (int): サンプリングレート

wavwrite(wavefile, data, fs, ftype='float32')

  • 説明: 正規化されたデータの書き込み
  • パラメータ
    • wavefile(str): 保存したい場所・名前のパス
    • data(np.ndarray): 保存したい音データ(正規化されていないデータも問題なく書き込めます).
    • fs(int): サンプリング周波数
    • ftype(str, parameters = ["float32", "uint8", "int16", "int32"]): 保存するファイル形式の選択 (デフォルトで32bit floating-point format)
      • int: integer PCM format
      • float: floating-point format

使用例

wavread, wavwriteの間でyに対して好みの処理を行ってください.

from matwavlib import matwavlib as mw

infilepath = "input.wav"
outfilepath = "output.wav"

y, fs = mw.wavread(infilepath)
mw.wavwrite(outfilepath, y, fs)

print("input Datatype:", y.dtype)

GitHub

なにか変更やご指摘があればこちらで変更していきます.

github.com

解説

以下に細かい内容などを知りたい人向けの解説を書きます.特に形式を気にしない方は上をコピペしたりダウンロードして使ってもらえればと思います.

SciPy の仕様 -> MATLABの仕様へ

以下の表が,音データ(wav)を読み込む際の,SciPyとMATLABの仕様の違いです.

機能 SciPy MATLAB
読み込み 正規化なし,wav形式によってデータの最大値異なる,読み込み後自分で正規化する必要あり データ形式によらず最大値を正規化したデータを返す
書き込み 正規化した場合,書き込み前に元の音量に戻す処理が必要 正規化されたデータも自動で元の音量に戻す

FFTやスペクトログラム.その他特徴抽出など,科学計算関連の関数を適用する場合には,データが正規化されていたほうが扱いやすいため,MATLABのようにデフォルトでは読み込み,書き込み関数が正規化・正規化解除をやってくれると手間が省けます.

wavread(), wavwrite()関数は,上の表のMATLABのように,関数で読み込めば勝手に正規化・正規化解除をしてくれるように作りました(normパラメータなどで正規化したくない場合はその旨を指定できます).

SciPyで読み込んだ場合・書き込んだ場合のデータ形式の違いについては, ryoiijima.hatenablog.com

にまとめています.

正規化関数の説明 audio_normalize(y)

def audio_normalize(y):
    """
    Audio data normalization between [-1, 1].

    Parameters
    ----------
    y: numpy.ndarray, audio data from SciPy

    Returns
    ----------
    norm_y: numpy.ndarray, normalized audio data the range is [-1, 1]

    """

    print("y.dtype:", y.dtype)

    if y.dtype == "float32" or y.dtype == "float64":
        max_y = 1
    elif y.dtype == "uint8":
        y = y - 128 # convert unsigned to signed
        max_y = 128
    elif y.dtype == "int16":
        max_y = np.abs(np.iinfo(np.int16).min)
    elif y.dtype == "int32":
        max_y = np.abs(np.iinfo(np.int32).min)
    else:
        raise ValueError("%s can't use datatype for audio normalization. \
            Datatype must be [float32, float64, uint8, int16, int32]" % (y.dtype))
        max_y = np.abs(np.iinfo(np.int16).min)

    norm_y = y / max_y
    norm_y = norm_y.astype(np.float32)

    return norm_y

wavread(), wavwrite()から,正規化するための関数 audio_normalize() を呼び出すことによって,ファイル形式ごとに正規化する処理をしています. 最大値を取得して,データの各値を最大値で割ることで,[-1, 1]の間のデータ形式にしています.(scipyの音データ np.ndarrayを引数として渡せば使えます.)

同様にして,wavwrite()関数では,指定されたファイル形式に合わせて,値の範囲を[-1, 1]からもとに戻す処理を行っています.例えば,16bit integer PCMでは,[-32768, 32767]の範囲となるように最大値をかける処理を行います.この処理を忘れると,書き出されたファイルの音量が小さい・聞こえなくなってしまいます.

正規化をする際の注意点は,8 bit unsigned integer PCM 形式のファイルの場合,符号なしデータを0-255の範囲で扱っているため,他の形式と同じ用に扱うためには,128を引く・足すことによって半分ずらす必要があります.これらを考えるのが億劫なため,今後に備えてこのような関数を作りました.

参考文献

正規化の方法を参考にさせていただきました.

【Python 3】Waveファイル入出力のまとめ 【Scipy, PySoundFile, Wave】

はじめに

Python3のWaveファイルの入出力(read / write)には複数の方法があり,使用する際に毎回混乱するため,ライブラリごとの操作方法と,メリット・主な用途をまとめる.

対象

  • 研究・開発で音データを利用する方
  • Scipy, Waveなどのライブラリの違いや,データの型の違いに混乱している方・ライブラリごとの比較をしたい方
  • MATLABなど別のプログラミング言語で音データを扱っていたが,Pythonで試す・変更する可能性のある方
  • とりあえずコピペすれば動作するwaveファイル読み書きのPython3コードが欲しい方  

目次

音声ファイルの読み書き

以下のコードでは,読み込んだ音をそのままwav形式のファイルに書き込むサンプルコードを示す.*1 モノラル(Mono) 1channel の場合を説明する.

結論として,

  • Scipy: 科学計算ライブラリと併用する場合(MATLABに近い目的で利用する場合)
  • PySoundFile: とにかく急いでおり,ファイルのフォーマットや条件を気にしない場合
  • Wave: バイナリデータとしての扱い,ファイル情報の取得・変更など,高度な利用を目的とする場合

と使い分けるのがいいのではないかと思う.

Scipy

  • Scipy, Numpy などの科学計算ライブラリと併用する場合に便利
  • 音データそのもの,サンプリング周波数以外の情報は特に気にしない・取得する必要がない場合
  • 読み込み・書き込みの際,Numpyとの変換などをすべて自動でやってほしい場合
  • もともとMATLABを使っていた場合

ソースコード

# -*- coding: utf-8 -*-
from scipy.io.wavfile import read, write

readfilename = "./read-audio.wav"
writefilename = "./write-audio.wav"

fs, data = read(readfilename)
write(writefilename, rate=fs, data=data)

# data information
print("Sampling rate:", fs)
print("Frame num:", data.shape[0])
print("Sec:", data.shape[0] / fs)
print("Numpy dtype:", data.dtype)

出力結果例

1秒,サンプリング周波数 8000 Hz,量子化ビット数16bit (= 2byte) の場合の例を示す.

Sampling rate: 8000
Sec: 1.0
Numpy dtype: int16

ここで,Scipyの場合は,データ本体をNumpyの行列化したものと,サンプリング周波数のみを取得するため,もとのwave fileフォーマットや量子化ビット数などが知りたい場合はNumpyのdtypeから判断する必要がある.

Scipyでは,以下の通りに音声ファイルとNumpyのdtypeの変換が自動で行われる.

読み込み時

音ファイルの形式 変換後のndarray の型
32-bit floating-point float32
32-bit integer PCM int32
24-bit integer PCM int32
16-bit integer PCM int16
8-bit integer PCM uint8

書き込み時

変換後のndarray の型 音ファイルの形式
float32 32-bit floating-point
int32 32-bit integer PCM
int16 16-bit integer PCM
uint8 8-bit integer PCM

量子化ビット数が24bitのデータは32bitの型で扱い,24bit integer PCMとして書き込みはできないことを表している.

詳しい情報は,ドキュメントを参照. scipy.io.wavfile.read — SciPy v1.6.3 Reference Guide

scipy.io.wavfile.write — SciPy v1.6.3 Reference Guide

PySoundFile

  • 細かい条件は気にしない場合
  • ファイルフォーマットなどを気にせずとにかくデータの読み込み or 書き込みができれば十分な場合
  • 急いでいる方向け
import soundfile as sf

readfilename = "./read-audio.wav"
writefilename = "./write-audio.wav"

data, fs = sf.read(readfilename, dtype="int16")
sf.write(writefilename, data, fs)

# data information
print("Sampling rate:", fs)
print("Frame num:", data.shape[0])
print("Sec:", data.shape[0] / fs)
print("Numpy dtype:", data.dtype)


Scipyと同様に,1行ずつでデータの取得が可能. dtypeを指定しなければ,defaultでfloat64型として扱われる点がScipyとは異なる (Scipyでは,前述の通り自動でデータ型を判断して変換する).

出力結果例

Sampling rate: 8000
Frame num: 8000
Sec: 1.0
Numpy dtype: int16

詳しい個別の設定は,

SoundFile · PyPI

を参照.

Wave (組み込みモジュール)

  • バイナリデータとして音を取り出したい場合
  • ファイルの圧縮方法など,wavから得られる詳細情報を取得したい場合
  • 書き込むファイルに対して,手動で設定を行いたい場合

ソースコード

# -*- coding: utf-8 -*-
import wave
import numpy as np
from numpy import frombuffer

readfilename = "./read-audio.wav"
writefilename = "./write-audio.wav"

with wave.open(readfilename, "rb") as wr:

# data information
    params = wr.getparams()
    print("Prams:", params)
    ch_num, sampwidth, fr, frame_num, comptype, compname = params

    print("Sampling rate:", fr)
    print("Frame num:", frame_num)
    print("Sec:", frame_num / fr)
    print("Samplewidth:", sampwidth) 
    print("Channel num:", ch_num)

# read wavedata as binary format
    binary_data = wr.readframes(wr.getnframes())

# convert bibary to numpy array
    if sampwidth == 2:
        width_dtype = "int16"
    elif sampwidth == 4:
        width_dtype = "int32"

    num_data = frombuffer(binary_data, dtype = width_dtype)
    print(num_data)


# write wavefiles
with wave.open(writefilename, "wb") as ww:
    ww.setparams(params)

    #convert numpy arrays to binary format
    write_binary_data = num_data.tobytes()
    ww.writeframes(write_binary_data)

readframes, writeframes で読み書きするデータはすべてバイナリ文字列で扱う. バイナリ文字列として扱える,ファイルから取得できる・ファイルにセットできる情報量が多い代わりに,Numpy, Scipyなどのライブラリで扱いやすいように行列化する際には,やや手間がかかる.

以下にデータ変換に使った関数の説明を記述する.

変換前 変換後 適用関数・メソッド
wave のバイナリ文字列 Numpy のndarray Numpyのfrombuffer()関数
Numpy のndarray wave のバイナリ文字列 ndarray オブジェクトの tobytes() メソッド

また,書き込みの際,

    ww.setparams(params)

と読み込んだ際の情報をそのままセットしているが,もし入力したファイルとは異なる設定にしたい場合は,setnchannel(), setnframes() などの関数で個別に設定していくことになる.

詳しい個別の設定は, wave --- WAVファイルの読み書き — Python 3.8.10 ドキュメント を参照.

出力結果例

Prams: _wave_params(nchannels=1, sampwidth=2, framerate=8000, nframes=8000, comptype='NONE', compname='not compressed')
Sampling rate: 8000
Frame num: 8000
Sec: 1.0
Samplewidth: 2
Channel num: 1
[ 23171  24918  26514 ... -32768 -23166      2]

readするときのオブジェクト (wr) では get* 関数でファイル情報の取得が,writeするときのオブジェクト (ww) では,set* 関数でファイル情報の設定ができる.*以降の関数名はすべてget / set で対応している.

 

おわりに

ステレオの場合の例など,他にも書こうと思っていたことがあったが,思ったよりも長くなってしまったため,ここで一区切りとする. 音波形の正規化の方法,ステレオデータを利用する場合の違い,スペクトログラムのライブラリごとの作成方法の違いなども実験後・実験の間にまとめていく予定.  

 

参考にしたURL

scipy.io.wavfile.read — SciPy v1.6.3 Reference Guide

scipy.io.wavfile.write — SciPy v1.6.3 Reference Guide

wave --- WAVファイルの読み書き — Python 3.8.10 ドキュメント

SoundFile · PyPI

PythonでWAVファイルを読み込む - 音楽プログラミングの超入門(仮)

【python】波形の表示(モノラル・ステレオ)【サウンドプログラミング】 - すこしふしぎ.

Pythonでのwavファイル操作 - Qiita

 

*1:音データの加工をして保存したい場合は,読み込み・書き込みの間に処理を加えてください.

本棚の公開【情報・プログラミング編】

はじめに

本の紹介やおすすめをする際に,毎回調べて,リンクを送信して,とする手間を省くために,手元にある本,いままでおすすめした本のリストを作成しておくことにした.最後に,情報系の書籍(主に英語)をお得に読む方法をいくつかまとめている.

対象者

  • これからプログラミングを始めたい高校生・大学生・社会人の方など
  • 情報系の大学生・大学院生が購入する本を知りたい方
  • 情報・プログラミングにかかわる教育関係者の方
  • 理系・情報系への進学を迷っている人

 

本棚

マウスをのせるとタイトルが表示されます.

プログラミング言語入門編

Python

詳細!Python 3 入門ノート入門 Python 3世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーションPythonでつくる ゲーム開発 入門講座 

 

 

C/C++

基礎からしっかり学ぶC++の教科書 C++14対応ロベールのC++入門講座独習C 第4版

 

Unity / C#

Unityの教科書 Unity 2020完全対応版 2D&3Dスマートフォンゲーム入門講座Unityでわかる!ゲーム数学

 

OS編

新しいLinuxの教科書[改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでできる (WEB+DB PRESS plus)Linuxコマンドブック ビギナーズ 第5版ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方

岩波講座 ソフトウェア科学〈〔環境〕6〉オペレーティングシステムはじめてのOSコードリーディング ――UNIX V6で学ぶカーネルのしくみ Software Design plus30日でできる! OS自作入門

 

ハードウェア・工作編

Prototyping Lab 第2版 ―「作りながら考える」ためのArduino実践レシピ (Make: PROJECTS)Arduinoをはじめよう 第3版 (Make:PROJECTS)Make: Electronics 第2版 ―作ってわかる電気と電子回路の基礎 (Make:PROJECTS) IoT開発スタートブック ── ESP32でクラウドにつなげる電子工作をはじめよう!

 

組込みエンジニアの教科書Raspberry Pi クックブック 第2版 (Make:PROJECTS)

ロボティクス・制御システム

詳解 確率ロボティクス Pythonによる基礎アルゴリズムの実装 (KS理工学専門書)Pythonによる制御工学入門

回路・システム・アーキテクチャ

Raspberry Piで学ぶコンピュータアーキテクチャ (Make:PROJECTS)コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方ディジタル回路設計とコンピュータアーキテクチャ 第2版

 

数学・物理シミュレーション編

Pythonによる数値計算とシミュレーション文系プログラマーのためのPythonで学び直す高校数学Pythonからはじめる数学入門プログラマの数学 第2版

 

アルゴリズム

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造アルゴリズム図鑑 絵で見てわかる26のアルゴリズムアルゴリズムイントロダクション 第3版 総合版:世界標準MIT教科書プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~

 

機械学習

パターン認識と機械学習 上パターン認識と機械学習 下 (ベイズ理論による統計的予測)ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

[第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ音声認識 (機械学習プロフェッショナルシリーズ)Pythonで学ぶ音源分離 機械学習実践シリーズ

 

ネットワーク関連

マスタリングTCP/IP 入門編(第6版)パケットキャプチャの教科書 (Informatics&IDEA)情報処理教科書 ネットワークスペシャリスト 2020年版

 

 

 

セキュリティ関連

暗号技術のすべてハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習コンピュータネットワークセキュリティ

 

 

音関連

サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus) 

 

Vim

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

 

その他

ハッカーと画家 コンピュータ時代の創造者たちCode Reading プレミアムブックス版 オープンソースから学ぶソフトウェア開発技法リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 

 

情報系書籍をなるべくお得に読む方法(主に英語,2020年12月時点)

  • ACM の(学生)会員になる.(学生 $19/年,社会人$99/年,2020年12月時点)

オライリー本(英語)が読み放題になるサブスクリプションがある.

agnozingdays.hatenablog.com

  • Bundle 本の情報をチェックする

5-10冊単位で,技術書(洋書)が$5-$15程度で購入可能.期間が短いので定期的にチェックするか,チェックしているアカウントをフォローする必要があります.

www.softantenna.com

 

2018-2019: 長期的なプログラミング教育の実践 @早大本庄高校

概要

  • 2018年4月より,高校でプログラミング教育・課外活動を始めたのでその内容を報告.
  • 高校でプログラミング活動が普及するまでの流れを書いた(現参加者は52人).
  • 今後求められそうなプログラミング教育について考えたのでまとめた.

2020年度から順次プログラミングを用いた教育が必修化されるそうなので,なにか参考になればと思い記事を書くことにしました.対象は,

  • 教育関係者/ 教育に興味がある方
  • プログラミング活動について知りたい保護者の方々
  • プログラミング活動に興味を持つ中高生程度の学生

です.

 

生徒の主な業績

講師のプロフィール

大学院でセキュリティの研究&勉強をしながら趣味で高校の先生をしている.

情報 (専修)&数学 (一種)の教員免許を持つ.

基本情報,応用情報,ネスぺまでを取得.趣味で電子工作など.

 

なぜプログラミングを教えることになったか?

きっかけ(2018年 4月)

授業中雑談でセキュリティの話をしていたら,生徒から

「ハッキングのやり方教えてください!」

と質問された.

授業後,真似できない程度にざっくりと流れを説明した*1

その中で,

「プログラミング教室へ行ってみたが,独自のシステム云々といわれ,家で全く再現ができない」

「3か月間,if文,for文,簡単な関数定義の演習だけで十数万も(教室に)とられた」

「ブロックを組み合わせるだけではプログラムを"書いた"感がない」

などという現状を聞き,それくらいなら無料で教えるよということで放課後に週1時間程度のプログラミング教室を始めた.

1か月後

プログラミング教室がうわさで広まり,いつの間にか私の話を聞きに来てくれる人が10人程度になっていた.

最初はセキュリティが目的だったのでPythonをメインに教えていた.

このあたりから,

「授業中にプログラミングの本ばかり読んでいて授業をまともに受けない生徒がいる」

「プログラミングするから部活をやめると言いだした人がいるけどどういうこと?」

という問い合わせがほかの先生からくるようになる.

2か月後

プログラミング教室をやっていた時に通りかかった教頭先生(現学院長)に,「理系の部活がある」と教えていただき,プログラミングを教えるコーチとして登録していただけることになった.

また,活動を続けるうちに規模がだんだん大きくなっていたので(ここで20人程度),

のちに選択科目として

「プログラミング」科目の設置を提案していただいた.

半年後

もっとプログラミングの練習がしたいという声を聞き,AtCoderやAizu Online Judgeなどの競技プログラミングを布教した.

学部時代,私はアルゴリズムが苦手だったこともあり,実装力不足を感じていたので

「せっかくなら生徒と対戦するか!(笑)」

ということで私も再開した.

ネタバレとなるが,この6か月後に生徒にAtCoderのレートを追い越されることになる.

 

1年後(2019年) / プログラミング科目スタート

選択科目としてプログラミング科目がスタートした.

選択科目なので生徒の履修希望を聞くことになるが,

「プログラミングが枠から大幅にあふれるほどの人気で,どう抽選したらいいか……」

と連絡が来た.

高校のプログラミング必修化はまだ先だが,興味・関心はかなり高いことがわかる.

プログラミング科目について

f:id:Ryoiijima:20190627143340j:plain

テスト後の授業で解いた内容を説明する

 

授業では,Pythonをメインに使用した.

言語は迷ったが,1つ言語を習得すれば,ほかの言語にもすぐに適応できるはずなので(関数型などを除けば),まずはPythonということにした.

Pythonを知っていれば,ソフトウェアからハードウェアまで,作りたいものがある!となった時に,実現までの距離が短そうだと感じたため.

内容は,初歩的な内容(変数,条件分岐,繰り返し,関数定義等)を学習した後,

簡単なアルゴリズムや数学のパズルを解く,ゲームを作成してテストプレイからデバッグまで行うという形にした.

環境は,どのPCからでもアクセスできるようにGoogle Colaboratory

(https://colab.research.google.com/)を使用した.

GUIを使う演習はできないが,入門レベルで困ることはあまりなかった.

テストについて

プログラミング科目のテストはオンライン上で実施し,書籍やPCの持ち込み,Webの閲覧をしながら回答ができる形をとった(相談ができる一切のサイト,共有サイトの使用は禁止,主なルールは競技プログラミングと同じ).平均点は70.2点で,本やwebの閲覧を許可しても特に問題もないことが分かった.

(科目の概要は https://ryo-iijima.com/education/ に載せています.要望があればテストも公開します)

f:id:Ryoiijima:20191128140053j:plain

授業内で実施したアイディアソン 発表+みんなの内容を評価

現在(2020年3月)

高校でプログラミング活動に参加する人が50人を超えた.

正式には部活ではなく,同好会のようななにか(同好会としても登録していない)

なのだが,はっきり言って部活動の取り組みよりも生徒の業績が多い.

 

成績のいいひとばかりが集まっているわけではなく,生徒指導に何度も引っかかっているような人が,AtCoderで優秀な成績を残していたり,外部の大会で賞状をとっているケースもあり,

「あの子の頑張っている一面が見れてよかった」

とほかの先生から言われるようになった.

 

未踏ジュニアなど,外部の取り組みに参加したいという生徒が増えたので,

休み時間に生徒と1対1でミーティングを行い,興味や作りたいものに応じて

それならこんなやり方があるよーと提案する/アイディアを提供するようになった.

競技プログラミングを始める生徒が急増し,AtCoderなどのコンテストの後に勉強会が開かれるようになった.

私が何も推薦しなくても,生徒が勝手に競技プログラミングのコンテストで賞状をとってきたり,難関資格(セキュスペ)をとったと連絡が来たりするようになった.

 

以下では,生徒の取り組みの一部を紹介する.

 

生徒の活動内容紹介

リレーマスター(未踏ジュニア)

「陸上選手が運動の解析に使う機器は高すぎる」

「高校生でも使えるようなものが作れたら」

という案を陸上部の生徒から聞き,作ってみようかという話になった.

f:id:Ryoiijima:20200306115057j:plain

リレーマスター 運動時の挙動を解析するシステム

 

聞いた時点で高校生でも簡単に作れそうだと感じ,指標が取れそうなセンサがあらかじめ搭載されているMicro:bit を紹介した.
microbit.org

データの取得,解析を行う中で,資金が必要だという話になったので,

未踏ジュニアという事業に応募をすすめた.

jr.mitou.org

 

開発を進める中で,

  • ジャイロセンサの情報を線形代数の行列を用いて解析する
  • 加速度センサの周期を統計技術で解析する

という場面があり,この生徒はそれぞれを自分で勉強しながら実装を進めた.

実体験として,とりあえず動いて満足してしまうということも多いが,

早大本庄の生徒は

「使った技術は理解しながら進めたい」

という考えのもと取り組んでいる生徒が多く,すげー!尊敬!という気分になる.

簡単なC++デバッグ周りや技術的なアイディアだけ私が手伝い,あとは独学で進めている.

 

結果

micro:bitでプロトタイプ・計測方法の設計

=> バトンに埋め込みたいという話になる

=> micro:bitだと大きすぎるためM5StickCに変更

=> 3DプリンターでM5StickCを埋め込めるバトンを作成

2019年度  未踏ジュニア スーパークリエイター 認定 + NHK出演

 

競技プログラミング (AtCoder / JOI等)

何か練習できる場が欲しいという生徒にAtCoderやAizu Online Judgeをすすめた.

たまに競技プログラミングをしている人で放課後集まって,できた問題を解説する回が発生するようになった.

結果

勧めてから6か月で生徒にAtCoderのレートを追い越された(無能な講師の見本).私のレートも生徒に公開して,追い越せそうなラインだったのでやる人が増えたのかもしれない.

現在

という状況.来年こそ本選へ!という空気になっており,私も教えられるように空き時間で勉強をしつつ,生徒たちが集まって勉強しやすい環境づくりをしている.

競技プログラミングで活躍した生徒が,競プロ入門用のドキュメントなども作ってくれたので,来年度から始める人に配っていきたいと思っている.

(私もたまに参加しているが,生徒からは毎度ボコボコにされている.)

 

情報処理安全確保支援士(セキュスペ) / 基本情報 / 応用情報 取得

しばらくして,IPAの資格の勉強をするのが流行り始めた.

私もネスぺまでを持っているので,聞かれたら解説するようにはしていたが,

ほとんどの人は独学で取得していたもよう.

結果

合宿

f:id:Ryoiijima:20200301194406j:plain

プログラミング合宿の様子

学校で開催されている理系合宿の一環で,プログラミングの合宿ができることになった.

  • 2018年: セキュリティ 暗号の自作&解読 / サーバへの不正アクセス入門
  • 2019年: ゲームプログラミングの中の高校数学・物理

というテーマで合宿をした.*2休みの日にも関わらず定員を大幅に超えて応募があった.ゲームを作ったり暗号のプログラムを自作したりした.

 

反省

反省点や課題を挙げておく.

1. おすすめのテキストエディタとしてVimをすすめてしまう

    プログラミングを始める前にコマンドの習得で挫折してしまう人がいた.GUIベースで使えて,Gitやターミナルとも連携ができるVS Codeなどを進めればよかった.

2. 選択科目なら全員十分に興味があるはずだという気持ちでいた

    選択科目であっても,ものすごく前のめりな人から,とりあえず履修した,私が優しそうだから履修したという人まで様々だった.

プログラミング必修化にあたっては,

「どのやる気度の人に合わせて教えるのがよいか?」

という点が議論になるのではないかと思う.やる気のある人に合わせると難しくなるし,誰でもわかるように簡単にすると退屈する人が出ていくると思うので迷っている.

なるべく簡単に使える,簡単に学習できる教材が多いが,生徒と関わっていると「簡単にできるから面白い」となる人ばかりではないと感じる.

3. 自分自身の技術力不足

    教えることによって,自分の理解不足な部分や忘れてしまっている部分が浮き彫りになった.常に勉強し続けて,面白い技術の提供ができるようにしたい.

 

 プログラミング教育の今後

以上の活動をしてみて,プログラミング教育をするうえでどのように進めるのがよいか,どうすれば面白いかという知見がいくつか得られたのでまとめる.

  • 生徒の興味を重視した教育 (Curiosity)

  • 教師と生徒が互いに学びあう教育 (Influence)

  • 「面白いからやっているだけ!」と言ってもらえるようなプログラミング学習環境の提供(Enjoy)

生徒の興味を重視した教育(Curiosity)

プログラミングの授業では,アイディアソンを実施する,ゲームを作って遊んでデバッグをする,私が趣味で作成しているハードウェアを共有するなどして,なるべく興味のきっかけを提供できるように努めた.

オフラインの教育現場の強みとして,ある程度生徒と生活を共にしているので,各生徒がどのようなことに興味を持っているか,どのようなことなら面白がりそうかがわかりやすいという点があり,面白いところでもあると思う.

今後はただ単に知識を提供するだけではなく,興味のきっかけを提供することが重視されていくのではないかと感じる.

他の学校の場合は各段階で受験があってしょうがない部分もあるかもしれないが,

「生徒が興味を持つ前に知識を詰め込む」

という授業があまり面白いと感じられなかったので,このようなスタイルをとることにした.

生徒の興味を把握しながら,外で活躍できる機会を提供していきたいと思っている.

 

先生と生徒が互いに学びあう教育 (Influence)

情報技術は新しい技術や知識が登場するのが早いので,若い今のうちから,

「生徒からも学ぶ」「頑張っている・自分よりも技術の優れた生徒を尊敬する」

という態度で勉強し続けたいと考えている.

情報系の学科を出ていたこともあり,情報技術に関する知識に自信をもっていたつもりであったが,生徒からSlackで送られてくる技術の記事やトピックは私が知らないことばかりで,送られてくるたびに面白い.

私自身は大学院を卒業しても勉強をし続けるつもりでいるが,それでも若い人が感じ取った技術の面白さと,私が感じる面白さには違いがあり,歳をとるごとに,若い人のもつ技術を面白がるという意識が大切になってくるだろうと感じている.

「面白いからやっているだけ!」(Enjoy)

勉強する理由について,「可能性を拡げる」「経験値をためる」という大人が多いが,そういう打算的な考えを植えつけるための勉強は正直つまらないのではないかと思う.

「楽しいから勉強してる!」と自信をもって言える生徒を増やして大学・社会に送り出していきたい.これから教育に携わる中で,私自身が楽しんで勉強し続け,その面白さを子どもたちに知ってもらえるような授業や活動を続けていけたらと思う.

 

 

*1:セキュリティにかかわる内容はすべて,情報倫理に関する説明,注意喚起を十分に行ったうえで説明しています.

*2:セキュリティにかかわる内容はすべて,情報倫理に関する説明,注意喚起を十分に行ったうえで説明しています.