[{"content":"後藤IT塾では、毎週の指導時間をあらかじめ固定します。 決まった時間に学習を始めやすくし、指導を受け忘れないようにするためです。\n一週間の時間割 曜日 実施する指導 日曜日 主17・主18・主19・主20 月曜日 自A・自B・自C・自D・自E 火曜日 主18・主19・主20 水曜日 休業 木曜日 自A・自B・自C・自D・自E 金曜日 主18・主19・主20 土曜日 初回面談・必要時のオフライン対面指導 主指導の時間枠 「主」は、週1回・40分の一対一のオンライン主指導を表します。\n枠名 時間 実施日 主17 17:40〜18:20 日曜日のみ 主18 18:30〜19:10 日曜日・火曜日・金曜日 主19 19:20〜20:00 日曜日・火曜日・金曜日 主20 20:10〜20:50 日曜日・火曜日・金曜日 入塾時に、いずれか一つを毎週の主指導枠として決めます。\nオンライン自習室と中間確認の時間枠 「自」は、60分のオンライン自習室と、 その直後に行う20分の一対一の中間確認を組み合わせた枠です。\n枠名 オンライン自習室 中間確認 自A 17:50〜18:50 18:50〜19:10 自B 18:20〜19:20 19:20〜19:40 自C 18:50〜19:50 19:50〜20:10 自D 19:20〜20:20 20:20〜20:40 自E 19:50〜20:50 20:50〜21:10 月曜日または木曜日のどちらかを基本の参加日とし、 自A〜自Eから毎週の時間を決めます。 もう一方の曜日のオンライン自習室にも参加できますが、 一対一の中間確認は週1回です。\n中間確認は、他の生徒に内容が聞こえないよう、 オンライン自習室とは別の通話で行います。\n非同期レビューとチャット PCメモの更新とチャットの送信は、いつでも行えます。 講師は日曜日、月曜日、火曜日、木曜日、金曜日に順次確認し、 原則として翌対応日までに返信します。\n水曜日は休業日です。 土曜日は初回面談や必要時のオフライン対面指導に使用するため、 PCメモのレビューとチャットへの返信は原則として行いません。 送信後の即時対応を約束するものではありません。\n土曜日の対面対応 初回面談は原則として土曜日に行い、90〜120分程度を予定します。 場所と開始時刻は、ご家庭と相談して決めます。\nオンラインだけでは学習状況を把握しにくい場合は、 その週の40分のオンライン主指導を、 次の60分のオフライン対面指導へ切り替えることがあります。\n枠名 時間 対13 13:00〜14:00 対15 15:00〜16:00 対17 17:00〜18:00 オフライン対面指導は、生徒・保護者と相談して必要と判断した場合に行います。 定期的な実施を約束するものではありません。\n","permalink":"https://gotoh-it-school.top/schedule/","summary":"\u003cp\u003e後藤IT塾では、毎週の指導時間をあらかじめ固定します。\n決まった時間に学習を始めやすくし、指導を受け忘れないようにするためです。\u003c/p\u003e\n\u003ch2 id=\"一週間の時間割\"\u003e一週間の時間割\u003c/h2\u003e\n\u003cdiv class=\"table-wrapper\"\u003e\n  \u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth style=\"text-align: left\"\u003e曜日\u003c/th\u003e\n            \u003cth style=\"text-align: left\"\u003e実施する指導\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e日曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e主17・主18・主19・主20\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e月曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e自A・自B・自C・自D・自E\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e火曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e主18・主19・主20\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e水曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e休業\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e木曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e自A・自B・自C・自D・自E\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e金曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e主18・主19・主20\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e土曜日\u003c/td\u003e\n            \u003ctd style=\"text-align: left\"\u003e初回面談・必要時のオフライン対面指導\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\u003ch2 id=\"主指導の時間枠\"\u003e主指導の時間枠\u003c/h2\u003e\n\u003cp\u003e「主」は、週1回・40分の一対一のオンライン主指導を表します。\u003c/p\u003e","title":"指導日と時間割"},{"content":"準備中\n","permalink":"https://gotoh-it-school.top/manual/nextcloud/","summary":"\u003cp\u003e準備中\u003c/p\u003e","title":"Nextcloudの使い方"},{"content":"本合意書は、後藤IT塾（以下、「当塾」）が提供する学習用ノートPCの貸与と譲渡について、当塾と保護者（以下、「利用者」）との間で合意するものです。\n1. 貸与の目的 当塾は、PCメモの作成とレビューを行うために、学習用ノートPC（以下、「本端末」）を無償で貸与します。\n2. 所有権の譲渡条件 利用者が月謝を12ヶ月分支払った場合、当塾は本端末の所有権を利用者へ無償で譲渡します。譲渡後の保守・管理は利用者の責任において行うものとします。\nモニター期間中に支払った月謝も、この12ヶ月分に含めます。\n3. 貸与中の管理 利用者は、本端末を適切に管理し、次の行為を行わないものとします。\n第三者への転貸、譲渡、質入れ 学習目的以外での不適切な利用 当塾の承諾を得ない分解や改造 4. 故障・紛失時の対応 通常使用による故障や経年劣化は、当塾が修理または交換します。 落下、水濡れ、紛失など、利用者の故意または過失による場合は、修理実費または同等品の時価相当額をご負担いただくことがあります。 5. 譲渡前の退会時の返却 月謝を12ヶ月分支払う前に退会する場合、利用者は退会日から7日以内に本端末を当塾へ返却するものとします。返却の際の送料は利用者の負担とします。\nモニター期間終了後に通常の受講を継続しない場合は、最終ヒアリングの際に返却するか、モニター期間の終了日から1ヶ月以内に郵送してください。 郵送による返却の送料は、利用者の負担とします。\n返却前に必要なデータを保存してください。 返却された端末は、当塾が初期化することがあります。\n","permalink":"https://gotoh-it-school.top/rental-pc/","summary":"\u003cp\u003e本合意書は、後藤IT塾（以下、「当塾」）が提供する学習用ノートPCの貸与と譲渡について、当塾と保護者（以下、「利用者」）との間で合意するものです。\u003c/p\u003e","title":"ノートPC貸与および譲渡に関する合意書"},{"content":"後藤IT塾では、生徒が学校教材から得た理解をPCメモへ書き、講師のレビューを受けながら改善します。\n1. レビューの対象 学校の教科書、授業、宿題などをもとに、生徒が作成したPCメモを対象とします。\n2. レビューの観点 講師は、主に次の点を確認します。\n教材の書き写しだけになっていないか 大切な内容が抜けていないか 生徒自身の言葉で説明できているか 曖昧な部分や理解が止まっている場所はどこか 次に何を確認し、直すとよいか PCメモを実際に編集するのは、原則として生徒本人です。 講師は問いかけやコメントによって、理解を整理する過程を支援します。\n3. 二次利用の同意 PCメモや学習記録をWebサイトや他の生徒への例として使用する場合は、 使用する内容を事前に確認いただき、保護者と生徒本人の同意を得ます。\n","permalink":"https://gotoh-it-school.top/review-policy/","summary":"\u003cp\u003e後藤IT塾では、生徒が学校教材から得た理解をPCメモへ書き、講師のレビューを受けながら改善します。\u003c/p\u003e\n\u003ch2 id=\"1-レビューの対象\"\u003e1. レビューの対象\u003c/h2\u003e\n\u003cp\u003e学校の教科書、授業、宿題などをもとに、生徒が作成したPCメモを対象とします。\u003c/p\u003e","title":"ドキュメント作成・レビュー方針"},{"content":"後藤IT塾（以下、「当塾」）は、お預かりした個人情報と学習記録を、次のとおり取り扱います。\n1. 取得する情報 お問い合わせ、公式LINE、面談、指導を通して、次の情報を取得します。\n氏名、学年、連絡先 成績、学校教材、学習状況 PCメモ、チャット、面談で共有された内容 指導とサービス利用に必要な記録 2. 利用目的 取得した情報は、次の目的に使用します。\nお問い合わせへの回答と面談の日程調整 学習状況の把握と指導 保護者への学習状況の報告 貸与PCとアカウントの管理 サービスに関する連絡 本人を特定できない形での運営改善 3. 管理と外部サービス 当塾は、取得した情報の漏えい、紛失、不正利用を防ぐため、必要な安全管理を行います。\nお問い合わせや指導には、Googleフォーム、LINE、Nextcloudなどの外部サービスを利用します。 各サービス上の情報は、それぞれの利用規約とプライバシーポリシーに基づいて取り扱われます。\n4. 第三者への提供 法令に基づく場合を除き、本人または保護者の同意なく個人情報を第三者へ提供しません。\n学習記録や感想をWebサイトなどへ掲載する場合は、 掲載内容を事前に確認いただき、保護者と生徒本人の同意を得ます。\n5. 開示・訂正・削除 本人または保護者から、個人情報の開示、訂正、削除を希望された場合は、法令に従って対応します。\n6. お問い合わせ 個人情報の取り扱いに関するご連絡は、以下のお問い合わせフォームまたは公式LINEからお願いします。\nお問い合わせフォームへ\n","permalink":"https://gotoh-it-school.top/privacy/","summary":"\u003cp\u003e後藤IT塾（以下、「当塾」）は、お預かりした個人情報と学習記録を、次のとおり取り扱います。\u003c/p\u003e\n\u003ch2 id=\"1-取得する情報\"\u003e1. 取得する情報\u003c/h2\u003e\n\u003cp\u003eお問い合わせ、公式LINE、面談、指導を通して、次の情報を取得します。\u003c/p\u003e","title":"個人情報の取り扱いについて"},{"content":"本記事では、後藤IT塾の学習に対する考え方と、それを実現する指導の仕組みをまとめます。\n自分の言葉で理解を整理する 理解とは、情報を分解し、自分の中で再構成することです。 生徒は、その過程を自分の言葉で書き出すことで理解を整理します。\n当塾は、質問すらも難しい状態こそ、サポートを最も要すると考えています。\nメモには、曖昧な理解や自分の言葉にできない部分が表れます。 そのメモをPCで書くことで、講師と共有します。\n講師はPCメモを手掛かりに、まだ質問にできていない「何が分からないのかも分からない」状態を見つけ、 生徒と共に理解を改善します。 これが本塾の核心である「レビュー駆動学習」です。\nこの考え方を詳しく読む 理解とは分解と再構成 理解は書くことで駆動できる メモの具体的な書き方 書くことを重視するようになった失敗史 非同期指導 レビュー駆動学習 学校教材を中心に学ぶ 当塾は基本的に学校の教材に基づいて指導します。 塾用のテキストはありません。 大半の勉強時間を占める学校の授業をキャッチアップできるように支援します。\n学校の教科書や学校の授業ノート、宿題などで得た知識をPCメモに集約します。 逆に、PCメモを自分の言葉で適切に書けるように、学校の授業を積極的に活用できるようになります。\nこの考え方を詳しく読む ドキュメント学習 紙とPCメモの使い分け 教科書で全体像を確認できる 教科書を下見して学校で確認 PCを使った学習の多様なメリット 指導フロー 生徒が理解をPCメモへ書き、講師のレビューを受けながら改善する「レビュー駆動学習」を、 最初から一人で進めるのは容易ではありません。 そこで、定期的なオンライン対面指導で、 教科書を読み合わせたり、宿題を解いたりしながら、 PCメモに理解を書き出すことをサポートします。\nはじめは、理解を書き出すことやPC操作に不慣れな生徒にも、 オンボーディングを通して丁寧に伴走します。\nオンボーディング後は、PCメモへの非同期レビューを中心に、 週1回・40分の主指導、週1回・20分の中間確認、週2回のオンライン自習室を組み合わせて、 一週間の学習を継続的に支えます。\nこの考え方を詳しく読む 同期指導 タイマー学習 一週間の流れ 指導日と時間割 初回面談 オンボーディング 塾からの卒業を目指す 「レビュー駆動学習」の結果として、生徒自身で理解を整理したり、 疑問を言語化して質問できるようになることを目指します。\n言語化できるようになると、自分で次に何をすべきかを考え、 学校の先生に質問したり、PCで調べたりしながら学習を進められます。\n必要なときには周囲の支援も求めながら、自分で学習を進める。 当塾はその「自走力」を高め、最終的には塾から卒業できることを目指します。\n受講について 中学1年生から高校2年生までの、鈴鹿市・四日市市とその周辺の生徒を対象とします。 数学・物理・理科・情報を中心に、学校教材を使った日々の学習を支援します。\nPCメモを使った学習環境を家庭の負担なく始められるよう、 必要な設定を済ませたノートPCを無償で貸与します。 また、月1回、PCメモの変化や現在の課題、講師が行った支援、次に取り組むことを 保護者へチャットで報告します。\n通常料金は月額20,000円（税込）の固定制です。 現在は、最初のモニター生3名を3ヶ月間、月額10,000円（税込）で募集しています。\n受講条件を詳しく読む 料金と受講条件 モニター生募集 PCの貸与・譲渡条件 保護者への学習状況の共有 本HPのページ構成 本HPの記事は3つに大別されます。\n本塾の考え方や方針など concept: 塾に依存しない普遍的な内容・学習理論 system: conceptを実現する当塾の具体的な方法 trust: systemの信頼性を支える、経験に裏打ちされた内容 funnel: 勉強に関する身近な悩みから、関連する考え方や指導方法へ案内する記事 example: 本塾の指導実績 利用・運営 legal: 当塾の契約や約束に関する法的な書類 manual: 受講やPC操作に関するマニュアル 一般記事 article: 本塾の仕組みを説明するものではない、数学・物理・ITなどの解説記事 ","permalink":"https://gotoh-it-school.top/overview/","summary":"\u003cp\u003e本記事では、後藤IT塾の学習に対する考え方と、それを実現する指導の仕組みをまとめます。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"分解・再構成した理解をPCメモへ外部化し、学校の学習と講師レビューの二つの循環を同期指導が支える全体像\" loading=\"lazy\" src=\"/overview/overview.svg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"自分の言葉で理解を整理する\"\u003e自分の言葉で理解を整理する\u003c/h2\u003e\n\u003cp\u003e理解とは、情報を分解し、自分の中で再構成することです。\n生徒は、その過程を自分の言葉で書き出すことで理解を整理します。\u003c/p\u003e","title":"後藤IT塾の全体像"},{"content":"勉強には、はっきりとした終わりがありません。\n教科書を理解しても、問題集や復習が残っています。 一つの単元を終えても、次の単元があります。\n「今日はここまで終わらせよう」と決めても、思ったより時間がかかり、 達成できなかったという感覚だけが残ることもあります。\n私は、こうした終わりの見えない作業を続けるためにタイマーを使っています。\nやることの多さに圧倒される 私にも、読みたい本、書きたい塾記事、開発したい機能が大量にあります。 取り組んでいる間にも、調べたいことや作りたいものが次々と増えていきます。\nやることを全部眺めると、それだけで圧倒されてしまいます。\nそこで、\n今日は本をここまで読もう 今日は記事を一本完成させよう 今日はこの機能を実装しよう というように、今日完了させたい作業を決めます。 作業の範囲を限定すると、漠然と全部を抱えるより取り組みやすくなります。\n完了のプレッシャーと罪悪感 作業の範囲を限定しても、完了させること自体が重く、気が進まないことがあります。\nたとえば「今日は本を10ページ読もう」と決めても、 思いのほか内容が難しく、予定どおり進まないことは少なくありません。 作業がどれくらい進むかは、自分で完全には制御できないからです。\nそれでも、10ページという目標を達成できなければ、 取り組んだ時間まで「失敗」のように感じてしまいます。\n一方、「今日は決めた時間だけ取り組む」なら、 作業が完成しなくても、その日の目標を達成したと考えられます。\nなぜタイマーなのか 時間で区切るといっても、「今日は5時間勉強する」では、 その長さ自体が新しいプレッシャーになります。\n膨大な作業を今日の作業へ分けたように、 長い時間も短い時間へ分けます。\nそこでタイマーが便利です。\nやる気に依存しない仕組み タイマーを使う以前は、作業を始めても、 すぐにスマートフォンやYouTubeを見てしまいがちでした。\nしかし、タイマーを開始すると「いまはこの作業の時間だ」と区切られるため、 ほかのことへ逃げにくくなります。\nそれでもスマートフォンを見てしまうことはあるのですが（笑）。\n始める前は気が重くても、いったん手を動かすと、 そのままやる気が出て集中できることがあります。 いわゆる「作業興奮」と呼ばれる感覚です。\n気分が乗ってきて、「もう一時間追加しよう」と思うことすらあります。\nやる気が出るのを待つのではなく、とりあえずタイマーを開始する。 これが大切だと私は実感しています。\n毎日コツコツ もちろん、私も毎日予定どおりに取り組めるわけではありません。 タイマーを開始できない日や集中できない日もあります。\n私の場合は、一時間を一セットとして、その日に取り組みたい作業へ割り振っています。\nそれでも、 「今日は5セットのうち2セットできた」 「全部のセットはできなかったけど、今日も少し本を読み進められたし執筆も進んだ」 という日が増えました。\n「とりあえず1時間タイマーを設定する」というハードルの低さのおかげでコツコツと作業できるようになりました。\nタイマーを使う以前は、やることの多さに気が重くなり、 結局何もしない日も珍しくありませんでした。\nいまは「とりあえず一時間だけ」と始めることで、 積んでいた本を読み、開発や記事の執筆も少しずつ進められています。\n一日も欠かさず続けることより、できる日に一セット始め、 途切れた後もまた再開することの方が大切です。\nタイマーは、膨大な作業量に少しずつ立ち向かうリズムを与えてくれました。\n後藤IT塾にも取り入れる 後藤IT塾では、オンライン対面指導の時間だけでなく、 学校や放課後を含む日々の学習を重視しています。\nしかし、学校の宿題だけでも面倒に感じている生徒へ、 教科書を読み、PCメモも作るように求めるだけでは、負担が増えてしまいます。\nそこで後藤IT塾では、毎週のオンライン対面指導で、 いつ、何に、どれくらいの時間なら取り組めそうかを生徒と一緒に考えます。\nまずタイマーを開始し、決めた時間だけ教科書、宿題、PCメモのいずれかに取り組む。 私と同じ一時間を求めるのではなく、その生徒が始められる時間から試します。\nタイマーを開始しただけで、内容を理解できるわけではありません。 タイマーは、学習を始めるための仕組みです。 その時間に分かったことや分からなかったことはPCメモへ残し、 講師のレビューを次の学習へ生かします。\nまず一セット始める 勉強でも、読書でも、開発でも、終わりの見えない作業を前にすると気が重くなります。\n全部を終わらせようとせず、まず自分が始められる時間だけタイマーを設定する。 時間が来たらいったん区切り、続けられそうならもう一セット追加する。 できない日があっても、また次の一セットを始める。\nその繰り返しが、終わりの見えない作業を少しずつ前へ進めるリズムを作ってくれます。\n","permalink":"https://gotoh-it-school.top/timer/","summary":"\u003cp\u003e勉強には、はっきりとした終わりがありません。\u003c/p\u003e\n\u003cp\u003e教科書を理解しても、問題集や復習が残っています。\n一つの単元を終えても、次の単元があります。\u003c/p\u003e\n\u003cp\u003e「今日はここまで終わらせよう」と決めても、思ったより時間がかかり、\n達成できなかったという感覚だけが残ることもあります。\u003c/p\u003e","title":"勉強が続かないときにタイマーを使う理由――時間で区切ると始めやすくなる"},{"content":"本記事では、後藤IT塾の指導をイメージしていただくために、典型的な一週間の学習サイクルを紹介します。 これはオンボーディングを終えた後の指導の流れです。\n同期指導 と非同期指導 によって、対面指導がない日も勉強をサポートいたします。\n実施する曜日と時間は「指導日と時間割」にまとめています。\n以下で、後藤IT塾を導入することで学習の流れがいかに変わるのかを説明します。\n日々の非同期指導 基本的には、PCメモを書いて理解をアウトプットしていただきます。 メモできなくても構いません。 うまくメモにまとめられない点や書き進められない箇所が分かるからです。 「ここが全然分からない」というメモでも構いません。 生徒が更新したPCメモから「何が分からないのかも分からない」という点を拾い上げます。 もちろん、質問できる状態であればチャットで聞くこともできます。\nこのようなPCメモ主体の日々の学習が「レビュー駆動学習」です。 講師は、生徒が更新したPCメモを非同期で確認し、コメントを返します。 塾の日を待たずに日々の「分からない」や「疑問」を汲み取る仕組みでもあります。\nPCメモの更新とチャットの送信は、いつでも行えます。 講師が確認する曜日と返信の目安は、時間割であらかじめ定めています。\n非同期のコメントだけでは進みにくい部分は、主指導で一緒に取り組みます。\n40分の主指導で進みにくい問題を扱う 後藤IT塾では、週1回、40分のオンライン対面指導を「主指導」として実施します。\n主指導で扱う問題は、 日々のPCメモや非同期指導を通して事前に見つかっているのが理想です。\n問題が分かっていれば、 該当する部分の教科書を一緒に読んだり、 宿題を解いたりして、 そこで得た理解をメモに反映します。\nまだ問題が明確になっていない場合も、やることはあまり変わりません。 講師と生徒が共に教科書を読んだり、 宿題を解いたりしながら、 どこで理解が止まっているのかを探します。\nここで重要なのは、生徒のPCメモを実際に編集するのは、原則として生徒本人だということです。 講師は問いかけや助言によって、生徒が自分の言葉で理解を整理する過程を支援します。 講師が代わりにきれいなメモを作ってしまえば、そこに表れるのは講師の理解であり、生徒の理解ではないからです。\n主指導で理解の詰まりを解き、生徒が再び日々の学習を進められる状態を目指します。\n画面越しでは学習状況を把握しにくい場合は、 生徒・保護者と相談し、その週のオンライン主指導を、 60分のオフライン対面指導へ切り替えることがあります。\n学校の授業が変わる 多くの学習時間を占めるのは塾ではなく学校です。 なので、塾の取り組みが学校とリンクすることが極めて重要です。\n後藤IT塾の指導は学校を有効活用できるように支援します。 新たな塾用教材を一律に指定することはありません。 学校の教科書や宿題を中心に扱います。\nまず、塾から学校へのアプローチは以下のようなものです。\n教科書の下見 教科書に登場する用語や分からないものをメモしておく 宿題を解いてメモに理解を書く際に分からないことを発見する こうした疑問を同期指導と非同期指導で積極的に発見しようとします。 そうすることで、学校の授業で何を確かめたいのかが見えるようになります。\n逆に、学校から塾へのアプローチもあります。 PCメモへ自分の言葉で説明しようとすると、うまく説明できない部分が疑問として現れます。 すると、学校の授業を聞く構えが変わります。 学校の先生への質問につながるでしょう。 学校のノートはただの板書ではなく、後でPCメモに編集するための素材となります。 宿題も解いて終わりではなく、そこで得た理解を言語化してPCメモへ保存します。 うまくメモが書けなければ、チャットで講師に投げておくこともできます。\nこのように、後藤IT塾と学校の両輪によって、 日々の学校の時間を有効活用できるようになります。\nオンライン自習室 非同期指導や主指導を活用するには、 放課後や休日にも少しずつ学習へ取り組む必要があります。\nしかし、一人で勉強を始め、それを習慣にすることは簡単ではありません。\nそこで、週2回開催するオンライン自習室のうち、 原則としてどちらかへ60分程度参加していただきます。 両方参加でも構いません。 あらかじめ参加する曜日と時間を決め、講師と約束します。\n主指導でも使用するオンラインミーティングへ入室し、 その日に取り組む内容と時間を講師へ伝えてから、 タイマーを開始して自分の学習を進めます。 マイクやカメラはオフで構いません。\n長時間勉強する必要はありません。 最初は10分や20分でも、決めた時間に学習を始めることを重視します。\nこのように時間を区切って学習する方法を、 後藤IT塾では「タイマー学習」として勧めています。\nオンライン自習室がない日も同じようにタイマーを使うことで、 気軽に学習を始めやすくなります。\n自習直後の20分の中間確認 日々勉強を継続することが大事です。\nそのため、次の主指導まで一週間待つのではなく、 週の途中に20分の中間確認を設けています。\n後藤IT塾では、一対一のオンライン対面指導を40分の主指導と20分の中間確認に分けています。\n中間確認は、オンライン自習室で60分程度の自習へ取り組んだ直後に行います。 自習で見つかった問題を、そのまま一対一で振り返るためです。\nこれは、二つの短い授業を行うためではありません。 PCメモとチャットを通じた非同期指導が日々続いているため、 同期指導を一度にまとめる必要がないからです。\n中間確認では、主指導後の学習について、\n学校の授業や宿題を進められたか PCメモを更新できたか 講師のレビューを確認できたか 自習室で何に取り組み、どこで止まったか 新しく困ったことはないか を会話しながら確認します。\n学習が止まっている場合は、どこで止まったのかを一緒に確かめ、次に取り組む小さな一歩を決めます。\n短時間で解消できる問題は、その場で扱います。 長い説明や共同作業が必要な問題はPCメモへ残し、非同期指導や次の主指導へつなげます。\n中間確認は他の生徒に内容が聞こえないよう、 オンライン自習室とは別の一対一の通話で行います。\n中間確認は、新しい内容をまとめて教える時間ではありません。 止まりかけた日々の学習を、再び動かすための時間です。\n次の主指導へ 一週間の中で、学校の授業や宿題から新しい疑問が生まれます。 PCメモにまとめるという観点が、さらに疑問を掘り出してくれます。 こうした疑問はPCメモへ残し、次の主指導へつなげます。\n次の主指導では、 学校の進度、PCメモ、非同期指導や中間確認で見つかった問題を確認し、 一人では進みにくかった部分へ一緒に取り組みます。\nそして、学校と放課後の学習を、PCメモと塾の指導でつなぐサイクルを繰り返します。 後藤IT塾の指導は、一回のオンライン対面指導だけで完結するものではありません。 学校と放課後を含む一週間の学習を複数の方法で継続的に支援します。\n保護者にも学習の過程が見える オンラインを中心とした指導では、 保護者様から日々の学習の様子が見えにくくなりがちです。\n後藤IT塾では、蓄積されたPCメモを学習記録として活用し、 初回面談から1ヶ月ごとに、学習状況を保護者様へチャットで共有します。\n単に「頑張っています」と所感を伝えるだけではありません。 PCメモがどのように変化したか、どこで理解が止まり、 講師が何を支援したのかを具体的にお伝えします。\n報告は、次の項目を基本とします。\n取り組んだ内容 PCメモの変化 現在の課題 講師が行った支援 次の1ヶ月に取り組むこと ご家庭へ相談したいこと 必要に応じて、PCメモの該当部分が分かる画像やリンクも添え、 点数や勉強時間だけでは見えにくい学習の過程を共有します。\n学習が長く止まっている場合や、ご家庭での協力が必要な場合は、 月ごとの報告を待たずにご相談します。\n","permalink":"https://gotoh-it-school.top/weekly-flow/","summary":"\u003cp\u003e本記事では、後藤IT塾の指導をイメージしていただくために、典型的な一週間の学習サイクルを紹介します。\nこれは\u003ca href=\"/onboarding/\"\u003eオンボーディング\u003c/a\u003eを終えた後の指導の流れです。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"一週間を通して続く学校と放課後の学習を40分の主指導、オンライン自習室、20分の中間確認、非同期レビューで支える流れ\" loading=\"lazy\" src=\"/weekly-flow/weekly-flow.svg\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/sync-support/\"\u003e同期指導\u003c/a\u003e\nと\u003ca href=\"/async-support/\"\u003e非同期指導\u003c/a\u003e\nによって、対面指導がない日も勉強をサポートいたします。\u003c/p\u003e","title":"普段の勉強はどう変わる？一週間の学習の流れ"},{"content":"後藤IT塾は「レビュー駆動学習」 によって、\nPCメモで理解を可視化し、継続的に改善する 勉強を独力で進める「自走力」を培う という指導方法を採用しています。\nしかし、この学習方法は従来の塾とは大きく異なるため、最初から一人で実践することは簡単ではありません。\nそこで、定期的な「同期指導」によってレビュー駆動学習を補助します。\n特に最初はレビュー駆動学習に慣れていただくため、同期指導を通常より手厚くします。 これが「オンボーディング」です。\n本記事ではオンボーディングでの具体的な実施内容について説明します。\nオンボーディングの目的 オンボーディングの目的はレビュー駆動学習ができる状態を作ることです。\nレビュー駆動学習は、生徒自身が身につける学習方法です。 そのため、オンボーディングは生徒と講師を中心に進めます。\n保護者様には、学習環境や予定調整などで必要に応じてご協力いただきます。 一方で、PCメモを書くこと、レビューを受けて直すこと、宿題とメモを往復することは生徒自身が担います。\nオンボーディングでは、次の状態を目指します。\nPCで学習メモを作成・更新できる 教科書や授業内容を自分の言葉でメモに整理できる 分からない部分をメモやチャットで共有できる レビューを受けてメモを改善できる 宿題の結果をメモに反映できる 学習環境を整える 最初に、レビュー駆動学習に必要な環境を整えます。\n初回面談で貸与PCをお渡しした後、 オンボーディングでは実際に生徒本人が操作しながら確認します。\nPCにログインする Nextcloudにログインする メモの保存場所を確認する Nextcloud Talkで連絡できる状態にする 学校教材や課題の写真を共有できる状態にする ここで重要なのは、設定が完了していることだけではありません。 生徒本人が自分で開けること、保存できること、講師へ共有できることを確認します。\nまた、PC操作に慣れていない場合は、キーボード入力やファイル操作も一緒に練習します。 レビュー駆動学習はPCメモを継続的に更新するため、文字入力が重すぎると学習そのものが止まってしまうからです。\nドキュメント学習に慣れる 環境が整ったら、ドキュメント学習に慣れていきます。\n初回面談で確認した成績や学校の進度、 普段のノート、使用教材、学習習慣、PC操作への慣れをもとに、 最初に取り組む範囲や支援の仕方を考えます。\nその上で、生徒と相談しながら、 教科書のどこを読むか、またはいきなり学校の宿題に取り組みつつPCメモを書き始めるのか、 具体的に取り組む範囲を決めます。\n最初から完璧なメモを書く必要はありません。 まずは、教科書や授業で扱っている単元について、\nどんな言葉が出てきたか 何を覚える必要がありそうか どこがまだ分からないか どの問題で手が止まったか をPCメモに書き出します。\nこの段階では、文章が多少ぎこちなくても問題ありません。 目的は、頭の中だけにある理解や疑問を、講師が見られる形に外へ出すことです。\n同期指導では、取り組む内容に応じて、 講師と一緒に教科書を読む 「ペアリーディング」や、 宿題とPCメモを往復する 「ペアスタディ」に取り組みます。\nどこをメモすべきか、どの程度詳しく書けばよいか、 自分の言葉に直すにはどうすればよいかを講師と一緒に確認します。\nこのように、オンボーディングでは講師が通常より細かく進め方を案内します。 ただし、講師が完成した説明を生徒のPCメモへ書くのではありません。 支援を受けながら、生徒本人が考え、自分の言葉でPCメモを更新します。\nレビューを受ける流れを体験する メモを書いたら、講師がその内容をレビューします。\nレビューでは、正解・不正解だけを見るのではありません。\n重要な項目が抜けていないか 教科書の言葉を写しただけになっていないか どこで理解が止まっているか 宿題や授業で確認すべき点は何か を確認し、コメントします。\n生徒はそのコメントをもとに、メモを直します。 この「書く、レビューを受ける、直す」という一連の流れを体験することがオンボーディングの中心です。\n宿題に取り組む場合は、メモを見ながら問題を解きます。 解けなかった問題は、単に解説を読んで終わりにするのではなく、\nメモに必要な説明がなかったのか 書いてあったが理解が浅かったのか 問題を解く手順が整理されていなかったのか を振り返ります。\n「ペアスタディ」でも同じように確認します。 宿題とPCメモを往復しながら、メモを実際に使える知識ベースへ育てていきます。\n自力でレビュー駆動学習を回せるようになる オンボーディングの最終目標は、講師が毎回細かく指示しなくても、 生徒自身がレビュー駆動学習の流れを回せるようになることです。\n具体的には、次の流れを自分で進められる状態を目指します。\n教科書・授業・宿題からメモに書くべき内容を見つける PCメモを自分の言葉で更新する 分からない部分を残したままにせず、TODOや質問として書く 講師のレビューを確認する レビューをもとにメモや学習方法を修正する ここまでできるようになれば、通常の同期指導へ移行します。\n通常の同期指導でもレビューは継続しますが、オンボーディングほど手取り足取りは支援しません。 生徒自身がメモを更新し、必要なタイミングで質問や相談を出せる状態を前提に進めます。\n完了の目安 オンボーディングは、固定の日数で機械的に終わるものではありません。 PC操作や言語化への慣れには個人差があるためです。\nただし、完了の目安は明確にします。\n生徒本人がPCメモを開き、更新し、共有できる 学校教材をもとに学習項目をメモへ整理できる レビューコメントを読んで、少なくとも一部を自分で修正できる 宿題で分からなかった点をメモに戻せる 次に何を学習するかをメモ上で確認できる これらが確認できたら、レビュー駆動学習を始める土台ができたと判断します。\n結び オンボーディングは、特別な授業を追加するための期間ではありません。\nレビュー駆動学習を実際に始めるために、 PC操作、メモ作成、レビュー、宿題への反映という基本動作を一緒に練習する期間です。\n最初は講師が横について進めます。 しかし、目指すのは講師がいないと勉強できない状態ではありません。\n自分の理解をPCメモに残し、見直し、改善できるようになること。 それがオンボーディングのゴールです。\n","permalink":"https://gotoh-it-school.top/onboarding/","summary":"\u003cp\u003e後藤IT塾は「\u003ca href=\"/review-driven-cycle/\"\u003eレビュー駆動学習\u003c/a\u003e」\nによって、\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePCメモで理解を可視化し、継続的に改善する\u003c/li\u003e\n\u003cli\u003e勉強を独力で進める「自走力」を培う\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eという指導方法を採用しています。\u003c/p\u003e\n\u003cp\u003eしかし、この学習方法は従来の塾とは大きく異なるため、最初から一人で実践することは簡単ではありません。\u003c/p\u003e","title":"「レビュー駆動学習」を始めるオンボーディング"},{"content":"後藤IT塾では「レビュー駆動学習」 によって、自分だけで勉強を進められる「自走力」を身につけることを目指しています。\n無料相談で後藤IT塾の考え方に納得いただけたら、初回面談へ進みます。 この初回面談シートを一緒に記入しながら進めます。\n初回面談では、オフラインで直接お会いします。 普段使用している教材やノートを確認し、貸与PCを直接お渡しして、 今後の非同期オンライン指導とオンライン対面指導に必要な環境を一緒に整えるためです。\n初回面談は90〜120分程度を予定します。 実施日時は「指導日と時間割」をもとに、ご家庭と相談して決めます。\n学習状況を確認するだけでなく、 お互いを知り、安心してやり取りを始めるための時間にしたいと考えています。\n現状把握 現在の成績やテスト結果を共有していただきます。 苦手科目や重点的に学習すべき箇所を考える参考にします。\nそして、できればノートや課題なども見せていただきたいです。 どのように考え、どのような学習習慣で勉強しているのかを知る手がかりになるからです。 (落書きなどがあって恥ずかしければ、無理に見せていただかなくて大丈夫です。)\n目標設定 志望校や定期テストの目標などを確認し、 学習の優先順位を一緒に整理します。\n細かな学習計画を最初から固定するのではなく、 現在の状況に応じて柔軟に調整していきます。\n学校や教材の確認 学校で使用している教科書や問題集を確認します。\n後藤IT塾では新たな教材を指定するのではなく、学校教材を最大限活用します。 そのため、どの教材を使っているかを最初に確認します。\n学習習慣のヒアリング 現在の学習習慣や学校の進度を伺い、無理のない学習ペースを一緒に考えます。\n学校の教科書や課題を基準に、日々どこまで学習すればよいかも確認します。\n学習環境のセットアップ レビュー駆動学習はPCを使ったドキュメント学習 の上に成り立っています。\nセットアップ済みの貸与用PCをお渡しし、 実際に起動して利用できる状態か一緒に確認します。 そして、PCを使ったドキュメント学習やレビューの進め方をご説明します。\nまた、学校で気付いた疑問や勉強資料の写真をすぐ共有できるよう、 スマートフォンにもNextcloudを設定します。\n今後の予定 初回面談後、オンボーディング の日程を調整します。\n初回面談後の同期指導は、ビデオ通話や画面共有を使ったオンライン対面指導を基本とします。 画面越しでは学習状況を把握しにくい場合などは、 生徒・保護者と相談し、オフライン対面指導へ切り替えることがあります。\nレビュー駆動学習は、初回面談だけで始められるものではありません。 最初はオンボーディング期間を設け、講師と一緒に少しずつ進め方を身につけていきます。\n結び 以上が初回面談の内容です。\nレビュー駆動学習は、一人ひとりの理解や学習習慣に合わせて進める学習法です。\nその土台となる初回面談は単なる説明会ではなく、 これから一緒に学んでいくための大切な準備期間だと考えています。\n","permalink":"https://gotoh-it-school.top/initial-meeting/","summary":"\u003cp\u003e後藤IT塾では「\u003ca href=\"/review-driven-cycle/\"\u003eレビュー駆動学習\u003c/a\u003e」\nによって、自分だけで勉強を進められる「自走力」を身につけることを目指しています。\u003c/p\u003e\n\u003cp\u003e無料相談で後藤IT塾の考え方に納得いただけたら、初回面談へ進みます。\nこの\u003ca href=\"/initial-sheet/\"\u003e初回面談シート\u003c/a\u003eを一緒に記入しながら進めます。\u003c/p\u003e","title":"「レビュー駆動学習」を始める初回面談"},{"content":"本記事は後藤IT塾の初回面談で使用する面談シートです。\n面談は単なる雑談ではありません。 現在の状況を把握し、レビュー駆動学習を始めるための土台を作ることが目的です。\n本面談シートは運用を通して継続的に改善していく予定です。\n基本情報 学年・学校 生徒氏名 保護者氏名 緊急連絡先（電話番号） 保護者様が期待していること この塾に期待していること 現在、一番心配していること 現状把握 得意科目 苦手科目 これまで苦手な単元・分野 定期テスト結果 模試結果 志望校 現在困っていること 学習習慣 平日の勉強時間 休日の勉強時間 部活動・習い事 家庭学習の場所 普段の勉強方法 学校・教材 使用している教科書 学校問題集 配布プリント 市販参考書 宿題の状況 学習環境 PC操作で困っていること メモ 自由記述\n講師所感 第一印象 気になったこと 指導上の注意点 変更履歴 v0.1.0 (2026-07-01) 初版 ","permalink":"https://gotoh-it-school.top/initial-sheet/","summary":"\u003cp\u003e本記事は後藤IT塾の初回面談で使用する面談シートです。\u003c/p\u003e\n\u003cp\u003e面談は単なる雑談ではありません。\n現在の状況を把握し、レビュー駆動学習を始めるための土台を作ることが目的です。\u003c/p\u003e","title":"初回面談シート"},{"content":"「同期指導」とカッコつけて呼んでいますが、要するに、講師と生徒が時間を合わせる普通の指導です。\n後藤IT塾の中核は非同期の「レビュー駆動学習」です。\n同期指導は、生徒がレビュー駆動学習を自力で実践できるようになるための仕組みです。\n初回面談ではオフラインで直接お会いし、 貸与PCを渡して、その後のオンライン指導を準備します。\n後藤IT塾のオンライン指導には、次の二つがあります。\nチャットやPCメモのレビューによる「非同期オンライン指導」 ビデオ通話や画面共有による「オンライン対面指導」 初回面談後の同期指導は、オンライン対面指導を基本とします。 毎回の移動がないため、生徒・保護者・講師の負担を抑えながら、定期的な指導時間を確保できます。\nただし、後藤IT塾は全国向けのオンライン塾ではありません。 鈴鹿市・四日市市とその周辺の生徒を対象に、地域の学校事情を踏まえて指導します。\n画面越しでは学習状況を把握しにくい場合など、 オフライン対面の方が進めやすいこともあります。 その場合は、生徒・保護者と相談し、 その週の40分のオンライン主指導を、60分のオフライン対面指導へ切り替えます。 オフライン対面指導は、初回面談を除いて定期的な実施を約束するものではありません。\n本記事では、そのレビュー駆動学習を支える同期指導の役割について説明します。\nなぜ同期指導が必要か レビュー駆動学習の前提は生徒が「理解を言語化してメモに書き出せる」ことです。\n言語化は極めて重要です。 なぜなら、質問したり、どこが分からないかを特定したりするためには言語化が必要だからです。\nしかし、言語化は容易ではありません。\nそこで同期指導では、講師と一緒に理解を自分の言葉でPCメモへ整理する方法を身につけていきます。\n同期指導には、勉強する時間を定期的に確保し、学習習慣を維持しやすくする効果もあります。\nただし、それは副次的な効果です。 本当の目的は、生徒がレビュー駆動学習を自力で進められる状態を作ることです。\n同期指導では言語化を伴走する IT文化には一緒に作業しながら学ぶ「ペアプログラミング」という考え方があります。\nこの考え方を学習へ応用し、後藤IT塾でも、\n教科書を読み合わせてメモを書く「ペアリーディング」 メモを活用して宿題を解き、理解をメモに反映していく「ペアスタディ」 を同期指導の中心とします。\n講師が考え方を教えるだけでなく、生徒がどのように考えているのかも共有しながら進めます。\nまた、必要に応じて学習について相談し、進み具合も確認します。\n生徒のPCメモは生徒自身が書く 同期指導では、講師と生徒が一緒に教科書を読み、宿題について考えます。\nただし、生徒のPCメモを実際に編集するのは、原則として生徒本人です。\n講師が代わりにきれいなメモを作ってしまえば、 そこに表れるのは講師の理解であり、生徒の理解ではありません。\n理解を自分のものにするには、 情報を自ら分解し、自分の言葉で再構成する過程 を生徒本人が通る必要があります。\n生徒が自分の言葉で書こうとすることで、 どこまで説明できるのか、どこで言葉が止まるのかが見えるようになります。\n講師は生徒を放置するわけではありません。\n何が重要か問いかける 書き出しを提案する 選択肢や具体例を示す 別の場所に見本を書く 生徒の発言を整理して聞き返す PCメモへレビューコメントを書く といった方法で言語化を支援します。\n共同で考えますが、理解を整理し、 生徒自身のPCメモを完成させるのは生徒本人です。\nペアリーディング 教科書には学習すべき内容が網羅されています。 なので、後藤IT塾では教科書に沿って学習を進めることを基本とします。\nペアリーディングでは、講師と生徒が一緒に教科書を読みながら、\nどこを重要と判断するか どう要約するか どんな言葉を選ぶか を一緒に考えます。\nこの原則のもとで、生徒は理解を言語化してPCメモに書く方法を少しずつ身につけていきます。\nペアスタディ 宿題は単に正解・不正解を確認するためのものではなく、 理解をPCメモとして整理するための機会として捉えます。\nPCメモを参照しながら宿題を解き、必要に応じてその場でメモを更新していきます。\n宿題が解けなかった場合は、\nメモの項目が不足していたのか 書いてあっても整理が不十分だったのか を一緒に振り返り、生徒自身がメモを改善します。\n逆に、解けてもそれで終わりにしません。 解くのに使った知識がメモに反映できているかを確認します。\nこうした書き漏れは一人では気づきにくいものです。\nなので、講師と一緒に宿題とPCメモを往復しながら、レビュー駆動学習の進め方を身につけていきます。\n主指導と中間確認 オンボーディングを終えた後は、週に二回、一対一のオンライン対面指導を設けます。 二回を同じ内容の授業にはせず、それぞれの役割と時間を分けます。\n40分の主指導 週に一回、40分の主指導を設けます。\n実施する曜日と時間は「指導日と時間割」をご確認ください。\n主指導では、前回から更新されたPCメモを見ながら、 学校の授業や宿題で分かったこと、まだ分からないことを確認します。\n非同期のコメントだけでは進みにくかった部分は、 ペアリーディングやペアスタディを通して一緒に考えます。 そのうえで、学校の進度や予定に合わせて、 次に取り組む範囲と日々の学習の進め方を整理します。\n生徒が一人で教科書を読んだり、問題を最後まで解いたりする時間まで、 オンライン対面指導へ含めるわけではありません。 一対一の対話や共同作業が必要な部分へ時間を使い、 続きはPCメモと非同期のレビューを通して進めます。\n20分の中間確認 主指導とは別に、週に一回、20分の中間確認を設けます。\n中間確認は、オンライン自習室で60分程度の自習へ取り組んだ直後に、 一対一で行います。\n中間確認では、\n自習室で何に取り組んだか PCメモを更新できたか 講師のコメントをもとに進められたか 自習中にどこで止まったか 学校の授業や宿題で新しく困ったことはないか を確認します。\nこれは非同期の学習を再び動かすための時間です。 どこで止まっているかを確かめ、次の主指導までに取り組むことを決めます。\n詳しい説明や長い共同作業が必要な場合は、 PCメモへ残して非同期で扱うか、次の主指導へつなげます。\n中間確認は他の生徒に内容が聞こえないよう、 オンライン自習室とは別の一対一の通話で行います。\n40分と20分を一度にまとめず、一週間の中に二つの固定点を置くことで、 学習が長く止まったままになることを防ぎます。\nオンライン自習室 一対一のオンライン対面指導に加えて、オンライン自習室を毎週二回開きます。 生徒は基本となる参加枠を一つ選び、60分程度参加します。 もう一方の開催日にも参加できます。\n入室したら、その日に取り組む内容を講師へ伝えてタイマーを開始します。 教科書、学校の宿題、PCメモなど、それぞれが自分の学習を進めます。\n自習中はマイクを切り、質問があれば個別チャットで講師へ送ります。 短時間で答えられない質問はPCメモへ残し、非同期のレビューや一対一の主指導で扱います。\n自習後は、そのまま20分の中間確認へ移ります。 自習で実際に進んだ場所や止まった場所を振り返り、次に取り組むことを決めます。\n講師が他の生徒の中間確認を行っている間は、 チャットへ即時に返信できるとは限りません。 定期的に学習する時間を確保し、そこで見つかった問題を次の支援へつなげる場としてオンライン自習室を使います。\n最終的には自走 同期指導やレビューはあくまで補助輪です。\n最初は講師の支援を受けながら言語化し、生徒自身でPCメモを改善する方法を身につけます。\nやがて、生徒自身でPCメモをレビューし、改善できるようになります。\n「何が分からないのか分からない」から、 「ここが分からない」と整理できるようになれば、 自分で教科書や資料を調べて解決できることも増えていきます。\nつまり、レビュー駆動学習が目指しているのは、 講師がいなくても理解を整理・改善し続けられる「自走」です。\n","permalink":"https://gotoh-it-school.top/sync-support/","summary":"\u003cp\u003e「同期指導」とカッコつけて呼んでいますが、要するに、講師と生徒が時間を合わせる普通の指導です。\u003c/p\u003e\n\u003cp\u003e後藤IT塾の中核は非同期の「\u003ca href=\"/review-driven-cycle/\"\u003eレビュー駆動学習\u003c/a\u003e」です。\u003c/p\u003e\n\u003cp\u003e同期指導は、生徒がレビュー駆動学習を自力で実践できるようになるための仕組みです。\u003c/p\u003e","title":"レビュー駆動学習を補助する「同期指導」"},{"content":"本記事では「非同期ドキュメント指導」 を後藤IT塾がどのように実現するのか、具体的に説明します。\n非同期ドキュメント指導の核心は、質問に至らない「分からない」を発見し支援することです。\n何がどう分からないかを質問できるのなら、既に半分分かっているようなものです。 「何が分からないのか分からない」状態こそ支援が必要です。\nそこで、生徒には理解をPCメモに言語化していただきます。 それを観察しフィードバックすることで生徒の理解を継続的に改善していきます。 本記事では、この仕組みを「レビュー駆動学習」と呼びます。\n後藤IT塾では、PCメモの更新を継続的にレビューしながら、次の学習サイクルを繰り返します。\n学校の教科書をもとにPCメモを作る 学校の授業でPCメモを育てる 学校の宿題でPCメモを検証する 理解をPCメモとして外部化する まずは学校で使っている教科書を読みます。 教科書には学習すべき内容が網羅されています。 なので、教科書に沿って学習を進めることを基本とします。\n生徒は教科書にどのような概念が登場するのかを整理し、自分なりの言葉でPCへメモします。 自分で学習項目を整理する過程そのものが理解の助け になります。\nこのメモは単なるノートではありません。 現時点での理解を外部化したものです。\nこの外部化によって講師が生徒の理解を観察できるようになります。\nメモのレビュー メモには、質問になる前の「分からない」が現れます。\nメモすべきなのに見落とした部分 自分の言葉で十分にメモできていない部分 このメモを見ることで、\n生徒がどこまで理解できているのか どこで止まっているのか が見えてきます。\n講師はそれに基づいて、\n学校の授業で確認すべき点 項目間のつながりの整理が甘い点 うまく言語化できていない点 などをコメントとして追記し、フィードバックします。\nチャットからPCメモへ戻る PCメモに整理する前の段階では、 「この宿題が分からない」としか伝えられないこともあります。 その状態でも、チャットで講師へ共有して構いません。\nただし、講師がチャットで解答だけを返すことを中心にはしません。 問題文から分かることや関係する教科書の箇所を確認し、 解くために足りない理解をPCメモへ整理します。\nチャットだけでは進みにくい問題はPCメモへ残し、 オンライン主指導で一緒に扱います。\nレビューの対応 PCメモの更新とチャットの送信は、いつでも行えます。 送信後の即時対応を約束するものではありません。 次の対応日までに自分で確認したことや試したことも、PCメモへ追記できます。\nレビューを行う曜日と返信の目安は、 「指導日と時間割」をご確認ください。\n学校の授業でPCメモを育てる 生徒は上記のメモのフィードバックを念頭に学校の授業へ取り組みます。\nメモを改善する意識を持つことで、学校の授業から何を持ち帰るべきかが明確になります。\nメモに抜け漏れがあるか 学習項目を自分の言葉でどう説明すればいいか こういう意識で学校の授業に臨みます。\n学校の授業ノートはただ板書を書くのではなく、 具体的にPCメモへどう整理するかを書くように変化します。\nそして、学校の授業で得た知識をメモへ反映します。 その更新に対しても講師はレビューします。\n学校の宿題でPCメモを検証する 学校の授業と同様に、宿題もメモを改善するための機会だと捉えます。\n宿題は、\n問題が解けた。理解できていた。 解けなかった。分かっていなかった。 というフィードバックを与えてくれます。\nしかし、漠然と「分からなかった」だけで終わってしまいがちではないでしょうか。\nそこで理解を外部化したメモを参照しつつ宿題を解きます。\nこのとき、宿題が解けなかった理由をメモと照らし合わせます。 必要な知識が抜けている場合もあれば、知識は書いてあっても使い方を理解できていない場合もあります。\nメモによる理解の外部化は 「何が分からないのかも分からない」ではなく、 「具体的に何が足りないか」を講師や生徒自身に教えてくれます。\n継続的なレビューによるメモ改善サイクル 学校の教科書や授業、宿題を通してメモは更新されていきます。\nその度にメモを講師が再びレビューします。\n生徒はそのレビューをもとに、再び学校の授業や宿題に取り組み、またメモを更新します。\nこのサイクルを繰り返すことで、生徒の理解は継続的に改善されていきます。\nこの改善は理解がPCメモとして外部化・共有されているからこそ可能です。 次のオンライン対面指導を待つ必要はありません。 レビュー駆動学習は非同期ドキュメント指導 の上で実現される学習サイクルです。\n結び レビュー駆動学習が目指しているのは、理解の過程そのものを継続的に改善することです。\n一般的な塾の授業や質問対応で講師が確認しやすいのは\nテスト結果 宿題 質問 といった結果です。 それだけでは「どこで理解が止まったのか」を捉えにくい場合があります。\n一方、PCメモには\nどこを理解したのか どこを飛ばしたのか どこを自分の言葉で説明できなかったのか が残ります。\nレビューは単なる添削ではありません。 学校の教科書・授業・宿題を、PCメモを改善する機会へと変えるためのものです。\nこのサイクルを繰り返すことで、生徒は自分自身でも理解を整理し、改善できるようになります。\nレビュー駆動学習とは、講師のレビューを通して、最終的には自ら学び続けられる力を育てる仕組みなのです。\n","permalink":"https://gotoh-it-school.top/review-driven-cycle/","summary":"\u003cp\u003e本記事では「\u003ca href=\"/async-support/\"\u003e非同期ドキュメント指導\u003c/a\u003e」\nを後藤IT塾がどのように実現するのか、具体的に説明します。\u003c/p\u003e\n\u003cp\u003e非同期ドキュメント指導の核心は、質問に至らない「分からない」を発見し支援することです。\u003c/p\u003e","title":"質問前の「分からない」を支援する「レビュー駆動学習」"},{"content":"基本情報 学年: 期間: 目標:\n入塾前 学習状況 悩み 定期テスト 1ヶ月目 学習ログ レビュー回数 気づき 3ヶ月目 学習ログ 変化 保護者コメント 本人コメント まとめ ","permalink":"https://gotoh-it-school.top/example-template/","summary":"\u003ch2 id=\"基本情報\"\u003e基本情報\u003c/h2\u003e\n\u003cp\u003e学年:\n期間:\n目標:\u003c/p\u003e\n\u003ch2 id=\"入塾前\"\u003e入塾前\u003c/h2\u003e\n\u003ch3 id=\"学習状況\"\u003e学習状況\u003c/h3\u003e\n\u003ch3 id=\"悩み\"\u003e悩み\u003c/h3\u003e\n\u003ch3 id=\"定期テスト\"\u003e定期テスト\u003c/h3\u003e\n\u003ch2 id=\"1ヶ月目\"\u003e1ヶ月目\u003c/h2\u003e\n\u003ch3 id=\"学習ログ\"\u003e学習ログ\u003c/h3\u003e\n\u003ch3 id=\"レビュー回数\"\u003eレビュー回数\u003c/h3\u003e\n\u003ch3 id=\"気づき\"\u003e気づき\u003c/h3\u003e\n\u003ch2 id=\"3ヶ月目\"\u003e3ヶ月目\u003c/h2\u003e\n\u003ch3 id=\"学習ログ-1\"\u003e学習ログ\u003c/h3\u003e\n\u003ch3 id=\"変化\"\u003e変化\u003c/h3\u003e\n\u003ch2 id=\"保護者コメント\"\u003e保護者コメント\u003c/h2\u003e\n\u003ch2 id=\"本人コメント\"\u003e本人コメント\u003c/h2\u003e\n\u003ch2 id=\"まとめ\"\u003eまとめ\u003c/h2\u003e","title":"[準備中]指導実績"},{"content":"実績公開について 後藤IT塾では、今後のサービス改善や塾選びの参考情報として、学習記録や指導実績を公開する場合があります。\nただし、生徒や保護者のプライバシーに十分配慮し、以下の方針で運用します。\n掲載は本人・保護者の同意を前提とします 学習記録や指導実績は、本人および保護者の同意を得たもののみ掲載します。\n同意のない内容を公開することはありません。\n個人情報は掲載しません 氏名、学校名、住所など、個人を特定できる情報は掲載しません。\n必要に応じて学年や地域も匿名化・ぼかし表現を行います。\n成績だけでなく学習過程も重視します 後藤IT塾では、点数だけでなく学習の過程を重視しています。\nそのため、実績記事では以下のような内容を掲載する場合があります。\n学習ログの変化 メモの改善例 レビュー内容 学習習慣の変化 生徒本人の感想 保護者の感想 定期テストや模試の結果 サービス改善のために活用します 実績の記録は、塾の宣伝だけが目的ではありません。\nどのような支援が効果的だったのかを振り返り、指導方法を改善するための記録としても活用します。\nモニター制度について モニター生には、学習記録や指導実績の掲載にご協力いただく場合があります。\n掲載内容や公開範囲については事前に説明し、同意を得た上で実施します。\n","permalink":"https://gotoh-it-school.top/example-policy/","summary":"\u003ch2 id=\"実績公開について\"\u003e実績公開について\u003c/h2\u003e\n\u003cp\u003e後藤IT塾では、今後のサービス改善や塾選びの参考情報として、学習記録や指導実績を公開する場合があります。\u003c/p\u003e\n\u003cp\u003eただし、生徒や保護者のプライバシーに十分配慮し、以下の方針で運用します。\u003c/p\u003e","title":"[準備中]実績公開ポリシー"},{"content":"本記事ではIT業界の仕事の進め方を学校の勉強に応用する話をします。\nまずは従来的な塾の問題点について述べます。\n授業だけでは学習時間の大半をカバーできない 塾では先生と会う時間は週に1〜2時間程度です。 しかし、学習時間の大半は自宅で一人で勉強している時間です。 つまり、本当に支援が必要なのは授業中ではなく自習中なのです。\nさらに、塾の教室に移動する必要もあります。\n授業のような指導は人間が場所とタイミングを合わせることで実現します。 なのでこのような指導を「同期指導」と呼ぶことにします。\nIT開発では非同期で協力する 一方で、IT業界にはいつでもどこでも働ける自由なイメージがありますよね。 「非同期コミュニケーション」がこの自由さを支えています。\nプログラムや設計書などの成果物を共有して、すぐに別の仕事に取り掛かります。 また、好きなタイミングで質問をチャットして回答を待ちつつ仕事に戻ります。\nそのうち、相手からフィードバックが返ってきます。 それを切りのいいタイミングなどに仕事に反映します。\nこのように、非同期コミュニケーションは 待ち時間の空白を減らして効率的に仕事を進めることを可能にします。\nこういう効率化を学習指導に持ち込んだものが「非同期指導」です。\n非同期指導の利点 非同期指導は多くのオンライン塾で採用されています。\n例えば、\n授業中の人前の質問よりも気軽に質問できる 次の授業を待たずに疑問が湧いた瞬間に質問できる 質疑応答の記録が残って後から見返せる といった利点があります。\n特に、次の授業を待たずにフィードバックを受けられる点が大きな利点です。\n質問対応や課題では見えないもの 上記のような質問対応は生徒が「何が分からないのか」を認識し、 それを言語化できることを前提としています。\nしかし、質問ができるのなら既に半分分かっているようなものです。\n何が分からないのか どこで詰まったのか 何を質問すれば良いのか これらを言語化するためには、既にある程度整理された理解が必要だからです。\n実際に助けが必要なのは、\n何が分からないのかすら分からない 問題は解けてしまったが理解が曖昧なまま 説明を読めば分かる気がするが自分では再現できない のような状態です。\n質問対応や宿題では検知できない学習上の問題が存在するのです。\n生徒の理解を観測可能にするドキュメント学習 では、質問として上がってこない理解不足をどう観測すればよいでしょうか。\nまずは理解の状態を外に出す必要があります。 そのために有効なのが 「ドキュメント学習」 です。\nまあカッコよく「ドキュメント」と言ってますけど、 自分の言葉によってPCメモを書くことで理解を駆動する学習方法です。\n「人に教えると自分も学べる」とよく言われるのは以下のような理由があるからです。\n教えていて詰まるときに自らの理解不足を発見できる 教えるためには、自分の言葉を順序よく配列して自分の理解を整理する必要がある ドキュメント学習では、自分の理解を他人でも分かるような言葉でPCメモを書きます。 これは単なる板書ではなく、教科書を自分なりに再構成するようなメモです。 これは「自分を自分で教える」ことに相当します。\nドキュメントは理解不足を可視化する このようなメモにはその生徒の理解の状態が表れます。\nどこまで自分の言葉で説明できているのか どこで説明が止まっているのか どの部分が教科書の丸写しになっているのか どの疑問が放置されているのか こうした情報は単なる質問や宿題では分かりません。\nしかし、PCメモとして学習の過程が残っていれば、 講師は\n説明が途中で止まっている箇所 用語の理解が曖昧な箇所 丸暗記で済ませている箇所 に気付きやすくなります。\nPCメモはインターネットを通じて講師と共有できます。 そのため、授業時間外でも講師が継続的にレビューやフィードバックを行えます。 その上、宿題提出やチャット質問よりも細かい粒度で学習を支援できます。\nIT業界の言葉に置き換えると 本記事の指導法をあえてIT用語で表現すると、次のようになります。\n学習 IT開発 教科書 仕様書・ゴール定義 学習項目 タスク 疑問 Issue メモ ドキュメント 学校・授業 ミーティング もちろん、実際の指導でIT用語を持ち出す必要はありません。\n結び 授業のような同期指導は重要です。\nしかし、学習時間の大半は授業外の自習時間です。 そのため、授業だけでは学習中の疑問や詰まりを十分に拾いきれません。\n非同期指導はチャット質問やオンライン提出によって、 次の授業を待たずにフィードバックを得られる仕組みです。\nさらに、PCメモを学習ログとして活用すれば、 質問として表現される前の理解の詰まりにも気付きやすくなります。\nドキュメント学習と非同期指導を組み合わせた指導法が「非同期ドキュメント指導」です。\n当塾での具体的な運用については、 質問前の「分からない」を支援する仕組み で紹介しています。\nIT業界では、「成果物を共有しながら継続的に改善する」仕組みが発達しています。 同じように、学校の勉強でも学習内容をドキュメント化することで、授業時間に閉じない継続的な指導が可能になります。\n","permalink":"https://gotoh-it-school.top/async-support/","summary":"\u003cp\u003e本記事ではIT業界の仕事の進め方を学校の勉強に応用する話をします。\u003c/p\u003e\n\u003cp\u003eまずは従来的な塾の問題点について述べます。\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"限られた同期指導に加えてPCメモと講師レビューで日々の自習時間を支える非同期指導\" loading=\"lazy\" src=\"/async-support/async-support.svg\"\u003e\u003c/p\u003e\n\u003ch2 id=\"授業だけでは学習時間の大半をカバーできない\"\u003e授業だけでは学習時間の大半をカバーできない\u003c/h2\u003e\n\u003cp\u003e塾では先生と会う時間は週に1〜2時間程度です。\nしかし、学習時間の大半は自宅で一人で勉強している時間です。\nつまり、本当に支援が必要なのは授業中ではなく自習中なのです。\u003c/p\u003e","title":"質問前の「分からない」を支援する「非同期ドキュメント指導」"},{"content":"「ドキュメント学習」とは、 PCで理解や疑問を継続的に更新することで、 学習をプロジェクト管理可能な形へ変換する手法です。\nパソコン(PC)は情報管理に優れたツールであり仕事ではもはや必須です。\n本記事では、 学校の勉強にPCを組み込むことが 勉強をプロジェクトとして扱えるようになり、 その結果、学習フローを改良できることを説明します。\n表1. 従来の紙ベース学習とドキュメント学習の比較 項目 従来 ドキュメント学習 予習 次回内容の理解 下見による残タスク把握 復習 問題集のやり直し ドキュメント更新 疑問 忘れがち TODO管理 質問 漠然としがち 具体化される ノート 保存場所 作業場 学習管理 感覚的 進捗管理 なぜPCを使うべきなのか PCは便利ではあるけど「学校は紙で勉強する場所なのだからPCは使いづらいのでは？」と思われるかもしれません。\n書くだけなら紙のノートでもできるのになぜPCなのか。 それは紙では書いた内容を直したり配置し直すことが難しい一方、PCメモでは編集が容易だからです。\n理解とは「分解と再構成」のことです。 教科書を見たり授業を受けるだけでは情報が素通りして「分解と再構成」が起きにくいので理解するのは難しいです。\nそこで、書くことによって理解を駆動できます。 これは「教えることで学べる」に通じています。 自分の言葉で教科書を再現するようなものです。\nしかし、一回書くだけで理解するのは難しいです。 何度も自分の言葉で書き直す「再構成」を通して理解を深める必要があります。 そこで、編集しやすいPCの出番です。\nPCメモによって理解を継続的にメンテナンスする学習法が「ドキュメント学習」です。\n紙とPCは役割が異なる、使い分けるべし しかし、これは紙をPCに置き換えるべしという主張ではありません。\n紙とPCは役割が違います。 図や計算を自由に書く場合は紙が、 情報を管理し継続的に編集するためにはPCが有効です。\nただ、PCには編集能力の他にも 調べものやAIへの質問を快適にできるというメリット もあります。\n故に紙が有用であり続ける一方でPCはIT時代の中心的な仕事道具なのです。\n勉強をプロジェクトとして扱う 仕事では目標を定め、残タスクを管理しながら進めます。 勉強も本質的には同じです。\nそして幸いなことに不確実性が高い仕事とは違って、 勉強は目標や計画を立てることが容易です(勉強自体が簡単という意味ではない)。\nなぜなら、教科書に学習すべき内容が網羅されている からです。 教科書から学習すべき項目のリストを得ることができます。\n学習すべきリストは残タスクの可視化です。 ゴールのないマラソンは困難です。 残タスクを明確にすることでゴールが見えて、勉強を継続する意志が高まります。\nこれは「漠然と勉強しなければならない」から「リストを順に潰していく」への意識の転換です。 勉強をプロジェクトとして捉えるということでもあります。\nドキュメントは知識ベースであり進捗管理表でもある 勉強をプロジェクトとして扱うこと自体は紙でもできます。\n実際、ノートの余白に疑問を書いたり、 チェックボックスを書いて進捗管理したりすることは可能です。\nしかし、理解が深まって内容を書き直したくなったり、 新しい項目を追加したくなったりすると紙では管理が難しくなります。\nそこでPCメモ、つまりドキュメントの出番です。\nPCなら、\n取りこぼした項目を追加する 必要な項目を検索して参照する 未理解部分をTODOとして残す 理解が深まったら書き直せる といったことが容易です。\nこのように「ドキュメント学習」のメモは自分の言葉で継続的にまとめることで理解を深めていく場であると同時に、 学習すべきリストを管理する場としても機能します。\nPCの編集能力によって、ドキュメントは単なるメモではなくなります。\n理解したこと 分からないこと、理解したいこと これから学ぶこと 学習の進捗と達成度 それらを一箇所で管理することで勉強そのものをプロジェクトとして扱えるようになるのです。\nそしてドキュメントは\n知識ベース TODOリスト 進捗管理表 を兼ねるようになります。\n「ドキュメント学習」によって学校の見え方がどう変わるか 以上で、\n編集容易なPCメモの継続的編集によって理解(分解と再構成)を駆動する PCメモは勉強プロジェクトの管理ツールでもある と述べました。\nこれを学校の勉強に組み込むことによって学習がどう改善できるのかをお話します。\nドキュメント学習では、まず教科書から学習項目の一覧を作ります。 これは予習というよりは下見です。 下見は事前に理解することではなく、残タスクを把握することを目的に教科書を読むことです。\n下見を前提にすると、学校の授業は初めて知識を受け取る場ではなくなります。 既に把握している学習項目について、\n理解を深める 疑問を解消する ドキュメントを更新する ための材料を集める場になります。\nつまり学校は受動的な知識のインプットの場ではなく、 リストを埋めてプロジェクトを前進させるための確認の場になるのです。\nまた、質問も「分かりません」から「ここが分かりません」という具体的なものに変わります。 自分の言葉でまとめることを目指すために疑問が具体的になるからです。\nさらに、PCが知識庫であるという見方は学校のノートの使い方を変えます。 ノートは完成品を保存する場所ではなく、\n計算を試す 図を書く 思いつきを書く 先生の説明を一時的に記録する ための作業場になります。\nノートは授業の板書ではなく、 ドキュメントへ反映するための素材となります。\n結び 授業を全部デジタル化することを勧めているのではありません。\n授業や問題演習では紙を使う。 理解した内容や疑問の管理にはPCを使う。\nこのように役割を分担することで、 それぞれの長所を活かすことができます。\nドキュメント学習は学校を勉強させられる受け身な場ではなく、 自分の学習プロジェクトを進めるために利用する場になります。\n教科書で全体像を把握し、 ドキュメントで理解と疑問を管理し、 学校で理解を確認する。\n私はこの流れが、 学校を最も有効活用できる学習法だと考えています。\n","permalink":"https://gotoh-it-school.top/document-based-learning/","summary":"\u003cp\u003e「ドキュメント学習」とは、\nPCで理解や疑問を継続的に更新することで、\n学習をプロジェクト管理可能な形へ変換する手法です。\u003c/p\u003e\n\u003cp\u003eパソコン(PC)は情報管理に優れたツールであり仕事ではもはや必須です。\u003c/p\u003e","title":"勉強をプロジェクト管理する「ドキュメント学習法」"},{"content":"学校ではノートやプリントなどの紙とペンを使って勉強してきました。 なので勉強には紙を使うのが当たり前というイメージがあるかもしれません。\nしかし、本記事ではPCを学習に取り入れると捗るという話をします。\nPCは単なる勉強道具ではなく、知識や疑問を蓄積するための知識管理ツールです。 紙にはないメリットがたくさんあります。\nでは順にメリットを述べていきます。\n編集しやすい 一度で勉強内容を理解することは難しいです。 そこで、書くことが理解の助けになります。\n紙のノートは一度書いたら書き直すのは大変です。 一方、PCのメモは書き直したり、追記したり、順番を入れ替えたりが容易です。\n自分の言葉で説明できるのか書きながら確認していく。\n書くために考える。\n考えるために書く。\nこういう試行錯誤のためには紙よりも編集しやすいPCの方が便利です。\n調べ物しやすい また、PCではどこにメモしたのかキーワード検索できます。 紙ではできません。 なので、どこに書いたかを参照しづらく、紙のメモは見返しづらいです。\nまた、PCではブラウザで調べものもできます。 スマホでもできますが、画面が小さく一覧性が低いです。\nPCなら調べものとメモを簡単に切り替えつつ見比べながら勉強できます。 スマホではアプリを行き来するのはちょっと手間です。\nPCでは検索でパッとメモを参照しつつ調べものができて捗ります。\nAIと相性が良い 最近では、調べものはgoogle検索ではなくAIを使うことも多いかもしれません。\nPCのメモなら簡単にコピペしてAIに聞くことができます。 紙では写真を撮ってAIに渡す等手間がかかります。\nまた、PCならAIの回答をメモに転記するのもコピペで楽にできます。\nすると、\nメモを書く 疑問が生じる AIや先生に質問する 理解が深まる 再びメモを書く という学習の循環を作ることもできますし、 疑問を溜めて先生に聞くこともできます。\nプログラミングや情報1に活かせる 情報1では、アルゴリズムを脳内で動かして理解しようと努めることになるでしょう。\nPCがあれば、プログラムを実際に動かすことができます。\n脳内のシミュレーションと実際のプログラムの挙動を見比べたほうが理解は深まります。\nハッカーが使うような黒い画面をターミナルと言います。 そこでコードをファイルに書いて実行して結果を出力して見る、 というプロセスを是非体験していただきたいです。\n「私が書いた通りに動いた！」というPCに命令する感動を味わえると思います。\nそうすれば、情報１やプログラミングへの関心を高め、 楽しみながら勉強できるでしょう。\n大学や社会人にも繋がるPCスキル 現代の子供はデジタルネイティブ世代ですが、 スマホやタブレットに親しんでいるものの、 PCに触る機会は前よりも少なくなったと聞きます。\nしかし、大学や会社ではPCはほぼ必須です。\nなのでタイピングに慣れておくと都合が良いです。\nフリック入力に習熟していると敢えて不慣れなタイピングをしたいとは思わないかもしれません。\nしかし、やはりキーボードの方が効率的です。\n調べものやメモを通してキーボードやPCに慣れておくと将来スムーズです。\nただし紙の方が良い場面もある いろいろPCのメリットを上げてきました。\nしかし、PCにも限界があって、紙の方が優れている面もあります。\n計算過程を書きながら問題を解く 図やグラフを書く こういった主に数学と物理のような勉強では自由に書ける紙の方が便利です (PCと紙の使い分けでも解説しています)。\n結び PCは優れた知識管理ツール PCは紙を置き換えるための道具ではありません。\n計算や図を書くなら紙が向いています。\n一方で、理解した内容や疑問を整理し、 後から検索できる形で管理するにはPCが向いています。\nPCの\n編集容易さ 検索性 AI活用 プログラミング学習 PCスキル習得 といった特徴を活用することで、 理解した内容や疑問を蓄積し、 後から検索・編集・発展させることができます。\nPCは知識を育てるための優れた知識管理ツールです。\n学校では紙主体の学習だからといってPCを活用しないのは勿体ないです。 むしろ紙とPCは競合するものではなく、 役割の異なる道具です。\nとはいえ、 「学校は紙で勉強する場所なのだから、PCを持ち込む必要はないのでは？」 と思われるかもしれません。\n学校の勉強の中で紙とPCメモを併用する方法について こちら で解説しています。\n","permalink":"https://gotoh-it-school.top/pc-learning/","summary":"\u003cp\u003e学校ではノートやプリントなどの紙とペンを使って勉強してきました。\nなので勉強には紙を使うのが当たり前というイメージがあるかもしれません。\u003c/p\u003e\n\u003cp\u003eしかし、本記事ではPCを学習に取り入れると捗るという話をします。\u003c/p\u003e","title":"学校の勉強でPCを使うメリット"},{"content":"学校は平日の5-6時間を拘束します。 膨大な時間です。 これを有効活用できれば、 放課後や休日の学習負担は大きく減らせます。\nでは、どうすればこの授業時間を最大限活用できるのでしょうか。\nそのために重要なのが予習です。\nなぜ授業が無駄になるのか 日々授業を理解して、問題集でその理解を確認する。 理想的にはこれだけでテストの準備は整うはずです。\nでもそれは理想に過ぎず、現実はテスト期間になって慌てて勉強をする羽目になります。\nシンプルに内容が難しい 以前を理解してないと分からない内容 こういうことが積み重なって、 授業の消化不良が積み重なって、 その負債をテスト期間に返済するというのが一般的な流れだと思います。\n「予め学習項目を把握」するための予習・下見 では、どう対策すればよいでしょうか。\n「予習、復習、宿題をしっかりやる」 というアプローチが王道ではあるでしょう。\nこれができれば世話ないですよね。 5科目以上に対してこれを日々継続するのは大変なことです。\nそこで、「予習」にだけフォーカスすると良い、というのが本記事の主張です。\n予習とは次回の授業内容を先取りして勉強することを指すのが一般的でしょう。\nしかし、ここでいう「予習」はそれとはニュアンスが違って、 「予め学習項目を把握する」ことを指します。\n理解しなくていいです。 単に次の授業で登場する項目を把握しておくだけです。\n「予習」というよりも「下見」というほうが良いかもしれません。 以後「下見」と称します。\n「下見」で授業が穴埋め作業になる 「下見」は内容を理解せずにただ項目を把握するだけです。 そんなもの役に立つでしょうか。\nはい、「下見」は残りの勉強量の見積もりになります。 現在地とゴール(テスト範囲に含まれる項目)が分かるようになります。\nゴールが分かるとストレスが大幅に減ります。 あともう少し頑張ろうと思えるでしょう。\nさらに、授業を聞く構えができます。\n今どの位置にある項目を学んでいるのか この項目は何に繋がるのか こうしたことを意識しながら授業を受けられるようになります。\n「下見」の具体例と効用 下見の例を2つ挙げます。\nまず、歴史の下見です。\n戦国時代 安土桃山時代 江戸時代 という流れがあるらしいとだけ知っておきます。\n江戸時代は勉強と関係なく聞いたことがあって、 平和な時代というイメージを持っている人も多いでしょう。\n戦をしまくっていた時代からそんな平和に？ という疑問が生じるかもしれません。\n次に数学の下見です。\n因数分解 二次方程式の解の公式 二次関数 みたいな項目が並んでいることを知っておきます。 「二次」という共通の名前に何やら繋がりを感じますよね。 実際にどう繋がるかは分からなくても構いません。 「これは何か関係があるのだろうか」 という疑問を持った状態で授業を受けられれば十分です。\n疑問の種を蒔いておく。 この授業内容がどこと繋がるのか、という受け皿を作っておく作業が「下見」なのです。\n予習のやり過ぎは無駄が大きい 下見の目的は次の授業内容を完璧に理解することではありません。\n完全な予習をすると授業が既に知ってる内容ばかりになってしまいます。 授業が無駄な時間になる率が高まります。 それは勿体ない。\n疑問を持ちやすい状態で授業に臨めると授業や先生を有効活用できます。 下見はその状態を作りやすくするための準備です。\n結び 学校は平日の大半を占める活動です。\nこの時間を有効活用できるかどうかで、 学習効率は大きく変わります。\nまずは次の授業範囲を数分眺めるだけでも構いません。\n「何を学ぶのか」 「どこに向かっているのか」\nを意識した状態で授業を受けるだけで、 授業から得られるものは大きく変わるはずです。\n","permalink":"https://gotoh-it-school.top/school-for-confirmation/","summary":"\u003cp\u003e学校は平日の5-6時間を拘束します。\n膨大な時間です。\nこれを有効活用できれば、\n放課後や休日の学習負担は大きく減らせます。\u003c/p\u003e\n\u003cp\u003eでは、どうすればこの授業時間を最大限活用できるのでしょうか。\u003c/p\u003e","title":"[予習論]学校を理解の確認の場として活用しよう"},{"content":"教科書をしっかりと読んだことはありますか？\n私はほとんどありませんでした。 学習量がどれだけ必要なのか分からずに漫然と宿題を解いているだけでした。\n本記事では、教科書で勉強量を把握してゴールを確認するべきだという話をします。\n教科書の圧倒的な信頼性と網羅性 教科書は文部科学省の厳しい「教科書検定」をクリアして作られています。\n学校の授業も、 定期テストも、 入試も、\n基本的には教科書の内容を土台にしています。\nもちろん教科書を読んだだけで問題が解けるわけではありません。\nしかし、 何を学ぶべきかを知るという意味では、 教科書ほど信頼できる資料はありません。\nゴールを意識すると楽 つまり教科書は信頼できる地図であり、 学習範囲を教えてくれます。\nゴールが見えないまま走るのは大変です。\n私が使っていた数学Iの教科書は170ページ程度でした。 学ぶべき分量はたったこれだけです。\nこれを学ぶのに1年もかけて良いと考えたら行けそうな気がしませんか？\n学習量だけを把握してゴールを具体的にイメージ もちろん理解するのは簡単ではありません。\n分からなくても構いません。\nまずはページをめくってみてください。\n知らない単語や新しい概念がいくつあるかを見るだけでも、 学習量を見積もることができます。\n私の数学Iの教科書をざっくり数えてみると70-80個くらいの概念や用語が登場していました。\n公式だけなら30個程度でした。 公式の証明を何も見ずにできるようになれれば、 内容はかなり理解できていると言って良いでしょう。\n月に2,3個やれば終わる分量です。\n行けそうな気がしてきませんか？(2回目)\n授業時間や課題があるせいでゴールが遠く感じる しかし、教科は数学だけではありません。 中学生なら5教科、 高校生ならさらに理科や社会の選択科目もあります。\n平日で5-6時間の授業、 課題のテキストや日々の宿題もあります。 さらに塾で宿題を課されている人もいるでしょう。 本屋に行けば無数の問題集もあります。\n膨大な学習量に感じられるかもしれません。\nしかし、学習内容は教科書で網羅されています。 これだけ理解すればいいんだ、という範囲をまず把握すると 日々前向きに学習できるようになります。\n結び 勉強が苦しい理由の一つは、 ゴールが見えないことです。\n教科書はそれを見せてくれる地図です。\n完璧に理解しようとしなくて構わないので、 まずは教科書を開いてどんな概念が出てくるのかを眺めてみてください。\n教科書で勉強量を把握してゴールを具体的にイメージすると、 勉強に対する不安は小さくなるはずです。\nしかもこれは理解の第一歩の「分解」にあたる作業です。 理解を「分解と再構成」という観点から捉える考えについては、 こちらで解説しています。\n","permalink":"https://gotoh-it-school.top/textbook-shows-the-goal/","summary":"\u003cp\u003e教科書をしっかりと読んだことはありますか？\u003c/p\u003e\n\u003cp\u003e私はほとんどありませんでした。\n学習量がどれだけ必要なのか分からずに漫然と宿題を解いているだけでした。\u003c/p\u003e\n\u003cp\u003e本記事では、教科書で勉強量を把握してゴールを確認するべきだという話をします。\u003c/p\u003e","title":"教科書を読むと勉強のゴールが見えて楽になれる"},{"content":"勉強のお供には何をイメージするでしょうか。 普通は、紙とペンだと思います。\nしかし、紙とは異なる強みを持つ道具もあります。\n本記事では、紙とPCメモの使い分けによる効果的な勉強方法について解説します。\n紙による勉強の特徴 紙は自由に書けます。 図を書いたり、列を分けて書いたり、矢印を引いたり、数式も簡単にかけるし、独自の記号だって掛けます。\nその自由さの代償として後から整理がしづらいです。\n紙に書いたものを移動するためには消して書き写す必要があります。 追記したり、順番を入れ替えるのは大変です。\nまた、検索もできません。 なので、紙に書いた内容を復習するのはちょっと不便です。\nつまり、紙の特徴は\n自由な記述 編集困難 検索できない とまとめられます。\nPCメモによる勉強の特徴 一方、PCメモ(テキストファイル)の特徴は紙と逆です。\n1行ずつという枠が決まっていて自由に書くことができません。\nしかし、文字の修正や移動、追記は簡単にできます。\n不要な部分を削除するのも一瞬です。 紙では削除したままではスペースが空いてしまいますが、 PCメモでは詰めることも容易です。\nさらにキーワードで検索もできます。\nつまり、PCメモの特徴は\n不自由な記述 編集簡単 検索できる となります。\nでは、紙とPCメモの違いは勉強にどう影響するのでしょうか。\n紙が向いている勉強 数学や物理のような勉強では、 絵を書いて問題を把握したり、 計算をガシガシ書いたり、 自由に記述できないと難しい場面があります。\nいわば、使い捨てで自由に書いていきたい場合はPCメモより紙の方が向いています。\nPCメモが向いている勉強 一方で、知識の整理はPCメモの方が向いています。\n教科書や授業で学んだ内容をまとめる 重要事項を整理する 概念同士の関係を書き直す こうした作業では、編集や検索が容易なPCメモの強みが活きます。\n理解を深めるためには、 自分の言葉で説明を書き直すことが有効です (詳しくは 実践編 )。\n説明を書き直し、 構造を整理し、 何度も改善することで理解を深めることができます。\nこのような用途では紙よりもPCメモの方が便利です。\n結び 勉強といえば紙とペン。 そう思われがちではないでしょうか。\nしかし、紙だけが勉強の道具ではありません。\n紙とPCは競合する道具ではないということです。 用途によって使い分けることができます。\n知識を整理するという用途ではPCメモが優れています。\n私は 10年間の試行錯誤 の結果、 PCメモを使うようになりました。\nもし知識整理に悩んでいるなら、 PCメモも試してみる価値があると思います。\n具体的なメモの取り方については、 成績が伸びる知識整理術 ノウハウ編 で詳しく解説しています。\n","permalink":"https://gotoh-it-school.top/paper-or-pc/","summary":"\u003cp\u003e勉強のお供には何をイメージするでしょうか。\n普通は、紙とペンだと思います。\u003c/p\u003e\n\u003cp\u003eしかし、紙とは異なる強みを持つ道具もあります。\u003c/p\u003e\n\u003cp\u003e本記事では、紙とPCメモの使い分けによる効果的な勉強方法について解説します。\u003c/p\u003e","title":"勉強で紙とパソコンをどう使い分けるか"},{"content":"理論編 や 実践編では、\n理解とは分解と再構成である 自分の言葉でメモしなければならない そのまま書き写すな といった話をしました。\nしかし、偉そうに指摘した過ちは私の経験でもあります。\n私は10年以上にわたり、 「本を読めば頭が良くなる」 という幻想を信じて頑張って多くの本を乱読しました。\nそれでも、いざ何かを書こうとすると何も出てこないという苦い経験をしました。\nそれでも読書を続けて辿り着いたのが「理解は分解と再構成である」というアイデアでした。\n本記事では、そのアイデアに至るまでの私の失敗の歴史をまとめます。\n勉強のアンチパターンとして参考になれば幸いです。\n急に読書を始めた大学時代 なぜ受験勉強なんかしなければならないのか分からず高校時代は苦しい時期を過ごしました。\n大学に進学して単位を取るための勉強するのも高校時代の延長に感じられてモチベーションが出ませんでした。\nかと言って勉強から逃げるのも違うと思いました。 知識を身につけることが重要だとは感じていたからです。\n本物の勉強をして教養を身に着ける。 これがあの苦しみの供養であり、 かつ人生を切り開く道になるに違いない。\nそう思い直し、野心から急に読書をするようになりました。 大学の図書館やブックオフに足繁く通うようになりました。 それまでは全く本を読んでいませんでした。\n大学数学で知識の依存関係の重要性を知る 私は工学部でした。 大学の授業で出てくる話の本質的で根本的なところに興味が湧きました。\nそれは大学数学だろうということで、教程そっちのけで大学数学の勉強を始めました。\n完全に力点を履き違えていますね笑。 でも、これこそが本当の教養になるんだと息巻いていました。\nしかし、大学数学は高校数学とはかなり趣が違っていて、 定義、定理、証明が羅列されていて全体像も分かりませんでした。\nここで、知識の依存関係を把握することが大事だということを朧げに感じました。 でも当時はまだこの「知識同士の繋がり」を読書に応用する発想はありませんでした。\n私は相変わらず、 本をたくさん読めば頭が良くなると信じていました。\n全然アウトプットに繋がらない無駄な読書 そんなこんなで社会人になりました。 読書は変わらず続けていました。\nそんな中、ブログブームが到来した。\nお、読書の成果を発揮できる良い機会だ。 今までの読んで得たウンチク、読書の成果が発揮できるぜ。 そう思ってブログを始めました。\nでも、 印象に残ったいくつかの読書内容や直前に読んだ本の雑な要約を書くことに終始しました。\n読んだ本の話はいくらでもできると思っていました。\nところが、 いざ記事を書こうとすると何も出てきません。\nどの本に何が書いてあったかも曖昧。 知識同士も繋がっていない。\n私は初めて、 「知っているつもり」と 「説明できる」は全く別物だと知りました。\nこれはブログを書いてアウトプットしようとしたことではじめて発覚しました。\n本を読み続けていれば直に博覧強記になれると思っていた。 でも実態は乱読という名の思考停止。 今日も一冊積み上げたという勘違い・自己満足。\n相当なショックでした。\n何となく勉強していれば成績が伸びるというのを信じることに似ていますね。\n読書メモ開始 ブログでの失敗は書くことが理解のフィードバックになるという強烈な体験でした。\n溜まってるはずネタが取り出せない メモがあればネタを思い出せるはず 読書をメモにすらまとめられずにブログなんて書けるはずがない そう思い直し、読書メモを始めました。 A4のコピー用紙にメモしながら読むスタイルに変わりました。\n2-3年経ってメモが溜まってきました。 読書メモの効果がなかったと手書きメモの限界 でも、ブログを書きやすくなった感じがありませんでした。 こんなにメモ取ったのに。\nまずメモがかさ張っていて読み直してネタを探すのが大変 紙への手書きは書き直すのが大変 書き直すと紙が汚れてしまう などの問題がありました。 なので、デジタルペーパーへ移行して読書メモを続けました。\nこれでメモが嵩張るのを防げるし、書き直しやすくなりました。\nでも、ネタ探しの大変さは悪化しました。 紙のメモならパラパラと手軽に見返せるし、並べて一覧できる一方、 デジタルペーパーではPDFを開いて中身を確認しないといけません。\nしかも、いずれもある単語の検索が難しいです。手書き文字だからです。 だから、ブログ執筆でネタを保管するためにメモを見返すのが大変なままでした。\nデジタルペーパーでも以前として、 重要であると思われる記述だと思ったところをある程度口語的に言い換えたりするものの その記述ブロックをほとんどそのままメモする感じが続いていました。\nこれは実践編でNGと指摘したメモのやり方そのものです。 本の劣化版コピーをメモするのに終始していたわけです。\nそうして検索性が悪く見返しもしない、噛み砕きが足りないメモの山ができました。\nまぁ、メモなしの乱読に比べて、メモする意識で読むのは知識の定着が少し向上した感じはありました。 でも、依然としてブログ執筆の補助としてメモには不満が残りました。\n「分解と再構成」への出会いとメモ方法への反省 そうして、メモしてもなお読書の効果があまり感じられず読書のモチベが下がっていきました。 たまに思い出した時に本を読むような頻度が減っていきました。\nそんな中、「分解と再構成」 について書かれていた本に出会い、衝撃を受けました。\n昔から、 学校が授業ノートの提出を求めるのが嫌いでした。\n板書なんて教科書の劣化版コピーじゃないか。\nそう思っていました。\nところが振り返ると、 私の読書メモも同じことをしていました。\n本の重要そうな箇所を抜き出して、 少し言い換えているだけ。\n私は理解していたのではなく、 写経していただけだったのです。\n手書きメモからテキストファイルへの移行 では、写経ではなく「分解と再構成」を実現するためにどうメモすればよいか。\n私はここで初めて、 理解とは一度で完成するものではないと気付きました。\n本を読みながらメモして理解したつもりになっていても、 後から読み返すと説明が不十分だったり、 概念同士の関係を見落としていたりします。\nつまり、 理解とは何度も書き直しながら育てていくものだったのです。\nところが、 手書きメモはその「書き直し」が苦手でした。\n何を書くのか考えて、それを一気に書き下す感が手書き文字にはある気がします。 少なくとも、何度も書き直すのには労力します。 配置を変えられないし、後から追記もしにくい。 だから重要だと思った箇所に飛びついて書きっぱなしになりがちです。\n一方、テキストファイルなら\n並べ変える 何度も書き直す 大胆に配置し直す 検索する のが容易です。\n私は理解のためのメモではなく、 記録のためのメモを書いてしまっていたのです。\nテキストファイルなら話は別です。 重要な箇所に飛びついてメモするのはただの仮書き適度の感覚になります。 まず気軽に書き出して、それを配置し直したり書き直したりして理解を深めていくことができます。\n私はここで初めて、 メモとは保存するものではなく、 編集し続けるものだと考えるようになりました。\nテキストファイルは理解を継続的に改善する こうして手書きからテキストファイルへ移行しました。 しかし、依然としてキレイに再構成されたメモを書くのは容易ではありません。 私は未だに最近書いたメモでも改善点をいくらでも見つけることができます。\nでも、これは悪いことではありません。 テキストファイルは\n検索可能で見返す機会が多い 文字も見やすく1行ずつ整列しており、手書きに比べて読みやすい ので、改善点を見つけるチャンスが多いです。\n手書きメモであれば見返すこと自体少なく、 その上、書き直しも大変です。\nつまり、手書きメモは一度書かれたらそのまま放置されやすい「死んだデータ」なのです。\n一方、テキストファイルは容易に書き直すことができます。\n私はテキストファイルは「メモのソフトウェア化」だと考えています。\nメモは保存して終わりではありません。\n自分の言葉で書き、 見返し、 改善し続ける。\nそうして理解を育てていくための基盤なのです。\n結び 私は10年以上、 本を読めば頭が良くなると思っていました。\nそうでなかったことがブログでのアウトプットで発覚し、 メモを書き始めてもなかなかうまくいかない日々を過ごしてきました。\n乱読。 紙の読書メモ。 デジタルペーパー。\n多くの失敗を経て、 テキストファイルによる知識整理に辿り着きました。\nでは実際に、 私はどのように知識を分解し、 再構成しているのか。\n現在使っている具体的なメモの書式については、 ノウハウ編 で解説しています。\n","permalink":"https://gotoh-it-school.top/reading-was-not-enough/","summary":"\u003cp\u003e\u003ca href=\"/learn-theory/\"\u003e理論編\u003c/a\u003e\nや\n\u003ca href=\"/core-policy/\"\u003e実践編\u003c/a\u003eでは、\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e理解とは分解と再構成である\u003c/li\u003e\n\u003cli\u003e自分の言葉でメモしなければならない\u003c/li\u003e\n\u003cli\u003eそのまま書き写すな\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eといった話をしました。\u003c/p\u003e\n\u003cp\u003eしかし、偉そうに指摘した過ちは私の経験でもあります。\u003c/p\u003e","title":"[読書10年の失敗史]なぜ読書しても頭がよくならなかったのか"},{"content":"勉強中に、\n「分かりません」\nと質問する子がいます。\nもちろん質問すること自体は悪いことではありません。\nしかし、 成績が伸びる子は少し違う質問をしています。\nこの差はどこから生まれるのでしょうか。\n質問することは大切 分からないことを放置するのはよくありません。\n先生に質問したり、 教科書を確認したり、 調べたりすることは重要です。\nしかし、 ただ「分かりません」と言うだけでは、 なかなか理解は進みません。\n「分からない」の正体が見えていない たとえば数学の問題で手が止まったとします。\n問題文の意味が分からないのか 公式を忘れたのか 計算で詰まったのか 解法の方針が分からないのか それすら分からないことがあります。\nつまり、 何が分からないのかを分解できていない状態です。\n理解が進むと疑問が具体的になる 一方で理解が進んでくると、 疑問はもっと具体的になります。\nたとえば、\nここまでは分かるが次の式変形が分からない この公式を使う理由が分からない この用語の意味だけが曖昧 というようになります。\nどこで止まったのかが見えているのです。\nこれは理解不足ではなく、 むしろ理解が進んでいる証拠です。\n成績が伸びる質問とは 成績が伸びる子は、\nどこまで分かっているのか どこから分からなくなったのか 何を確認すれば解決できそうか を考えています。\nだから質問も具体的になります。\n具体的な質問ができるようになると、 先生に聞くだけでなく、 教科書や参考書を見て自力で解決できる場面も増えていきます。\n自走力はここから生まれる 勉強ができる子は、 最初から何でも分かるわけではありません。\n分からないことを細かく分解し、 自分で解決できる形にしています。\n漠然と「分からない」状態から、\n「ここまでは分かるが、この部分が分からない」\nと言える状態へ変わる。\nこの変化が自走力の第一歩です。\nまとめ 「分かりません」としか言えない状態は、 何が分からないのかを整理できていない状態です。\n大切なのは、 分からないことを細かく分解することです。\nそうすることで、 具体的な質問ができるようになり、 やがて自力で解決できることも増えていきます。\nなぜその作業が理解を深めるのかについては、 以下の記事で詳しく解説しています。\n→ 理解の型\n","permalink":"https://gotoh-it-school.top/cannot-ask-questions/","summary":"\u003cp\u003e勉強中に、\u003c/p\u003e\n\u003cp\u003e「分かりません」\u003c/p\u003e\n\u003cp\u003eと質問する子がいます。\u003c/p\u003e\n\u003cp\u003eもちろん質問すること自体は悪いことではありません。\u003c/p\u003e\n\u003cp\u003eしかし、\n成績が伸びる子は少し違う質問をしています。\u003c/p\u003e\n\u003cp\u003eこの差はどこから生まれるのでしょうか。\u003c/p\u003e","title":"「分かりません」としか言えない子が伸び悩む理由"},{"content":"「ノートはちゃんと取っているのに覚えられない」\nこれは意外とよくある悩みです。\n授業中に板書を写し、 マーカーを引き、 きれいに整理している。\nそれなのにテストになると解けない。\nなぜこんなことが起きるのでしょうか。\nノートを取るだけでは成績は上がらない もちろんノートを取ること自体は悪いことではありません。\nしかし、 ノートを取れば成績が上がるわけでもありません。\n問題は、 ノートを書いている最中に理解が深まっているかどうかです。\n板書を書き写しても理解にはならない 授業中は忙しいので、 黒板を写すだけで精一杯になることがあります。\nしかし、\n何が重要なのか なぜそうなるのか どことどこが繋がっているのか を考えなければ、 知識は頭に残りません。\nノートの役割は理解を整理すること 理解とは、\n何が重要なのかを見つける 知識同士を関連づける 自分の言葉で説明できる状態にする ことです。\nだからノートは、 板書を保存するためのものではありません。\n自分の理解を整理するための道具です。\n先生の言葉や教科書の文章を、 自分なりの言葉で言い換える。\nこの過程ではじめて理解が形成されます。\n成績が伸びるノートの使い方 ノートで大切なのは、 きれいさではありません。\n重要なのは、\n自分の言葉で書かれているか 理解できていない部分が見えるか 後から見返して考え直せるか です。\nノートは提出するための作品ではありません。\n理解を深めるための道具です。\nまとめ ノートを真面目に取っているのに覚えられない原因は、 ノート作りが目的になっているからです。\n板書を書き写すだけでは理解は形成されません。\n自分の言葉で整理し、 知識同士を関連づける。\nそこではじめてノートが勉強になります。\n自分の言葉で理解を整理する方法については、 以下の記事で詳しく解説しています。\n→ 理解の型\n","permalink":"https://gotoh-it-school.top/why-note-taking-doesnt-improve-memory/","summary":"\u003cp\u003e「ノートはちゃんと取っているのに覚えられない」\u003c/p\u003e\n\u003cp\u003eこれは意外とよくある悩みです。\u003c/p\u003e\n\u003cp\u003e授業中に板書を写し、\nマーカーを引き、\nきれいに整理している。\u003c/p\u003e\n\u003cp\u003eそれなのにテストになると解けない。\u003c/p\u003e","title":"ノートを真面目に取っているのに覚えられない理由"},{"content":"「宿題は毎日やっているのに成績が上がらない」\nこれは多くの生徒や保護者が抱える悩みです。\n学校の宿題も提出している。 塾の課題もやっている。\nそれなのにテストの点数は思うように伸びない。\nなぜこんなことが起きるのでしょうか。\n宿題は大切だが、それだけでは足りない もちろん宿題は重要です。\n宿題は授業内容の確認であり、 問題を解く練習でもあります。\n勉強時間が長い方が成績は伸びやすいでしょう。\nしかし、宿題をこなせば必ず成績が上がるわけではありません。\n問題は、 宿題をしている最中に理解が深まっているかどうかです。\n宿題が「作業」になっている 宿題は本来、 理解を確認するためのものです。\nところが、\nとりあえず空欄を埋める 丸付けだけして終わる 解説を読んで分かった気になる 分からない問題は答えを写す という状態になっていることがあります。\nこれでは理解は深まりません。\n提出物は完成しますが、 頭の中の知識はほとんど変化していません。\n宿題と教科書を往復することが大事 宿題は自分が何を理解できていて、 何を理解できていないのかを発見するための道具です。\n大切なのは、 宿題で分からない問題に出会ったときに立ち止まることです。\nどの知識を使えばよいのか なぜその解き方になるのか どこから分からなくなったのか を考える。\nそして教科書へ戻る。\n教科書を理解した上で宿題を解く。 あるいは、宿題で分からない箇所に出会ったら教科書へ戻る。\nこの往復によって理解が形成されます。\n成績が伸びる子は宿題を理解の確認に使う 宿題で本当に確認すべきなのは、 答えが合ったかどうかだけではありません。\nなぜ解けたのか なぜ間違えたのか 次に同じ問題が出ても解けるのか です。\nここを考えない限り、 宿題は単なる作業で終わります。\n逆に言えば、 宿題は理解の穴を発見するための優れた道具でもあります。\nまとめ 宿題をやっているのに成績が上がらない原因は、 宿題が理解の確認ではなく作業になっているからです。\n大切なのは、 宿題で分からないことを発見し、 教科書へ戻り、 自分の頭で理解を組み立て直すことです。\n自分の言葉で理解を整理する方法については、 以下の記事で詳しく解説しています。\n→ 理解の型\n","permalink":"https://gotoh-it-school.top/homework-no-results/","summary":"\u003cp\u003e「宿題は毎日やっているのに成績が上がらない」\u003c/p\u003e\n\u003cp\u003eこれは多くの生徒や保護者が抱える悩みです。\u003c/p\u003e\n\u003cp\u003e学校の宿題も提出している。\n塾の課題もやっている。\u003c/p\u003e\n\u003cp\u003eそれなのにテストの点数は思うように伸びない。\u003c/p\u003e","title":"宿題をやっているのに成績が上がらない理由"},{"content":"「塾に通わせているのに成績が上がらない」\n保護者にとって非常に不安な状況です。\n授業も受けている。 宿題も出ている。\nそれなのに成績が伸びない。 ガッカリしますよね。\n塾や授業は大切 もちろん塾には大きな価値があります。\n学校より詳しい解説を聞けたり、 質問ができたり、 勉強する習慣を作ったりできます。\n分かりやすい授業を受けることは、 理解への大きな助けになります。\nしかし、それだけで成績が上がるとは限りません。\n良い授業を受けても理解できるとは限らない 塾で先生が説明している内容は、 すでによく整理された知識です。\n授業を聞いていると、\n「なるほど」 「分かった気がする」\nと思うことがあります。\nしかし、家に帰って問題を解こうとすると手が止まる。\nこういう経験は珍しくありません。\n理解は本人にしかできない どれだけ分かりやすい授業でも、 理解そのものを先生が代わりに行うことはできません。\n何が重要なのか なぜそうなるのか どの知識と繋がっているのか を整理する作業は、 本人の頭の中でしか行えません。\n授業を見るだけでは、 この過程が十分に起きないことがあります。\n成績が伸びる授業の受け方 成績が伸びる子は、 授業を受けた後に自分で内容を整理しています。\n自分の言葉で説明してみる 分からない部分を探す 知識同士の繋がりを考える こうした作業を通して、 授業の内容を自分の理解へ変えていきます。\n一方で、 授業を受けること自体が目的になると、 勉強は受け身になってしまいます。\nまとめ 塾は重要です。\n良い授業も大きな助けになります。\nしかし、 授業を受けるだけで成績が上がるわけではありません。\n本当に大切なのは、 授業で得た知識を自分の頭の中で整理し直すことです。\n成績が伸びるかどうかの差は、 この過程が起きているかどうかにあります。\nなぜ同じ授業を受けても理解度に差が生まれるのか。\nその理由を「理解の構造」から解説したのが以下の記事です。\n→ 理解の正体\n","permalink":"https://gotoh-it-school.top/juku-not-improving/","summary":"\u003cp\u003e「塾に通わせているのに成績が上がらない」\u003c/p\u003e\n\u003cp\u003e保護者にとって非常に不安な状況です。\u003c/p\u003e\n\u003cp\u003e授業も受けている。\n宿題も出ている。\u003c/p\u003e\n\u003cp\u003eそれなのに成績が伸びない。\nガッカリしますよね。\u003c/p\u003e","title":"塾に通っているのに成績が伸びない理由"},{"content":"「勉強時間は増えているのに成績が上がらない」\nこれは多くの生徒や保護者が抱える悩みです。\n実際、\n毎日机に向かっている 宿題も提出している 塾にも通っている それなのに思うように成績が上がらない。\n一方で、同じくらいの勉強時間でも成績が伸びる子もいます。\nこの差はどこから生まれるのでしょうか。\n勉強時間は必要だが、それだけでは足りない もちろん勉強時間は重要です。\nしかし、勉強時間を増やしてもそれが成績に繋がらない場合があります。\n問題は「どれだけ勉強したか」だけでなく、理解が深まっているかどうかです。\n勉強が「作業」になっている たとえば数学の問題集を解くとします。\n答え合わせをして、 解説を読んで、 「なるほど」と思って次の問題へ進む。\nこのとき、\nなぜその解法になるのか 自分はどこで間違えたのか 次に似た問題が出ても解けるのか を考えなければ、 知識は定着しません。\n理解しなければ成績は上がらない 新しい知識を学ぶとき、\n何が重要なのか なぜそうなるのか どの知識と繋がっているのか を考える必要があります。\nただ情報を眺めるだけではなく、自分の頭の中で整理し直さなければなりません。\n同じ1時間でも、\n受け身で問題を解く1時間と 自分の言葉で整理しながら学ぶ1時間では 得られるものが大きく違います。\n成績が伸びる勉強とは 成績が伸びる子は、 勉強時間の多さだけを気にしていません。\n分からない問題に出会ったら立ち止まり、\nなぜ分からないのか どの知識が不足しているのか 教科書のどこを確認すべきか を考えています。\n勉強時間の中で理解を深める作業が起きているのです。\nまとめ 勉強が作業になっていないか。\n自分の頭で理解を組み立て直せているか。\nそこに成績が伸びるかどうかの分かれ道があります。\nなぜ同じ勉強をしても理解度に差が生まれるのか。\nその理由を「理解の構造」から解説したのが以下の記事です。\n→ 理解の正体\n","permalink":"https://gotoh-it-school.top/why-study-time-doesnt-improve/","summary":"\u003cp\u003e「勉強時間は増えているのに成績が上がらない」\u003c/p\u003e\n\u003cp\u003eこれは多くの生徒や保護者が抱える悩みです。\u003c/p\u003e\n\u003cp\u003e実際、\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e毎日机に向かっている\u003c/li\u003e\n\u003cli\u003e宿題も提出している\u003c/li\u003e\n\u003cli\u003e塾にも通っている\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eそれなのに思うように成績が上がらない。\u003c/p\u003e","title":"なぜ勉強時間を増やしても成績が上がらないのか？"},{"content":"後藤IT塾では、正式な募集を始める前に、最初のモニター生3名を募集します。\n後藤IT塾はITの知見を応用した新しいコンセプトの塾です。 運用については、実際の指導を通して確かめ、改善する必要があると考えています。 生徒本人と保護者様から率直な感想を伺い、今後の指導方法や運営の改善に役立てます。\n募集条件 項目 内容 募集人数 3名 モニター料金 月額10,000円（税込） モニター期間 3ヶ月 振り返り 初回面談から1ヶ月ごとにヒアリングを実施 入会金・教材費・PC貸与料 0円 モニター期間終了後、希望される場合は通常料金の月額20,000円（税込）で継続できます。 継続は必須ではありません。\nモニター期間中に月謝をお支払いいただいた3ヶ月も、 貸与PCの譲渡に必要な12ヶ月へ含めます。\nモニター期間中も、学習用ノートPCを無償で貸与します。 貸与中の管理や譲渡の条件については、 「ノートPC貸与および譲渡に関する合意書」をご確認ください。\n募集する生徒 中学1年生から高校2年生までの生徒を対象とします。 鈴鹿市・四日市市とその周辺にお住まいで、貸与PCをインターネットへ接続できる環境が必要です。\n特に、次のような生徒を想定しています。\n他の塾で成績が伸びなかった 授業も宿題も真面目に取り組んでいるのに成績が伸びない 家で勉強が手につかない 何が分からないのかも分からず、うまく質問できない こういった問題を改善するための仕組みが「レビュー駆動学習」です。 授業を受け、宿題を解くだけで終わる指導とは異なります。 生徒本人が、分かったことや分からないことをPCメモへ書き、講師のレビューを受けながら改善していきます。 PCメモには、まだ質問にできない段階の「分からない」も表れます。 PCメモを手がかりに、質問対応だけでは見えにくい理解の詰まりを見つけ、支援につなげます。\n最初からうまく書ける必要はありません。 PC操作や文章を書くことに慣れていない場合も、 「オンボーディング」で講師と一緒に練習します。\nモニター期間中の指導 通常の指導と同様の指導を実施します。\n週1回・40分の一対一の主指導 週1回・20分の一対一の中間確認 PCメモへの継続的なレビュー チャットによる質問・相談 週2回のオンライン自習室 学習用ノートPCの無償貸与 初回面談とオンボーディング 学校の教科書、問題集、宿題を中心に扱い、 数学・物理・理科・情報を中心に指導します。\n実施する曜日と時間は「指導日と時間割」をご確認ください。\nモニター生にお願いしたいこと モニター期間中は、初回面談から1ヶ月ごとに振り返りの時間を設け、 生徒本人と保護者様に、指導を受けて感じたことを伺います。 実施日時は、ご家庭の予定に合わせて調整します。\nヒアリングに先立ち、 「保護者への学習状況の共有」に沿って、 1ヶ月の学習状況をチャットでお送りします。 その報告も見ながら、指導の変化や続けにくかった点を一緒に振り返ります。\n初回面談から3ヶ月後の最後のヒアリングは、可能であれば対面で行います。 通常の受講を継続しない場合は、その際に貸与PCをご返却ください。 対面での返却が難しい場合は、 モニター期間の終了日から1ヶ月以内に郵送で返却することもできます。 郵送による返却の送料は、ご家庭でご負担いただきます。\n例えば、次のような点です。\nPCメモを書くことで、学校の宿題や復習に変化があったか 講師のレビューは理解や次の行動に役立ったか 一週間の指導回数や時間に無理がなかったか PCやオンライン指導で困ったことはなかったか 続けにくかった取り組みや、分かりにくかった説明はなかったか よかった点だけでなく、 面倒だったこと、続かなかったこと、役に立たなかったことも率直にお聞かせください。 そのような意見も含めて、今後の指導を改善するための大切な情報だと考えています。\n学習記録や感想を、個人が特定されない形でWebサイトなどに掲載させていただく場合があります。 掲載する内容と範囲は事前にお見せし、保護者様と生徒本人の同意を得た場合に限って使用します。\n指導開始までの流れ お問い合わせフォームからご連絡ください 保護者様と生徒本人を交えて初回面談を行います 現在の学習状況、学校教材、生活リズム、PC環境を確認します 指導方法とモニター条件をご説明します 内容に納得いただけた場合に、貸与PCをお渡ししてオンボーディングを始めます お問い合わせをした時点で、入塾を決める必要はありません。 初回面談で現在の状況を伺い、 後藤IT塾の指導が合いそうかを一緒に確認します。\nお問い合わせ お問い合わせフォームはこちら\n","permalink":"https://gotoh-it-school.top/monitor/","summary":"\u003cp\u003e後藤IT塾では、正式な募集を始める前に、最初のモニター生3名を募集します。\u003c/p\u003e\n\u003cp\u003e後藤IT塾はITの知見を応用した新しいコンセプトの塾です。\n運用については、実際の指導を通して確かめ、改善する必要があると考えています。\n生徒本人と保護者様から率直な感想を伺い、今後の指導方法や運営の改善に役立てます。\u003c/p\u003e","title":"モニター生募集"},{"content":"通常の受講で後藤IT塾へお支払いいただく費用は、月額20,000円（税込）のみです。\n項目 料金 月額料金 20,000円（税込） 入会金 0円 初回面談・オンボーディング 月額料金に含む 指定教材費 0円 システム利用料 0円 PC貸与料 0円 季節講習費 なし 対象学年・受講環境 新規募集の対象は、中学一年生から高校2年生までです。 高校3年生の受験直前期から始める、短期的な受験対策は行っていません。\n鈴鹿市・四日市市とその周辺の生徒を対象とします。\nオンライン指導とPCメモの共有には、 貸与PCをインターネットへ接続できる環境（Wi-Fiなど）が必要です。 通信回線と通信料金は、各ご家庭でご用意・ご負担いただきます。\n対応科目 数学・物理・理科・情報を中心に指導します。 他教科のPCメモへの整理や宿題の振り返りを支援できます。\n月額料金に含まれるもの 週1回・40分の一対一の主指導 週1回・20分の一対一の中間確認 PCメモへの継続的なレビュー チャットによる質問・相談 週2回のオンライン自習室 学習用ノートPCの無償貸与 初回面談とオンボーディング 保護者への月1回の学習状況報告 システム利用料 入会金、事務手数料、指定教材の購入費はありません。 学校の教科書や問題集、宿題を中心に活用します。\n詳しい指導内容は「一週間の学習の流れ」、 実施する曜日と時間は「指導日と時間割」をご覧ください。\n指導の質を保つため、定員は10名までとします。\n学習用ノートPCの無償貸与 レビュー駆動学習では、 生徒が自分の言葉で理解をPCメモへ整理し、 講師がその内容を継続的にレビューします。\nそのために必要な環境を整えたノートPCを無償で貸与します。\n項目 内容 状態 中古ノートPC メモリ 8GB以上 OS Ubuntu 初期設定 学習に必要な設定を済ませて貸与 貸与料 0円 譲渡 月謝12ヶ月分の支払い後に無償譲渡 通常使用による故障は、当塾の負担で修理または交換します。 落下、水濡れ、紛失などの場合は、 修理費用または同等品の時価相当額をご負担いただくことがあります。\nPCの貸与・譲渡条件を見る\nPCを入塾前に新しく購入する必要はありません。\n貸与PCの譲渡 月謝を12ヶ月分お支払いいただいた後、貸与しているノートPCをそのまま無償で譲渡します。\nPCには、生徒が教科書、学校の授業、宿題から得た理解を自分の言葉で整理したメモが蓄積されていきます。 塾を離れた後も自分で学ぶための環境と、自分で作ってきた知識を手元に残してほしいと考えています。\n貸与中の管理方法や譲渡の条件については契約前に書面でご説明します。\n現在、モニター生を募集しています 正式開校に先立ち、少人数のモニター生を募集しています。 料金や募集条件は「モニター生募集」をご覧ください。\nお問い合わせ PCを使った勉強に不安がある場合や、 お子様にこの学習方法が合うか分からない場合も、 まずは現在の状況をお聞かせください。\n指導内容と料金についてご説明したうえで、 入塾するかどうかをご検討いただけます。\nお問い合わせフォームはこちら\n","permalink":"https://gotoh-it-school.top/pricing/","summary":"\u003cp\u003e通常の受講で後藤IT塾へお支払いいただく費用は、月額20,000円（税込）のみです。\u003c/p\u003e\n\u003cdiv class=\"table-wrapper\"\u003e\n  \u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n            \u003cth style=\"text-align: right\"\u003e料金\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e月額料金\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e20,000円（税込）\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e入会金\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e0円\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e初回面談・オンボーディング\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e月額料金に含む\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e指定教材費\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e0円\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003eシステム利用料\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e0円\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003ePC貸与料\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003e0円\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"text-align: left\"\u003e季節講習費\u003c/td\u003e\n            \u003ctd style=\"text-align: right\"\u003eなし\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\u003ch2 id=\"対象学年受講環境\"\u003e対象学年・受講環境\u003c/h2\u003e\n\u003cp\u003e新規募集の対象は、中学一年生から高校2年生までです。\n高校3年生の受験直前期から始める、短期的な受験対策は行っていません。\u003c/p\u003e","title":"後藤IT塾 料金"},{"content":"理論編では、 理解とは「分解と再構成」であることを説明しました。\n実践編では、 教科書を自分の言葉でメモすることで、理解の過程を具体的な作業に変えられることを説明しました。\nでは、実際にどう書けばよいのでしょうか。\n本記事では、私が10年以上読書する中で得たメモの書式を用いて、 教科書をメモする例を紹介します。\n用語を手掛かりに教科書を読む 教科書には説明が羅列されていて、何をメモすればよいか分からずに戸惑うかもしれません。\nそして、場当たり的に気になった記述を写経することに終始してしまいがちかもしれません。 私がそうでした。\nしかし、ただの写経では「分解と再構成」になりません。\nそこで、用語に着目すると良いです。 用語は、その分野を構成する要素を見つけるための手掛かりになるからです。 私は、本文だけでなく、図表や欄外の注釈に登場する用語も、まずはすべて拾います。\n見つけた用語は、次の形で書きます。\n用語[, 別名1, 別名2, ...]: 自分の言葉による説明 別名がある場合は、カンマで区切って並べます。\nまだ説明できない用語は、空欄のまま残しても構いません。 空欄は、その用語をまだ説明できないことを示すからです。\n高校「情報Ⅰ」のメモ例 以下は実教出版の高校「情報Ⅰ」の教科書の私のメモの一部です。 用語とその説明による一行を基本単位として書いています。 用語以外の書式も含まれていますが、追って説明します。\n## 01. 情報と情報社会 データ: 事実や事柄を表す記号 情報: 人間が判断し、行動できるように意味を付加した{データ} 残存性: モノとは違って、譲渡してもなくならずに手元に残る 複製性: デジタル{情報}は劣化なしに短時間で大量にコピーできる 伝播性: モノよりも短時間で広く伝えられる -\u0026gt; 一度流出した{情報}は完全に削除することが困難 -\u0026gt; 忘れられる権利: ネット上の過去情報を削除できる権利 EUが支持している 知識: 問題解決に利用できるように整理・蓄積した{情報} 知恵: {知識}を活用する力 基本書式 「情報Ⅰ」のメモ例にある基本的な書式を説明します。\n一つの内容を一行で書く「単文」 メモは、一行に一つの意味を書きます。 これがメモの最小単位であり、「単文」と呼んでいます。 単文は60〜70文字以内を目安にします。 単文に付加した名前が上述の「用語」でした。\n単文が長くなる場合は、複数の内容が混ざっていないかを確認し、複数の行へ分けられないか考えます。\n短く書けない箇所は、まだ整理できていない部分を見つける手掛かりになります。\n用語の埋め込み 用語はブレースで囲んで別の単文に使えます。 「情報Ⅰ」のメモの「情報」には「データ」という用語が埋め込まれています。 同様に、「知識」には「情報」が、「知恵」には「知識」が埋め込まれています。\n用語を埋め込んで使い回すことで、明瞭で正確で短く説明を書けます。\n定義した用語を別の用語へ埋め込み、さらにその用語を別の説明へ使うこともできます。\nこのように用語として知識を「分解」し、用語間の繋がりを埋め込みという関係で「再構成」することで、 理解が深まります。\n字下げや記号で関係を表す 単文間の関係を表す書式は用語の埋め込み以外にもあります。\n字下げ: 詳細 \u0026lt;-: 前提や原因 -\u0026gt;: 結論や結果 ex.: 具体例や下位概念 xe.: 上位概念 \u0026lt;-\u0026gt;: 対立する概念 「情報Ⅰ」のメモでは、「情報」の詳細として「残存性」「複製性」「伝播性」が字下げして書いてあります。 これらはデジタル情報の性質なので、「情報」の詳細と判断しました。\nまた、\n-\u0026gt; 一度流出した{情報}は完全に削除することが困難\nという箇所は、「情報」の結論として配置しています。 「残存性」「複製性」「伝播性」を持つ情報は一度流出するともはや削除しきることが難しい、 というように読むことができます。\nこのように、単に単文を羅列するのではなく、 単文を関係づけてメモすることで理解が深まります。\n発展的記法 メモが長くなってから、次の記法も使います。 最初から覚える必要はありません。\n参照 すでに定義した用語を別の場所で参照するときは、バッククオートで囲みます。\nX: ここでXを定義する ... `X` -\u0026gt; Y: 別の場所でXとYの関係を追記する 用語の定義と離れた場所から参照できます。 教科書での用語の登場順を崩さずに単文を追記したいときなどに使います。\n見出し 見出しは、メモが教科書のどの章や節に対応するのかを残すために使います。\n# 教科書の名前 ## 章 ### 節 知識自体ではなく、その知識がどのような流れで登場したのかという文脈を残せます。\n補助情報 年代などの補足は、用語の説明から一段下げて書きます。\n関ケ原の戦い when. 1600 何が主な説明で、何が補足なのかを分けることで、 メモの見通しを保ちます。\nメモは使いながら書き直す 教科書を一度読んだだけでは、十分なメモは作れません。\n教科書を読み進めたり、授業を受けたり、問題を解いたりする中で、 説明の不足や間違いに気づいたら書き直すことで改善します。\n後藤IT塾では、このメモを講師も確認します。 講師のレビューを受けて書き直すことで、 メモと理解の両方を育てていきます。\n結び 本記事で紹介した基本は、次の三つです。\n用語を手掛かりに、一つの内容を一行で書く 用語に自分の言葉で説明を与える 字下げや記号、埋め込みで、用語同士の関係を表す 書式を守ったきれいなメモを作ることが目的ではありません。 大切なのは、教科書の中から要素を拾い、 自分の言葉で説明し、知識の繋がりを組み直すことです。\nこの書式に辿り着くまでの試行錯誤についても、 別の記事で紹介しています。\n","permalink":"https://gotoh-it-school.top/how-to-documentation/","summary":"教科書の用語を手掛かりに、学んだ内容を自分の言葉でPCメモへ整理する方法を解説します。","title":"[理解の技術]教科書を自分の言葉で整理するメモの書き方 ノウハウ編"},{"content":"同じ授業を受けても、すぐに内容をつかめる人がいる一方で、 真面目に聞いているのに理解できない人もいます。\nこの差を、すべて「地頭」や「才能」で片づける必要はありません。\n理解できた人は、受け取った情報をそのまま覚えているのではなく、 重要な要素を選び、それぞれを関係の中へ位置づけています。\n本記事では、この働きを「分解と再構成」として捉えます。\n理解の原理「分解と再構成」 分解と再構成とは以下です。\n分解：情報の中から重要な要素を選び、中心と細部を見分ける 再構成：選んだ要素の関係を捉え、全体の中へ位置づけ直す 分解とは、情報をむやみに細かくすることではありません。 何に注目し、何をいったん脇へ置くかを選ぶことです。\nまず、分解と再構成の働きを、景色を覚える場面で考えてみます。 同じ景色を見ていて細かいところまで覚えている人がいる一方で何も覚えていない人がいますよね。 この差がなぜ生じるのでしょうか。\nまず、大きい建物のような最も目立つものが目に入ります。 他にも目立つものがいくつかあります。 こうやってその景色の構成要素を順々に把握していくことが「分解」です。\n次に、最も目立つ要素と他の要素の位置関係を把握していきます。 それに従って要素を配置していくことで景色を頭の中に再現します。 これが「再構成」です。\n景色をよく覚えている人はこれを細部まで繰り返した人です。 逆にあまり覚えていない人は漠然としか景色を見ていなかった人です。\n同じ情報を受け取っても理解度に差が生じる理由の一つは、「分解」と「再構成」がどこまで行われたかの違いです。 18世紀の哲学者コンディヤックは、このように対象を分解し、再構成することを「分析」と呼びました1。\n勉強を理解する過程も「分解と再構成」 景色の喩えを勉強に置き換えて、 同じ授業を聴いているのに理解度に差が生じる理由を述べます。\n「景色の中の目立つもの」は勉強では何に対応するでしょうか。 それはその学習分野の中で幹に当たるような重要な要素です。 たとえば、\n数学では、繰り返し登場する基本となるような公式や考え方 歴史では、歴史の流れを決定づける重要な出来事 などが挙げられます。\n重要な要素を把握することが勉強における「分解」です。\n分解で得た要素同士がどのように繋がっているかが「景色における位置関係」に当たります。\nたとえば、\n数学では、ある公式を使って別の公式を証明できる 歴史では、あの出来事があったから後にこの出来事が起きた というような要素を関係づけることが「再構成」です。\n「分解」と「再構成」を繰り返すことでその学習分野について理解を深めることができます。\n分解と再構成は外から見えにくい 授業を聞いただけで理解できる人は、 何が重要で、それらがどう関連しているのかを、頭の中で分解し再構成しています。\nしかし、初めて学ぶ内容について、 何が重要で、何と何が関係しているのかを見つけるのは簡単ではありません。\nどの情報が重要かを判断できなければ、授業の内容を理解するのは困難です。\nさらに、分解と再構成は頭の中で起こるため、 本人にも周囲にも、どこで理解が止まったのかが見えにくいという問題があります。\n自分の言葉で書き出す そこで、頭の中だけで行っていた分解と再構成をメモへ書き出すことで、 この過程を目に見える作業へ変えられます。\nこれは、教科書の表現をただ言い換えることではありません。\n自分の言葉で説明しようとすると、\n何が重要なのか どの情報を残すのか 要素同士がどう繋がるのか どこから説明できないのか を考えなければなりません。\nただ聞いたり書き写したりするだけでは見えなかった理解の過程が、 メモとして外に表れます。\n続く実践編では、 「自分の言葉でメモする」ことで、 分解と再構成を具体的な学習作業へ変える方法を説明します。\n参考 論理学 考える技術の初歩[エティエンヌ・ボノ・ド・コンディヤック] ","permalink":"https://gotoh-it-school.top/learn-theory/","summary":"\u003cp\u003e同じ授業を受けても、すぐに内容をつかめる人がいる一方で、\n真面目に聞いているのに理解できない人もいます。\u003c/p\u003e\n\u003cp\u003eこの差を、すべて「地頭」や「才能」で片づける必要はありません。\u003c/p\u003e","title":"[理解の正体]同じ授業でも理解に差が生まれる理由 理論編"},{"content":"対象読者 安くNextCloudを構築したい方 ポート解放ができないけど自宅サーバーを公開したい方 NextCloudでの通話環境の構築に挫折した方 概要 自宅サーバーとVPSを用いてインターネット経由の通話ができる環境を格安で構築できた。 遠方に住むFPS仲間の友人とのゲーム通話にはDiscordを使用していたが、代わりに自前の通話を試してみた。 画面共有しても遅延にシビアなFPS出の通話として問題なかったので、良い環境が構築できたのだと思う。\n素のNextCloudと全部設定済みのdockerイメージAIOによる構築に失敗した末に docker-composeで通話環境を実現した。 これに2週間も要した。\n試行錯誤で得た設定の勘所のサマリ 最終的なdocker-compose構成の具体的な設定内容 泥臭い試行錯誤 の順に書く。\n最終的なdocker-compose構成図は以下。\ngraph TD Users((通話端末/PC・スマホ)) subgraph VPS[ConoHa VPS / グローバルIP] direction TB Caddy[Caddy / Reverse Proxy] subgraph VPS_UDP[UDP Relay] TURN[coTURN / TURN Server] end end subgraph Home[自宅 N100ミニPC / ポート解放不可] direction TB subgraph Docker[Docker Compose] NC[Nextcloud App] Signaling[Signaling Server / HPB] Janus[Janus Gateway / Host Mode] DB[(PostgreSQL)] Redis[(Redis)] end end %% Web \u0026amp; Signaling Route Users -- \u0026#34;① Web \u0026amp; Signaling (HTTPS/WS)\u0026#34; --\u0026gt; Caddy Caddy -- \u0026#34;② Tailscale経由\u0026#34; --\u0026gt; NC Caddy -- \u0026#34;② Tailscale経由\u0026#34; --\u0026gt; Signaling %% Media Route (The Core of this Setup) Users -- \u0026#34;③ 通話データ (UDP)\u0026#34; --- TURN TURN -- \u0026#34;④ Tailscale経由\u0026#34; --- Janus %% Internal Connections NC --- DB NC --- Redis Signaling --- NC Signaling --- Janus classDef vps fill:#f1f8e9,stroke:#2e7d32,stroke-width:2px; classDef home fill:#fffde7,stroke:#fbc02d,stroke-width:2px; classDef focus fill:#ffebee,stroke:#c62828,stroke-width:3px; classDef comp fill:#f5f5f5,stroke:#616161,stroke-width:1px; class VPS,Caddy,TURN,VPS_UDP vps; class Home,Docker home; class Janus,TURN focus; class NC,Signaling,DB,Redis comp; docker-composeによる最終構成の設定ファイル群 自宅VMでは、 docker-compose signaling server janus postgress VPSでは、\nTURNサーバー caddy の設定ファイルを添付する。 自宅VM上の設定ファイル # docker-compose.yml services: db: image: postgres:14-alpine restart: always volumes: - ./db/data:/var/lib/postgresql/data - ./db/postgres.conf:/etc/postgresql/postgresql.conf:ro environment: - POSTGRES_DB=nextcloud - POSTGRES_USER=xxx - POSTGRES_PASSWORD=xxx - TZ=Asia/Tokyo command: [\u0026#34;postgres\u0026#34;, \u0026#34;-c\u0026#34;, \u0026#34;config_file=/etc/postgresql/postgresql.conf\u0026#34;] networks: - nextcloud_net redis: image: redis:alpine restart: always networks: - nextcloud_net app: image: nextcloud:stable restart: always ports: - \u0026#34;8080:80\u0026#34; volumes: - ./data:/var/www/html environment: - POSTGRES_HOST=db - POSTGRES_DB=nextcloud - POSTGRES_USER=xxx - POSTGRES_PASSWORD=xxx - NEXTCLOUD_TRUSTED_DOMAINS= # ドメインとTailscaleのIP - OVERWRITEPROTOCOL=https - REDIS_HOST=redis - TZ=Asia/Tokyo - TRUSTED_PROXIES=127.0.0.1 172.16.0.0/12 192.168.0.0/16 signaling tunnel - OVERWRITEPROTOCOL=https # PHO自体のキャッシュ - PHP_OPCACHE_MEMORY_CONSUMPTION=128 - PHP_OPCACHE_INTERNED_STRINGS_BUFFER=8 - PHP_OPCACHE_MAX_ACCELERATED_FILES=10000 depends_on: - db - redis networks: - nextcloud_net tunnel: # ここは図には含まれない箇所 container_name: cloudflared image: cloudflare/cloudflared:latest restart: always command: tunnel run --protocol http2 --token xxx # cloudflare tunnelのtoken networks: - nextcloud_net depends_on: - app janus: image: canyan/janus-gateway:latest restart: always network_mode: \u0026#34;host\u0026#34; # 通話の大量のパケットをいちいちDockerの仮想ネットワークに送らない用にする事でパフォーマンスアップ volumes: - ./talk/janus.jcfg:/usr/local/etc/janus/janus.jcfg:ro environment: - TZ=Asia/Tokyo signaling: image: strukturag/nextcloud-spreed-signaling:latest restart: always volumes: - ./talk/signaling.conf:/config/server.conf:ro environment: - TZ=Asia/Tokyo command: /usr/bin/nextcloud-spreed-signaling --config /config/server.conf ports: - \u0026#34;8089:8080\u0026#34; networks: - nextcloud_net depends_on: - nats - janus # ホストモードのJanusを見つけるための魔法の一行 extra_hosts: - \u0026#34;host.docker.internal:host-gateway\u0026#34; # 2. Signaling serverのための高速通信路 nats: image: nats:2.10-alpine restart: always networks: - nextcloud_net networks: nextcloud_net: driver: bridge driver_opts: com.docker.network.driver.mtu: \u0026#34;1280\u0026#34; # TailscaleのMTUに合わせる 通話品質のために重要 このcomposeファイルでvolumeに指定したsingaling server と janus の設定は以下\n# ./talk/signaling.conf [http] listen = 0.0.0.0:8080 path = /standalone-signaling [app] debug = false trustedproxies = 127.0.0.1, 172.19.0.0/12, 192.168.0.0/16, xxx # TailscaleのIP [sessions] hashkey = xxx # 32文字のhash blockkey = xxx # 32文字のhash [clients] internalsecret = xxx # 48文字のhash [backend] backends = backend-1 allowall = false timeout = 10 connectionsperhost = 8 skipverify = false [backend-1] urls = https://xxx/ # NextCloudドメイン secret = xxx maxstreambitrate = 1048576 maxscreenbitrate = 2097152 [nats] url = nats://nc-nats-1:4222 [mcu] type = janus url = ws://xxx:8188/janus # 自宅VMのTailscaleのIP maxstreambitrate = 1048576 maxscreenbitrate = 2097152 [turn] servers = turn:xxx:3478?transport=udp,turn:xxx:3478?transport=tcp # TURNサーバーがあるVPSのIP secret = xxx # TURNサーバーの static-auth-secret apikey = xxx # signalingサーバーがCoTURNとやり取りする際の使い捨てキーを生成するのに必要 # ./talk/janus.jcfg general: { debug_level = 4 } nat: { stun_server = \u0026#34;xxx\u0026#34; # TURNサーバーがあるVPSのIP ここでTURNサーバーからのパケット送信先が設定できる stun_port = 3478 full_trickle = true } # ./db/postgresql.conf # AIOレベルのパフォーマンス設定 VMのスペックに合わせて調整 shared_buffers = 512MB effective_cache_size = 1536MB work_mem = 16MB maintenance_work_mem = 128MB max_connections = 100 listen_addresses = \u0026#39;*\u0026#39; VPS上の設定ファイル # VPSの /etc/turnserver.conf listening-port=3478 listening-ip=0.0.0.0 external-ip=xxx # VPSの固定IP min-port=49152 max-port=65535 fingerprint #lt-cred-mech # これと use-auth-secret は同時に使えないので注意 use-auth-secret static-auth-secret=xxx realm=xxx # VPSドメイン total-quota=0 bps-capacity=0 stale-nonce=600 cert=/etc/letsencrypt/live/xxx/fullchain.pem # xxx は VPSドメイン pkey=/etc/letsencrypt/live/xxx/privkey.pem # xxx は VPSドメイン syslog allow-loopback-peers no-multicast-peers cli-password=xxx no-rfc5780 response-origin-only-with-rfc5780 verbose # /etc/caddy/Caddyfile ... xxx { # TURN server用ドメイン handle_path /standalone-signaling* { # /standalone-signaling/*とすると設定できなかったので注意 reverse_proxy xxx:8089 # 自宅VM のTailscaleのIP } # それ以外のすべてのリクエストを Nextcloud 本体へ handle { reverse_proxy xxx:8080 # 自宅VM のTailscaleのIP } log { output file /var/log/caddy/nextcloud_access.log } } ... 設定の勘所・試行錯誤まとめ 忙しい人のために最終構成に至るまでで重要だった部分をまとめる。\n素のNextCloudを使うべきではない。 設定ファイルを設定するのが煩雑である。dockerのNextCloudなら環境変数で簡単に設定できる。 NextCloudを立てる環境はLXCではなくVMにすべきだ。 TailScaleのMTUの制約に合わせやすいからだ。 janusはhost modeにすべきだ。 でないとdockerコンテナへの転送によるオーバーヘッドを抑制できるからだ。 ip_forwardをVPSと自宅VMで許可しないと通話パケットが破棄されてしまう NextCloud AIOはVPSリレーには使えない。AIOは単一のVMにホストする場合にのみ使うべき。 以上が試行錯誤で重要だった点である。以下で泥臭い試行錯誤の詳細を書く。\n自宅サーバー初心者、NextCloudに出会う 自宅サーバー、カッコいいよね。YouTubeで自宅鯖界隈というものがあるのを知ったニワカなのですが。\n流行りの格安中華製N100ミニPC(Trigkey Green-G4)を買ってみたが持て余していた。 N100の省電力性はサーバー向きらしく、自宅サーバーの定番OSのproxmoxをインストールしてみた。 開発用VMをそこに立ててsshで利用するだけだったので、他の活用方法を考えていた。\nそしてNextCloudというOSSのSelf-hostedなクラウドがある事を知った。\n共同編集や画面共有、チャット、ビデオ通話ができるらしく、学習塾のオンラインプラットフォームとして利用できると思った。 普通はGoogle Workspaceなどに課金しなければならないだろう。\nまた親がiCloudに課金しているらしく、ストレージを買えばその代替にもできるだろう。 でもそれは今後の宿題という事でまずは高品質な通話環境の構築を目指すことにした。\nConoHa VPSをリバースプロキシとして自宅NextCloudを公開する Tailscale VPSリレー 本HPを公開するために最安最低スペックのメモリ512MBのConoHa VPSをレンタルしていた。 Ubuntuの場合、snapdなどのサービスがメモリを食うらしく最小メモリが1GBまでしかなく、Debianを選択した。\nそれをリバースプロキシとして自宅のNextCloudを公開できる。 これはVPSと自宅proxmox上のコンテナ(自宅VM)をTailscaleで繋ぐ事で実現できる。\nNextCloud Talkを使うには4GB ~ 8GB程度のメモリが必要らしい。 ConoHa VPSだけでNextCloudを完結させようとすると月2000 ~ 4000円程度必要になる。 自宅サーバーを併用すれば、VPSは最低スペックで月額400円以下で済む。 Webページへの転送とTURNサーバーには数百MBあれば十分らしい。\nLXCでの素のNextCloud構築を断念 VM構築との比較 NextCloud LXCを選択 proxmoxのコンテナ構築便利コマンドはProxmox Helper Script というサイトにまとめられている。 公式のものがあるならそれを使うべきだと思う。 NextCloudに関するコマンドが載っていたのでそれを使うことにした。 VMとLXCの両方があったが、軽量でパフォーマンスが良いとされているLXCを使うことにした。\n通話ではLXCよりもVMの方がいい しかし、この判断は間違いだった。LXCではなくVMを使うべきだった。\n通話ではMTU(最大転送単位)を適切に設定しないと、パケットがブツ切りになったり届かなかったりして通話品質が下がる。\nLXCはproxmox本体とカーネルを共有しており、MTUを設定するにはproxmox本体の設定を変更する必要がある。\n一方、VMはproxmox本体と独立しており、自由にMTUを設定できる。 Tailscaleにはパケットの暗号化によるオーバーヘッドが生じるためMTUが通常のLANよりも小さいという制約がある。 これに合わせて自宅VMのMTUを変更する必要がある。\n通常のLANのMTU: 1500バイト TailscaleのMTU: 1280バイト こういうネットワーク設定の難しさがあるので、LXC上でdockerを使うのは避けた方がいいらしい。\nNextCloudPiの設定は煩雑 まず、VPSのリバースプロキシで、NextCloud用のドメインアクセスをVPSのTailscale IPに流すように設定した。\nしかし、VPSのドメイン経由でNextCloudのWeb画面が開けなかった。自宅LXCでの設定が必要だった。\nNextCloudではapache2とphpの２種類の設定が要る。\n/etc/apache2/sites-enabled/ncp.conf で VPSのTailscaleからのアクセスを許可 タグ内に追記 Require ip 100 # 100.x.x.x は TailscaleのIP /var/www/nextcloud/config/config.php nc-httpsonly: No これでHTTPSで無限リダイレクトループが解消 VPSリバースプロキシはhttpで自宅NextCloudに転送(Tailscaleを使っているのでhttpsは不要) この設定がYesの場合に「httpsでやり直せ」と突き返して無限ループになっていた nc-trust-proxies に 自宅LXCのTailscale IP と VPSのドメインを追加 nc-trust-domains に VPSのTailscale IPを追加 NextCloudPiとは、config.phpの設定を変更できるWeb管理画面付きのNextCloudだ。 apache2の設定変更が必要であり、管理画面だけでは完結しない。 設定を反映するためにapache2やphpを再起動する必要があってなかなか面倒だった。\ndockerではapache2を意識しなくて済んだし、config.phpは環境変数で設定できる。 NextCloudの構築にはdockerをおすすめする。\nTalkの通話品質がゴミで設定方法も謎 断念 NextCloudをインターネットに公開できたので、ようやくTalkの設定を始められる。\nNextCloud版アプリストアみたいなものがあってそこでTalkアプリをインストールできる。 するとNextCloudのWeb画面のヘッダーにTalkのアイコンが出現する。 テスト用にアカウントを作成し、通話をしてみたら成功。チョロいな\u0026hellip;。\nと思っていたのか？(ブロリー)\nTalkはできたものの、遅延ありで籠った感じの低音質で厳しいと思った。 MTU設定のせいだとかはこの時理解していなかった。\nNextCloudアプリには設定画面があって、\n高機能バックエンド(HPB, High Performance Backend) TURNサーバー などを設定する事で通話品質が上がるらしい。きっとこの辺をうまく設定すればうまくいくのだろう。\nスマホ版のNextCloud Talkアプリがあるのでそれにチャットを送ってみてもプッシュ通知が来なかった。\nしかしそれらを設定済みの公式dockerイメージがある事を知った。 数日苦戦していたが解決できなかったので、そちらを試してみることにした。\nNextCloud All-In-One(AIO)ではVPSリレーに対応できない理由と解決策 AIOのdockerの設定が超簡単 TalkのHPB以外にもキャッシュ(redis)なども設定済みの全部入り(All-In-One)の公式dockerイメージは AIOというらしい。 このタイミングでLXCからUbuntu ServerのVMに移行した。\nなんということだ。 VPSのドメインをAIOの管理画面に入力して立ち上がりを待つだけでNextCloudがVPSからアクセスできた。 Tailscaleを使うためにちょっとだけ設定が必要だったが(AIOのGitHubに説明があった)。 感動した。\nAIOでもモバイル回線経由の通話に失敗 Talkアプリを試してみたが、LAN内同士なのに遅い。設定は最適化されているはずなのに。\nどうやら、VPSリレーのせいで、自宅内同士の通話でも、\nPC1 -\u0026gt; wifi -\u0026gt; VPS -\u0026gt; wifi -\u0026gt; 自宅VM(NextCloud) -\u0026gt; wifi -\u0026gt; VPS -\u0026gt; wifi -\u0026gt; PC2\nというように遠回りしているようだ。\nしかも、モバイル回線経由の通話は繋がらない。\nAIOの通話の構成要素 HPBやTURNサーバーが何なのかなどの構成を理解しないと太刀打ちできなさそうだ。 以下はAIOの通話で設定できる構成要素である。\nsignalingサーバー: 高機能バックエンド(HPB)と呼ばれるもので、通話のコネクションを管理する HPBはGo言語製なのでphpのNextCloudより高性能で省リソース(参考) TURN: 直接通信できないネットワークでも通話できるようにパケットを中継する パケット中継のおかげでパケットの遠回りを避けられる STUN: 通話の発信元のIPアドレスを調べる janus: 音声や映像パケットを管理し、多人数通話を負荷分散し、レスポンスを高める こういう面倒くさい事を任せたくてAIOを使ったわけだが本末転倒である。 しかし、公式が用意した設定の正しさへの安心感を元にトラブルシュートに臨めるのは悪くない。\n外部との接続に必要なVPS上のTURNサーバーの準備 LAN外で通話するには外部にTurnサーバー(coTURN)を立ててそこ経由で通話する必要があるらしい。 VPSにcoTURNというTURNサーバーを立てた。\nTrickle ICE というサイトでTURNサーバーが正常に稼働しているかテストできる。 テストユーザーを作成し、無事テストができた。 NextCloud Talkでは使い捨ての認証情報を生成して認証するが、 Trickle ICE ではユーザーとパスワードで認証認証する方式なのでそこだけテスト用に設定を変える必要がある。\nlt-cred-mech # ここを有効にする #use-auth-secret # lt-cred-mechと併用できないので無効化 #static-auth-secret=xxx # 同上 NextCloud TalkはWebRTC という通話技術を利用しており、\nTCPの3478ポート: 通話のコネクション UDPの49152-65535ポート: 通話パケット などのポートを許可する必要がある。\nConoHa VPSでは以下のようなセキュリティグループを作成してVPSに適用した。\n通信方向 イーサタイプ プロトコル ポート範囲 備考 In IPv6 UDP 3478 TURN/STUN標準ポート In IPv4 UDP 3478 TURN/STUN標準ポート In IPv4 TCP 3478 TCP経由の通信用 In IPv4 UDP 49152-65535 重要： 通話データ（Relay）用 In IPv6 TCP 3478 IPv6環境でのTCP通信用 Out IPv4 All 全範囲 全開放 Out IPv6 All 全範囲 全開放 ルーター設定(ip_forward) それでもスマホに呼び出し通知はできるが、そこからトークルームに入ることができなかった。 VPS上のTURNサーバーのログを以下で確認する。\njournalctl -u coturn -f 以下のエラーが出ていた。\n... error 437: Mismatched allocation: wrong transaction ID reason: allocation timeout さらに、VPSのip_forwardの設定が必要なようだ。 Linuxサーバーではこれを有効にしないと自分宛じゃないパケットを破棄してしまう。\nTURNサーバーに届く通話パケットの宛先は自宅VM宛なので捨てられてしまう VM上のsignalingサーバーコンテナ宛のパケットは破棄される よって、VPSと自宅VMの両方で以下を設定する。\n# 有効化の手順 sudo vi /etc/sysctl.conf # net.ipv4.ip_forward=1 のコメントアウトを外す sudo sysctl -p # 設定の反映 sysctl net.ipv4.ip_forward # 1が返ってきたらOK すると、allocationには成功するようになった。\nAIOでは外部TURNサーバーを使用できない だががまだエラーが続いていて、モバイル回線経由の通話ができない。\n... incoming packet ALLOCATE processed, success ... peer 172.20.0.8 lifetime updated: 300 ... incoming packet message processed, error 401: Unauthorized 172.20のような見慣れないIPアドレスが出ていた。 これはdockerコンテナのIPアドレスらしい。 でもVPSにdockerコンテナはない。あるのは自宅VM上だ。 なので、TURNサーバーはパケットを遅れずにUnauthorized判定を受けていたようだ。\nこのコンテナはnextcloud-aio-talkコンテナであり、中身はsignalingサーバーとjanusである。 TURNサーバーにjanusの場所を教えることができれば通話に成功するはず。 そのためにはjanusの設定をいじればいいようだ。\nしかし、その希望は打ち砕かれた。 まさにこの問題に関するGitHub上のdiscussion を見つけた。\njanusの設定(janus.jcfg)はAIOが生成しているらしく、我々が設定をすることができない。 無理やりその設定を上書きするハックで凌いでいた人がいたようだが、そのハックも通用しなくなったらしい。\nつまり、AIOではjanusの設定を変更できない為、 外部TURNサーバーに自宅VMのjanusへパケットを送るように指示できない事が確定した。\nｵﾜﾀ。\n自宅サーバーをインターネット公開できる人ならAIOを使えるが\u0026hellip; 元々、AIOは1つのサーバー完結する単純なネットワーク構成を前提としているものなのだろう。 なので、自宅VMをインターネットに公開(ポート解放)できる人なら活用できる。\nしかし、私の使っている光回線は光TV用回線であり、ポート解放ができない仕様だと判明した。 自宅wifiにはISPのプライベートIPが割り振られている。\nまあ、自宅サーバーをインターネット公開するにはセキュリティを熟知している人じゃないと危険なので、 VPSリレーの方が無難ではある。\ndocker-composeによる構築で通話に成功した最終的な構成 結局、janusを設定できる構成でないと、VPSリレーで通話を実現できない事が確定した。 AIOの構成を手本としてdocker-composeで作るのが正解ということだ。 janusの設定でTURNサーバーから自宅VMへパケットが送れるようになって、モバイル回線での通話に成功した。 長い試行錯誤だった。\n自宅VM上の設定ファイル docker-composeの設定と、自宅VM上のjanusなどの各種設定やVPS上のTURNサーバーやリバースプロキシの設定を以下にまとめた。 リバースプロキシには当初nginxを使っていたが、設定がシンプルなcaddyに移行した。 caddyではWebSocket対応のための記述などが不要で、nginxでの記述量の1/10以下になっている。 複雑なネットワーク設定が絡むので、最初からcaddyを使うことをオススメする。\nCloudflared tunnelの導入 さらに、Cloudflared tunnelを導入し、Webサイトとsignalingサーバーを公開した。\nLXC構成時のパケットの遠回りによる遅延を実感したので、 近くのEdgeサーバーを利用して少しでも遅延を減少させようと思ったからだ。\nしかし、Cloudflare tunnelで扱えるのはTCPのみであり、通話パケットのUDPには対応していない。 なので、依然として通話にはTailscaleによるVPSリレーを使用しているので、通話の高速化にこれは寄与しない。 Webページの表示の高速化や共同編集などの高速化のためにこれを導入した。\nこれが本当の最終構成であるが、煩雑であり、通話をTalsScaleによるVPSで実現した事からは蛇足であるため、最終構成の図には載せていない。 なのでCaddyは最終的には使っていない。しかし、NextCloudの構築にはCaddyを使うべきなのは上述の通りである。\n結び 以上が私のNextCloud Talkの構築の試行錯誤である。 私と同じ最終構成ではなくても要所での躓きが参考になれば幸いである。\n","permalink":"https://gotoh-it-school.top/nextcloud/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e安くNextCloudを構築したい方\u003c/li\u003e\n\u003cli\u003eポート解放ができないけど自宅サーバーを公開したい方\u003c/li\u003e\n\u003cli\u003eNextCloudでの通話環境の構築に挫折した方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"概要\"\u003e概要\u003c/h2\u003e\n\u003cp\u003e自宅サーバーとVPSを用いてインターネット経由の通話ができる環境を格安で構築できた。\n遠方に住むFPS仲間の友人とのゲーム通話にはDiscordを使用していたが、代わりに自前の通話を試してみた。\n画面共有しても遅延にシビアなFPS出の通話として問題なかったので、良い環境が構築できたのだと思う。\u003c/p\u003e","title":"ポート開放なしで公開:Discord並の通話環境を自宅サーバーと格安VPSで自作 | NextCloud Talk"},{"content":"理論編にて 「理解とは分解と再構成」や 「同じ情報で理解度に差が生まれる理由」 などを説明しました。 本記事はその実践編です。\nIT業界では、学んだことを記事にしたり、仕様書として記録したりする文化があります。\n勉強でも、教科書をそのまま写すのではなく、自分の言葉で整理して記録することが重要です。\n何の新規性もないツマラナイ内容に見えるかもしれません。 しかし、書こうとすると、要点を選び、知識同士を関係づけ、自分が説明できない部分を確かめる必要が生じます。 頭の中だけでは見えにくい理解の過程を、具体的な作業に変えられるのです。\n自分の言葉でメモすることで知識を咀嚼する 知識がよく整理されている人は、授業で聞いた内容を「要するにこういうことだ」と素早く噛み砕けます。 羨ましいですよね。\n特に、初めて学ぶ内容を分解して再構成するのは簡単ではありません。\nそこで提案したいのが冒頭でお話した「自分の言葉でメモする」という方法です。\nただ、教科書の記述をそのまま書き写すのはNGということは強調しておきます。 そのまま書き写すのは「分解」ではありません。 マーカーで線を引きまくることも同様にNGです。\n自分の言葉で「要するにどういうことか」をまとめるのです。 何が「目立つ」ものなのかを積極的に探して取捨選択します。 こうして厳選した要素をうまく配置し関連付けてメモにします。\n自分の言葉で書こうとすると、一度内容を噛み砕き、配置し直さなければなりません。 この作業が「分解」と「再構成」を強制します。\nメモによる言語化の実例を少々 具体的にメモを実演してみます。 内容を追う必要はありません。 取捨選択と圧縮率に注目してください。\n手元にあった私の高校数学の教科書1を抜粋します。\n上で得られた関係式 \\( y = 20 - 6x \\) において、\\( 0 \\leqq x \\leqq 10\\) の範囲での\\(x\\)の 値を定めると、それに対応して、\\(y\\)の値がただ１つ定まる。\nこのように、２つの変数\\(x, y\\)があって、 \\(x\\)の値を定めるとそれに対応して\\(y\\)の値がただ1つ定まる時、 \\(y\\)は\\(x\\)の関数であるという。\n\\(y\\)が\\(x\\)の関数であることを文字\\(f\\)などを用いて \\( y = f(x) \\) と表す。\nまた、この関数を、単に関数 \\(f(x)\\) ともいう。\n関数 \\( y = f(x) \\) において、 \\(x\\) の値が \\(a\\) のとき、 それに対応して定まる \\(y\\) の値を \\(f(a)\\) と書き、 これを関数 \\(f(x)\\) の \\( x = a\\)における値という。\nそこから抽出したメモがたとえばこのような感じになります。 一要素を一行に簡潔にまとめます。\n関数: 入力に対して出力が一つに定まる対応関係 関数の値: ある具体的な入力に対する出力 何となく読んだり聞いたりするのではなく、要するに本質は何かを探す意識が大事です。 積極的に知識を加工しようとする試行錯誤の中で理解が形成されるのです。\n言語化が理解を磨き上げる 一読しただけ、授業を聞いただけで十分に理解できるとは限りません。 自分で手を動かして書いてみることではじめて理解の不備が見えてきます。\nメモすべき要素を見逃しているのは「分解」の不備のサインです。 また、項目が関連づいていないのは「再構成」が不十分なサインです。\n教科書を読みながら一通りメモを作り終えた頃には、内容を大まかに理解できているはずです。 さらに、教科書やメモを見返してみると「もっとこう書けばよかった」という改善点が見えてくるでしょう。\n自分の理解を言語化して目に見える文にすることには、\n分解と再構成の過程を避けて通れなくする 自分の理解を振り返って改善点を探すことができる などの効用があります。\n宿題をしても塾に通っても成績が伸びない理由と対策 よく整理されたテキストや授業は、分解と再構成の結果を分かりやすく示してくれます。 しかし、それを受け取るだけでは、生徒自身が分解と再構成をしたことにはなりません。 自分の言葉でメモを作り、理解を組み立て直すことが重要です。\n宿題も手を動かして自分の理解を確認する能動的作業です。 なのに宿題をこなしても成績が伸びないのはなぜか。\nそれは、解くための「武器（理解）」が頭の中に揃っていないのに 義務的に宿題をこなそうとして「作業」になってしまっているからです。\nだからこそ、まずは教科書を自分の言葉でメモして「武器」を揃える。 その上で、宿題を使ってその武器が使えるかをテストする。 宿題が解けなければ、教科書に立ち返る。 この往復によって、問題を解くだけでは見つけにくい理解不足を改善できます。\n自走力を高める: 「分からない」から「ここが分からない」へ 自分の言葉でメモすることは、頭を使う負荷の高い作業です。 容易ではありません。 生徒は「めんどくさい、普通に教えてよ」と反発する事もあるでしょう。\nしかし、理解はその子自身のものです。 「分解と再構成」を完全に肩代わりすることはできません。 本人の手で要点や関係を整理する必要があります。\n塾で、どこが分からないのか整理できないまま「分からない」と質問する子を多く見ました。 類題でも同様に「分からない」と質問を繰り返すばかりでした。\n対して、「ここがこう分からない」みたいな具体的な質問ができる生徒は 理解が速く、成績を上げていました。\n「この部分が分からない」 「こういう理解ではダメか」 というように、具体的に質問できることが重要です。\n具体的な質問ができれば、 教科書を確認する、 学校の先生に質問する、 ネットで調べるなど、次の行動を自分で選びやすくなります。\nこうした具体的な疑問は、自分で理解しようとする中で見つかります。 そのための再現的な方法が「自分の言葉で書く」ことです。\n結び 続くノウハウ編では、 具体的なメモの書式や、 言葉の定義を使い回して知識を整理する方法を紹介します。\n参考 改訂版 数学1 [平成18年度] ","permalink":"https://gotoh-it-school.top/core-policy/","summary":"真面目に勉強しているのに成績が伸びない原因を、理解の「分解と再構成」から考えます。教科書を自分の言葉でメモし、宿題で確かめる勉強法を解説します。","title":"[理解の型]真面目に勉強しても成績が伸びない子のためのメモ術 実践編"},{"content":"LINEでお問い合わせ 公式LINEからも個別に質問・相談を承っています。 以下のボタンより友だち追加してください。\n以下のフォームよりお問い合わせください。 （送信前に個人情報保護方針をご確認ください）\n読み込んでいます… ","permalink":"https://gotoh-it-school.top/contact/","summary":"\u003ch3 id=\"lineでお問い合わせ\"\u003eLINEでお問い合わせ\u003c/h3\u003e\n\u003cp\u003e公式LINEからも個別に質問・相談を承っています。\n以下のボタンより友だち追加してください。\u003c/p\u003e\n\u003ca href=\"https://lin.ee/YyLAZUs\"\u003e\n  \u003cimg\n    src=\"linebtn.png\"\n    alt=\"友だち追加\"\n    style=\"height: 36px; width: auto; vertical-align: middle; border: 0;\"\n  \u003e\n\u003c/a\u003e\n\u003cp\u003e以下のフォームよりお問い合わせください。\n（送信前に\u003ca href=\"/privacy\"\u003e個人情報保護方針\u003c/a\u003eをご確認ください）\u003c/p\u003e","title":"お問い合わせ"},{"content":"初めまして。後藤 将吾と申します。\nどのような人が運営しているのか分からなければ、安心して相談するのは難しいと思います。 そこで、経歴や学習について考えてきたことをご紹介します。\n経歴 1992年生まれの既婚男性です。\n四日市南高校卒 豊田工業大学学部卒 在学中に塾バイトを数年経験する 数値シミュレーションの会社に就職 JAXA(宇宙研究開発機構)にてAIによる数値シミュレーションに関する研究に従事 フリーランスや大手IT企業を経験 トヨタ系の大学だったので周りの友人は皆、自動車系の企業に就職しました。 しかし、私は数学・物理が好きだった事とIT技術に関心があったので 数値シミュレーションの業務を行う会社に就職しました。 より本格的なプログラミングに興味が移ったのを機にIT系に転職しました(詳細はこちら)。 名古屋や東京で仕事した後に地元に戻りました。\nITエンジニアという経歴の強み ITエンジニアは塾講師としては珍しい経歴だと思います。 2025年から大学入学共通テストに導入された「情報I」。 教科書上の知識を教える人は多いですが、 現場でシステムを構築してきた経験から「この技術が社会のどこで、どう役に立つのか」 をエピソードを交えて語れる教育者は、そう多くありません。\n当サイトは塾長自ら構築・管理しています。 指導管理システムを自宅サーバーで運用しています(NextCloud)。 チャットやPCメモは24時間いつでも送信できます。 講師が対応日に順次確認し、レビューや返信を行います。 指導時間外でも対応できる「非同期」な学習支援を行います。\n指導内容をネットで簡単に参照できる環境などをITによって整備しています。\nまた勉強を「再現可能な仕組み」によって支援します。 具体的には「教科書のドキュメント化」です。 上で「勉強メモ」と呼んだものです。\nこれらはITエンジニア的アプローチであり、他の塾にはない本塾の特徴です。\n教えるのが好き 大学時代に数年間塾講師のバイトを経験し、中高生に教えていました。 よくある1対2~4の個別指導塾でした。 子どもとは相性がよかったようで、冗談を言い合いながら楽しく指導していました。 親しみやすい性格なのだと思います。 説明しても要領を得ない反応の子にどう教えるかを悩んでいた事が印象に残っています。\n高校の友達に数学や物理の質問をよく受けて答えていました。 LINEで画像が添付されて送られてきたものを解いた紙を写メして返したり、 補足をリプしたり、手っ取り早く電話で返したりしていました。 大学の同期には私の物理の課題を共有していました。 割と丁寧な対応をしていたと振り返って思います。 教えるのが好きだし、「教えて」と頼られるのが嬉しかったんだと思います。\nそして社会人になってプログラミングにハマりました。 仕事で使う技術にハマれたのは幸運でした。後に転職ができるスキルを磨けたのもこのおかげです。 よりよいコードの書き方を追求するため、さまざまな技術書を買って読んでいました。 そこで学んだ考え方を会社の同僚に話すこともよくありました。 アイデアを伝える事が好きなのでしょう。\n読書でメモは必須 私は大学生になってから読書を始めました。 それから長年読書を継続しています。 いろんな知識や意見を自分の中に醸成できたような気がしていました。 そこで得た知識をアウトプットしたいと思い、ブログを始めました。 本HPの記事の多くはそこから転記したものです。\nしかし、いろいろ読んで知識を得たはずなのにブログ記事を書くときには苦戦しました。 漠然と読むだけでは書けるレベルでの理解が得られない事を痛感しました。\nこれが私が自分の言葉でメモを取ることに 拘るようになった理由です。\n読書した内容を自分の知識として使えるようにし、 アウトプットできるレベルになるためには、 単に読書するのではなく、 読書内容を自分の言葉によってドキュメント化する事が必要です。\nもっと早くからこのスタイルを確立できていれば、と後悔しています。 教科書を精読するような勉強スタイルを学生時代から築けていれば、 もっと良い成績を取れたはずだと確信しています。\nただし、適切なメモを取ることは難しいです。 私は長年メモを継続していて、その精度を高めてきました。 その知見を活用していきたいと思います。\nおまけ 好きな音楽 Acid Black Cherry Janne Da Arc ラルク 水樹奈々 UNISON SQUARE GARDEN など 大学時代はAcid Black Cherryのコピーバンドでドラムをやりました(下手くそです)。 ヒトカラに週１で行くほどカラオケ好きだったのですが、 コロナ禍を機にその習慣はなくなりました。\n趣味 アプリ開発 読書 カラオケ PCゲーム アニメ 性格診断 なんかやってみた性格診断結果を載せておきます(なんとなく)。 ","permalink":"https://gotoh-it-school.top/profile/","summary":"\u003cp\u003e初めまして。後藤 将吾と申します。\u003c/p\u003e\n\u003cp\u003eどのような人が運営しているのか分からなければ、安心して相談するのは難しいと思います。\nそこで、経歴や学習について考えてきたことをご紹介します。\u003c/p\u003e","title":"後藤IT塾 塾長について"},{"content":"対象読者 高校物理で公式を暗記したくない方 高校物理の力学を公式に頼らずに解きたい方 結論 高校物理の教科書には十分な証明や体系的な説明もなく、以下のような公式がたくさん登場する[1]。\n・等価速度直線運動の公式\n$$ \\begin{aligned} v \u0026amp;= v_0 + at \\\\ x \u0026amp;= v_0t + \\frac{1}{2}at^2 \\\\ v^2 - v_0^2 \u0026amp;= 2ax \\end{aligned} $$\n・エネルギーの公式 $$ \\begin{aligned} \\text{運動エネルギー} \u0026amp;= \\frac{1}{2}mv^2 \\\\ \\text{位置エネルギー} \u0026amp;= mgh \\\\ \\text{バネの弾性エネルギー} \u0026amp;= \\frac{1}{2}kx^2 \\end{aligned} $$\n高校物理では微分積分を用いない制約があるため、 多くの公式の暗記という無味乾燥した受験勉強を強いられることになる。 その上、大学物理では微分積分を用いて力学を勉強し直すことになる。 なんという二度手間だろうか。ウンザリしないだろうか。\n微分積分を用いることが許さるならば運動方程式を書き下し、これを解くだけで問題に解答することができる。 しかも要求される微分積分は高度なものではなく、数学Ⅱ・Ⅲの知識で十分理解できる。\n本記事では、質点の運動方程式を微分積分によって、\n高校物理の力学に関して多くの公式が導出できること 例題の解答を通して、微分積分によって問題を解く方法 を確認する。\n公式の丸暗記のつまらなさを少しでも緩和できる一助になればいいな。\n力の定義；運動方程式 力とは物体を動かす原因らしいが、その根源はなんだろうか。 哲学的な問題だ。 昔は妖精がモノを動かしているのが力なのではないか？と大真面目に考える人もいたようだ。\nしかし、古典力学を創始したニュートンは一旦、 その問いを捨て、物理現象を説明することだけをゴールに設定した。 そして、以下の式(運動方程式)で、 宇宙から地上までのあらゆる物体の運動が説明できることを突き止めた。 ガリレオが1633年に天動説を否定した罪による裁判にかけられた僅か20年ほど後のことである。\n$$ m\\ddot{x} = F \\tag{1}$$\n\\(m\\)は質点(大きさのない理想的な物体)の質量 \\(\\ddot{x}\\)は位置\\(x\\)の二階の時間微分、つまり加速度 \\(F\\)は力 である。\nドットは時間微分を表す。 \\(\\ddot{x}\\)は位置の二階の時間微分であり、「エックス・ツードット」と読む。\n力とは質量と加速度の掛け算によって定義される。 これ以前は、力は速度によって決まる、という考え方もあったようだ。 しかし、速度ではなく、加速度が力を決定するという点が重要だ。\n[注] 運動方程式は慣性系でのみ成り立つ。 座標系自体が加速度を持って移動する場合、物体の動きを説明するためには慣性力を加味しなければならない[2]。\n位置、速度、加速度の関係 おや、加速度とは位置の２階の時間微分？なんのこっちゃ？ ここを理解し、運動方程式を積分して式変形ができるようになれば、 冒頭であげたような公式が即座に導出できるようになる。 そのための入り口が位置、速度、加速度を相互に式変形できるようになることだ。\n位置\\(x\\)は場所を表す座標そのものであり、微分されていない量だ。 ここでは簡単のために一次元の位置座標をもとに速度、加速度について考える。\n位置は時間によって変わる、つまり位置は時間\\(t\\)の関数である。 ある時刻\\(t_1\\)では\\(x(t_1)\\)にあるし、\\(t_2\\)では\\(x(t_2)\\)にあるだろう。\n速度\\(v\\)は位置の時間微分だ。 つまり、速度は時間の関数である位置が単位時間(１秒)の間にどれだけ変化するかを表す。\n$$ v = \\dot{x} = \\frac{dx}{dt}$$\n\\(\\dot{x}\\)はエックス・ドットと読む。\nでは、なぜ微分なのだろうか。 例えば、１秒間での位置の変化\\(\\frac{x(t + 1) - x(t)}{(t + 1) - t}\\)を速度として計算してはいけないのだろうか。 これは１秒間の平均速度であって、その瞬間の速度を表すには不適切だ。 速度を厳密に表現しようとするならば、\\(\\Delta{t}\\)の平均速度\\(\\frac{x(t + \\Delta{t}) - x(t)}{\\Delta{t}}\\)の\\(\\Delta{t}\\)を限りなくゼロに近づければよい。 この操作こそが微分なのだ。\n加速度\\(a\\)は速度の時間微分だ。 つまり、加速度は速度が単位時間あたりの変化量を表す。\n$$ a = \\dot{v}= \\frac{dv}{dt} = \\frac{d^2x}{dt^2} $$\n運動方程式の立て方 どんな力が物体に働いているかを見つければ、運動方程式(式1)を立てることができる。 その後は積分や問題文の条件を駆使して式変形すれば、機械的に問題を解くことができる。\n古典力学では次の２種類の力を探せばよい。\n重力：質量が受ける力 電磁気力：電荷が受ける力 力は粒子と粒子の間でで発生する。 この力は同一直線上かつ互いに逆向きに同じ大きさである。これを作用・反作用の法則という。\n重力は厳密には質点同士の間でも発生する。 しかし、地球の重力に比べたらゴミみたいな力なので無視してよい。 つまり、重力は地球由来のもののみを考えればよい。\n電磁気力は基本的には電気的に中性な物体に関しては発生しない。 しかし、中性な物体であっても、他の物体と接触するときに抗力としての電磁気力が生じる。\nまとめると、次の２つのみを気にすれば、力を見つけることができる。\n地球の重力 物体の接触面 例えば、質量\\(m\\)の人が地面に立って静止していて、 \\(\\ddot{x} = 0, \\ddot{y} = 0\\)のとき、 運動方程式は以下となる。地面との接触による力を\\(F\\)とおく。\n図１．地面の上で静止している人 $$ x方向：m \\cdot 0 = F_x \\\\ y方向：m \\cdot 0 = F_y - mg \\Leftrightarrow F_y = mg $$\n人が地面から受ける力は反射的に\\(mg\\)だと考えるのは間違いだ。 全ては運動方程式を解くことから導かれる。 人との接触面(地面)がある。 だから、何か抗力が働いているはずだ。 地面から\\(x\\)方向の抗力はゼロ、\\(y\\)方向の抗力が\\(mg\\)であることは運動方程式を解いた結果、はじめて分かるのだ。\nまた、本来なら、作用・反作用の法則に従って地球にも\\(+y\\)方向に\\(mg\\)の力がかかる。 しかし、ゴミみたいな力なので、図１に描くのは省いた。\n質点の落下の公式の導出 位置、速度、加速度の関係、運動方程式の立て方を確認した. 次は質点の落下の公式を微分積分を用いて証明してみる。\n最初、質点は\\(x=0, y=h\\)の位置にあり、\\(x\\)方向に初速\\(v_0\\)を与える。 また\\(y\\)方向の速度は0とする。\nこのとき、運動方程式は以下となる。\n$$x方向：m\\ddot{x} = 0$$\n$$y方向：m\\ddot{y} = -mg$$\nこれを式変形すると、\\(\\ddot{x} = 0, \\ddot{y} = -g\\)となる。これを時間で積分すると、\n$$ \\dot{x} = C_1 \\\\ \\rightarrow x = C_{1}t + C_2 $$\n$$ \\dot{y} = -gt + D_1 \\\\ \\rightarrow y = -\\frac{1}{2}gt^2 + D_{1}t + D_2 $$\n初期条件をもとに積分定数を決定する。\n$$ v_x(0) = \\dot{x}(0) = C_1 = v_0 \\\\ x(0) = C_{1} \\cdot 0 + C_2 = 0 $$\nよって、\\(x(t) = v_{0}t\\)\n$$ v_y(0) = \\dot{y} = -g \\cdot 0 + D_1 = 0 \\\\ y(0) = -\\frac{1}{2}g0^2 + D_{1} \\cdot 0 + D_2 = h $$\nよって、\\(y(t) = -\\frac{1}{2}gt^2 + h\\)\nエネルギーの導出 リクエストあれば追記\n角運動の導出 リクエストあれば追記\n参考 高校物理公式一覧 慣性系・非慣性系 ","permalink":"https://gotoh-it-school.top/basic-physics/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e高校物理で公式を暗記したくない方\u003c/li\u003e\n\u003cli\u003e高校物理の力学を公式に頼らずに解きたい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e高校物理の教科書には十分な証明や体系的な説明もなく、以下のような公式がたくさん登場する[\u003ca href=\"#ref\"\u003e1\u003c/a\u003e]。\u003c/p\u003e","title":"[公式を暗記したくない！]高校物理の公式を微分積分を使って導出"},{"content":"対象読者 オブジェクト指向は難しい、と感じている方 オブジェクト指向言語を使っても恩恵を感じられない方 結論 巷では、オブジェクト指向プログラミングを特徴づける要素として以下の３つが挙げられる。\nカプセル化 継承 ポリモーフィズム これらをまとめて、オブジェクト指向の三大要素と呼ぶ。\n現在の主要なプログラミング言語において、オブジェクト指向の理解は必須である。その入門というか基礎としてこれら三要素を教える記事や書籍も多い。\nしかし、これらはオブジェクト指向を使いこなし、高品質なソースコードを作るための土台となるどころか、むしろオブジェクト指向の理解を妨げる誤解を与えかねない。\n本記事では、オブジェクト指向の三大要素はオブジェクト指向を特徴づける要素ではないことを解説する。\nまずは、カプセル化とは非オブジェクト指向でも使われる技術であり、プログラミング全般の基礎であることを確認する。\nカプセル化はオブジェクト指向に限らず重要 よくある解説において、カプセル化は次の２点から説明される。すなわち、カプセル化とは、\nプロパティ(クラスが持つメンバ変数)をインスタンスの外部から操作できないようにアクセス修飾子をprivateとして定義することである。 プロパティへのアクセスはgetter/setterというpublicなメソッドを介することによって制約を与えるべし。なぜなら、インスタンスの外部から好き勝手にプロパティの値をいじる(値の更新や取得)と、意図しないデータ操作が生じ、エラーの温床になる可能性があるからだ。 上記の解説は間違っている、というかプロパティのカプセル化の一例を示しているに過ぎない。後述するが、ポリモーフィズムもカプセル化の一例である。\nカプセル化とは、隠すこと全般を意味する。隠すとは、外部との依存関係を断つことだ。外部から見えなくする、アクセスできなくする、などと言い換えることもできる。\nカプセル化とは抽象化でもある。抽象化とは、些末な要素を無視する(隠す)ことで本質を浮き彫りにすることだからだ。モデリングは抽象化によって物事をシンプルに説明可能にすることだ。\nといっても漠然としていて良く分からないので、オブジェクト指向の前身である手続き型プログラミングでもカプセル化が使われている例を次に示す。\n例えば、関数スコープ内でのみ使用される変数をローカル変数という。これは関数内部でのみ使用され、関数が値を返した後は捨てられる情報だ。つまり、外部(関数の呼び出す側)からはどんなローカル変数が存在するか知ることはできない。ローカル変数は関数内にカプセル化されている。\n同様に、関数は処理の詳細をカプセル化する。関数内部でローカル変数が使われているのか、またはロジックにif文やfor文が使われているのか等は外部からは知ることができない。関数はその名前と入出力のみを公開する仕組みであり、処理の詳細に溺れることなくシンプルに意図を伝えるような高級なソースコードを作ることができる(関数の重要性ついての詳細は[こちら]({{ relref \u0026ldquo;function-on-programming\u0026rdquo; \u0026gt;}}))。\nまた、詳細を隠蔽することによって、外部との依存関係がなくなる。これにより変更の影響範囲が限定され、安心して修正ができるようになる(保守性の向上)。\nこのように、カプセル化はオブジェクト指向を特徴づける固有の要素ではなく、綺麗なソースコードを書くための汎用的かつ基礎的な技術なのだ。\n差分プログラミング；継承の乱用は保守性を下げる原因 次は「継承がオブジェクト指向を特徴づける」という先入観の弊害を記す。\nショボい入門書では、継承についてのメリットが次のように説明される。すなわち「継承は、親クラス(基底クラス、スーパークラスとも)で定義したプロパティやメソッドを子クラス(具象クラス、派生クラス、サブクラスとも)で再利用できるため、コーディングの効率を高めることができる」と。\nしかし、再利用の技術はオブジェクト指向以前に既にあった。そう、関数だ。処理を再利用したいのなら、別に関数で事足りるはずだ。継承による再利用がオブジェクト指向の根幹の１つだとしたら、手続き型に対するオブジェクト指向の優位性はどこにあるのだろうか。この問いに答えれない方は継承の乱用という悪の道にハマるかもしれない。\n「継承によるメソッドの再利用によって、コーディングが爆速になるじゃん！ビバ、オブジェクト指向！」という考え方は差分プログラミングと呼ばれる。継承による再利用は、既存メソッドからの追加分や修正分という差分のみを書き足すことによってコードの変更を可能にしたからだ。\nオブジェクト指向が主流でなかった昔、差分プログラミングはオブジェクト指向の良さを宣伝する謳い文句として使われた。その甲斐もあってか、オブジェクト指向言語が普及した。プログラマへ楽園がもたらされるはずだった。しかし、差分プログラミングによって継承が乱用されることで、以下のような問題が生じた。\nオーバーライドの多用はそのメソッドの処理内容を理解を難しくした；そのメソッドを理解するためには、複数の親クラスの定義を追わなければならなくなった。 親クラスの修正の影響を受ける子クラスや孫・子孫クラスの数が多くなって、保守性が下がった。 このように、差分プログラムはカプセル化を破壊し、プログラマにユートピアではなくディストピアをもたらした。ひょっとしたら、無駄に複雑なオブジェクト指向よりも手続き型の方が良かったのではないか、とすら思わせるほどに。\nいや、そんなはずはない。オブジェクト指向は手続き型の弱点を克服するために生まれた技術だからだ。問題の原因は継承自体ではなく、継承の乱用にある。\nオブジェクト指向の最も基本的な原則として「単一責任の原則」がある。要は、１つのクラスには１つの役割のみを持たせるべし、という原則だ。単に再利用をしたいがための継承は、このような責任分割を侵し、低凝集・高結合な低品質なソースコードへと至る。継承 = 再利用　という先入観にはこのようなリスクがある。\nポリモーフィズムとは具象クラスのカプセル化に過ぎない 最後の要素はポリモーフィズム(多態性)だ。これは継承とセットで説明されることが多い。\n良くある動物クラスの例では次のように説明される。すなわち、「barkメソッドを持つ動物クラスを継承したCatクラスとDogクラスがあって、それらのインスタンスはどのクラス由来か意識せずともbarkメソッドが呼び出せる。」みたいな感じだ。\nポリモーフィズムは、同じシグニチャ(名前、引数、返り値の型)のメソッドを持つクラスのインスタンスならば、どのクラスかを区別しなくても同様にそのプロパティやメソッドを参照できることをいう。これを同じインターフェースを持つともいう。規格さえ同じならば、どこの誰がどのように製造した部品でも構わない、という標準化の考え方に似ている。\nポリモーフィズムが意味するのは、具象クラスが実際に何であるか、という詳細は気にしなくていい、ということだ。上の例では、どの具象クラスかは知らんけど、barkメソッドを持つことは分かっている。というか、barkメソッドを持っていること以外は興味ない、ということだ。これは具象クラスのカプセル化に他ならない。ポリモーフィズムはカプセル化の一例なのだ。\n呼び出し側からはどの具象クラスかは分からない、ということは言い換えると「他の具象クラスと差し替えても、同様に動作させることができる」ということだ。すなわち、同じインターフェースを持つ具象クラスによって差し替えるだけで、処理内容を変更することができることを意味する。このようにポリモーフィズムによって、拡張性を向上することができる。\nしかし、ポリモーフィズムはカプセル化の一部であり、オブジェクト指向の三大要素として、カプセル化と同レベルで並べられていることには違和感がある。\nオブジェクト指向の三大要素は独立・直交した概念ではない 以上のように、オブジェクト指向の三大要素はそれぞれがオブジェクト指向を特徴づける要素ではないことが分かった。\nさらには、三大要素はそれぞれ関連していたり、部分の関係だったりする。再利用のためだけに継承を多用することは保守性を下げるし、ポリモーフィズムはカプセル化の一例であった。なぜ、カプセル化、継承、ポリモーフィズムがオブジェクト指向の三大要素などと呼ばれ、同じレベル感で並べられるのか分からないし、それは不適切ですらある。\n図１．オブジェクト指向の三大要素の構造 では、オブジェクト指向を有効に使いこなすために重要なもの、つまりオブジェクト指向を特徴づけるものは何だろうか。それは「単一責任の原則」だが、それはまた別の機会に述べようと思う。\n参考 オブジェクト指向のこころ [アラン・シャロウェイ] ","permalink":"https://gotoh-it-school.top/3-major-elements-of-oop/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eオブジェクト指向は難しい、と感じている方\u003c/li\u003e\n\u003cli\u003eオブジェクト指向言語を使っても恩恵を感じられない方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e巷では、オブジェクト指向プログラミングを特徴づける要素として以下の３つが挙げられる。\u003c/p\u003e","title":"[理解できない人を増やすだけ]オブジェクト指向の三大要素という嘘"},{"content":"対象読者 オブジェクト指向の原理原則が取っ付きにくい方 ドメイン駆動設計(DDD)などのプラクティスを使用してもコード品質が良くならないと感じている方 結論 コーディングスタイルはプログラマの宗派・思想・趣味嗜好の数だけ存在する。 当然、みんな違ってみんない良い訳ではない。 良い方法はプログラミング原則または無数のテクニックとしてまとめられていたりいなかったりする。\nどれが最善の方法なのかも分からないし、 そもそも良い手法を理解すること自体も難しい場合がある。 例えば、SOLIDの原則やらデザインパターンは抽象的で難しい。\n_しかし、人間がプログラムを読み書きする以上、良いプログラムは人間の認知能力_に則したもののはずだ。 故にリーダブルであることが良いコードの条件と一般的に言われる。ただ、リーダブルという指針も抽象的で応用しづらい。\nそこで、本稿は良いプログラムを書くための具体的かつ明解な原則を提案する。 すなわち、「一度に把握すべき情報の数をマジカルナンバー4****以下にせよ」だ。 常に4個程度の情報にブレークダウンできる構造にせよ、とも言い換えられる。\nマジカルナンバー4；ヒトが把握できる情報の数 マジカルナンバーとは人間が短期記憶に保持できる情報の数だ。 一度に把握できる要素数の上限とも換言できるだろう。 マジカルナンバーには以下のように２つの説がある。\nマジカルナンバー７：マジカルナンバーは7±2とする説(1956年） マジカルナンバー４：マジカルナンバーは4±1とする説(2001年) 新しく提唱されたマジカルナンバー４の方が妥当とされているようだ[1]。 さらには近年では「マジカルナンバー4」の最小の数字である「マジカルナンバー3」も浸透し始めているらしい[2]。\nこのように、意外にも人間が把握できる情報量は少ない。 聞き慣れない概念や業務内容についての話が理解しづらいのも当然だ。 同様に巨大なメソッドやクラス、トランザクションスクリプトも理解しづらい。\n情報のかたまり「チャンク」 ヒトは高々4個程度の_情報_しか一度に扱えないらしい。 あれ？おかしくないだろうか。 それにしてはコミュニケーションが高度過ぎやしないか。 ちょっとした短文でも大量に情報がやり取りできる場合もあるし。\n雑にマジカルナンバーを説明してしまったことをここに謝罪する。 より正しくは「人間が短期記憶に保持できるチャンクの数」だ。\nチャンクとは「情報のかたまり」のことで大小さまざまだ。 大きいチャンクを用いることで高度な（多くの）情報伝達が可能となる。 チャンクを大きくすることを「抽象化」と呼んだりする。\nチャンクを大きくする例：電話番号 電話番号は11桁程度の数字の羅列だ。 すでにマジカルナンバーを超えてしまっているので、 ヒトが電話番号を覚えるのは容易ではない。 そこで「xxx-yyyy-zzzz」みたいに番号を３つにグルーピングする。 つまり、11個のチャンクをマジカルナンバー以下の3つのチャンクにまとめると把握しやすくなる。\nプログラム言語はチャンクを大きくするための仕組み プログラムの一番低級な表現は機械語（0か1のバイト列）である。 無機質なバイト列はすぐにマジックナンバー以内で扱いきれなくなる。 人間には理解困難であり、まさに機械のための表現だ。\nそこで人間が理解し易い表現が要請された。 そして発明されたのが高級言語、いわゆるプログラミング言語だ。 高級言語を使用する時点で、ソースコードをリーダブルに書くことが自動的に目標となるはずだ。\n故に、高級言語（特ににオブジェクト指向の）では大きなチャンクを扱う（抽象化の）ための機能が提供されている。\nデータ型（プリミティブ型） 関数 クラス（or 自作データ型） インターフェース（or 抽象クラス） etc. たとえば、プリミティブ型のInt型は32バイト（32チャンク）を整数という１チャンクとして扱えるようにしてくれる。 関数は複数の手続きを１つにまとめる。 クラスはデータと手続きを１つにまとめる。 インターフェースは個別の具象クラスを同一視する。\nしかし、これらの機能は抽象化という目的からは誤用されることが多い。 以下ではマジックナンバーの原則のアンチパターンを列挙していき、本旨を裏付けていく。\nアンチパターン１；４つ以上の引数をもつ関数・メソッド 引数が４，５個くらいある関数は使いづらいし読みづらい。 引数の何番目に何の値を入れればいいんだっけ？となる。 引数が３個でもちょっと多いかなと個人的には感じる。なぜなのだろうか。\n関数の外面？は以下の３要素で決まる。 内部の詳細を気にせずに関数を使用するために把握すべき情報とも言い替えられる。\n関数名 引数の型 返り値の型 すでに関数名と返り値の型で２チャンクを占められているため、\n追加機能はモデルを再設計する機会　いふ文とかで誤魔化さない\n機能の共通化までの視点しかない 責務を明確に定義する 前者にはドメインを深く捉えたモデルを構築しようとする気概がまだない。 うまく処理を分割して、インターフェースによって切り替えを行うことはできない。 保守のときに、この機能を変更、追加したいという要望に対して、前者には応えられない。 共通化という視点だけでは、長いメソッドでも無頓着に許容してしまう恐れがあるから。\nマジカルナンバー 同時に認識するチャンクを常に7個以下にする チャンクを大きくする仕組み:関数、クラス 手続き型の限界 継承の限界 関数は20行程度にすべし クラスのメンバは7個以下にすべし 参考 マジックナンバー7±2の間違いと真実 マジカルナンバー7±2（ミラーの法則） ","permalink":"https://gotoh-it-school.top/pyschological-programming-principle/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eオブジェクト指向の原理原則が取っ付きにくい方\u003c/li\u003e\n\u003cli\u003eドメイン駆動設計(DDD)などのプラクティスを使用してもコード品質が良くならないと感じている方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eコーディングスタイルはプログラマの宗派・思想・趣味嗜好の数だけ存在する。\n当然、みんな違ってみんない良い訳ではない。\n良い方法はプログラミング原則または無数のテクニックとしてまとめられていたりいなかったりする。\u003c/p\u003e","title":"良いコードの原則 ~ヒトの認知的限界「マジカルナンバー4」~"},{"content":"対象読者 プログラマの思考法を知りたい方 プログラミングに興味がある非プログラマの方 プログラミング初心者の方 結論 プログラムは実体がなく、イメージしづらい。しかも、横文字の用語も沢山あって、初心者の方にはかなり取っ付きにくい。 なおかつ、コードを綺麗に書くための工夫やら規則やらもある。\n「〇〇は△△すべし」みたいなプログラムテクニックも無数にあって、混乱に拍車をかける。\nしかし、このような多様なプログラミング技術は、「抽象」というキーワードから一貫して説明できる。 この理由を本記事で押さえれば、より効率的に学習を進めることができるはずだ。\n以下では、\n人間の認識＝抽象化 プログラミング言語はそもそも抽象化の産物 うまく詳細を捨て、抽象化することが良いプログラミングへの方針 ということを示す。\n抽象化とは削ぎ落すこと 「抽象化」という言葉自体が抽象的で理解しづらいが、身構える必要はない。 単に、抽象化とは、重要な部分を残して詳細を捨てることだ。そう、捨てるだけだ。こう考えると、抽象化は具体的な操作だ。\nそうして残った重要な部分を**「抽象」**というに過ぎない。 これを裏付けるように「”捨”象」という抽象の同義語が存在する。\nしかし、何を以ってどの要素を重要と見做すのだろうか。 それは状況によって異なってくる。何が重要で何を捨てるか、 という方針・見方を**「モデル」といい、モデルを見出すことを「モデリング」**という。\nしかし、様々な状況が変わる中でも、一貫した価値観があったりする。 宗教観などが良い例だろう。宗教は色んな出来事に一貫した解釈を与える。\nこのように、様々なモデルがあり得る中でも、一貫したモデルを与えるような価値観を「パラダイム」という。\n(高級)プログラミング言語とは抽象化の産物 唐突になんだ？って感じだが、実は、プログラミングとは抽象化・モデリングに他ならない。 まずプログラミングを学習すると、文法がどうだとか、関数やらクラスやら、いろいろ覚えることがある。 しかし、そんなことは手段でしかない。 コンピュータ上で問題をどう捉えて、その解決をどう表現するか。これがプログラミングだ。\nプログラムのモデリングやパラダイムの数だけ、プログラミング言語が存在する。例えば、\n簡単にWebアプリを作りたい、という目的で作られたのがPHP 誰もがソースコードを綺麗に書くようにしたのがPython 計算を数式のように簡潔に扱えるようにした最初の言語がFortran オブジェクト指向というパラダイムによって設計された言語がJava である。\nまず、問題を捉えることの出発点を説明する。\n人間の認識能力の限界が抽象を必要とする ヒトは現象をそのまま理解することはできない。 認識の第一段階は感覚器官への入力だ。 絶え間なく同時に入ってくる5種類の時系列データが人間の思考の土台だ。\n視覚の入力だけでも膨大な情報量だ。 時間と平面という3次元の連続的な情報は、膨大どころか無限といっても差し支えないだろう。\n無限の情報量は人間の認識を超えている。 例えば、ヒトは風景画を写真のようにそのまま描くことはできない。絵の描写は以下のような手順で行われる。\nまず、目立つ物体を把握して書く 目立つ物体の周りに次に目立つものを書き加えていく (2)の繰り返し このように、ヒトは大枠を把握(抽象化)し、その上で徐々に詳細化していくことしかできない。 逆に言えば、そもそも人間がモノを把握するためには、適切に詳細を省く必要がある。\n史観というモデル 認識が抽象を必要としたのと同じ理由で、人間に歴史を扱うことはできない。 なぜなら、歴史とは本来、無数の人による無限のイベントの時系列のことだからだ。\nだから、学校で習う世界史や日本史は正確な歴史を扱えていない。 有力な人物の行動や、当時の主な世論、風俗など、特筆すべき点を抽出してまとめただけだ。 無数の出来事の集合から意味を見出すには取捨選択が必要となる。\nこの抽出の仕方がモデルであり、「史観」と呼ばれる。\n例えば、自虐史観というのは、「日本は第二次世界大戦において、非道なことをした悪い国である」というモデルありきで、 そのモデルに合うように出来事を取捨選択し、解釈する。\nだから、歴史は英語で「his - (s)tory」であり、物語なのだ。\nプログラミングにおける抽象と具象 コンピュータにおいて、データはオンとオフの2種類の状態の羅列として表現される。 オン・オフの羅列を「機械語」という。\n昔、プログラム(データの処理方法)とはケーブルの配線を意味していた。 それが電気の扱いや磁器メモリが発達したことにより、プログラムも機械語として表現できるようになった。 これを「プログラム内蔵式」または「ノイマン式」という。 ノイマン式を経て、コンピュータ上の処理の全ては機械語で表現できるようになった。\nしかし、機械語という膨大で無味乾燥した情報は人間の認識能力を超えている。 そこで、機械語を抽象化し、人間にとって扱いやすくしたものが「高級プログラミング言語」である。 一般にイメージされたり、仕事で使われるプログラミング言語はほとんどが高級である、と思って差し支えない。\nプログラミングにおいて、より抽象的であることを「高級」、**より具体的であることを「低級」**という。 この「低級」という言葉に侮蔑の意味は含まれていないことに注意だ。\n非予約語による抽象化こそがプログラミングの肝 良いプログラムは抽象化の先にある プログラミングの中でも、具体的にコードを書くことをコーディングという。 コーディングとは、予約語と非予約語を文法に従って配列する作業のことだ。\n予約語とは、「プログラミング言語が提供する既存の語彙」のことだ。 予約語以外の語彙、つまり**プログラマが自作できる語彙を「非予約語」**と呼ぶことにする。\n非予約語とは、自作した抽象に名前を付けたものだ。 非予約語は文法に従って、予約語や非予約語を組み合わせて作られる。 これを積み重ねていき、より高級な非予約語の集合を練り上げることで、 人間にも読みやすく、機能追加や修正もしやすいコードは作られる。\n文法を知っていて、動くコードが書けることはプログラマとしての最低レベルだ。 非予約語を駆使して良いモデリングを行う能力こそが良いプログラマの条件だ。\n文法と抽象化の両輪 ほとんどの高級言語で共通する代表的な非予約語に以下のような種類がある。\n変数 関数 クラス 文法を学ぶと、これらの非予約語は一通り覚えることになる。 しかし、プログラミング初心者がこれらを適切に使いこなすことは難しい。 非予約語を用いて抽象を練り上げずとも、動くコードは書けてしまうからだ。\n同様に、ある程度の実務経験のあるプログラマですら抽象を使いこなせなかったりする。 豊富な経験からコーディングは難なくこなせる。 だが、分かりやすく、保守しやすいコードが書ける、つまり抽象能力は経験だけでは培われない。\n良いコードを書くためには、なぜ抽象化するか、という文法の背後にある意味を押さえなければならない。\nそれでは、これら３つの代表的な非予約語のそれぞれについて、\n何を抽象化したものか その抽象化から道を踏み外した悪い例(アンチパターン) を説明する。\n変数という抽象 変数とは、データ(機械語)を抽象化して保存するための非予約語だ。 数学の変数とは別物であることに注意だ。\nデータの格納場所のことを「アドレス」という。勿論、アドレスも機械語として表現される。 本来、データを保持する際、\nアドレスはどこにするか どれだけのメモリを確保すべきか 等を指定しなければならないはずだ。\n変数はそれらの機械語を意識せずに、直観的にデータを扱うことを可能にしてくれる。\nデータ型という抽象 データは全て機械語として扱われる。 データには、文字列や整数、実数などいろんな種類があり、機械語の並びの意味が異なる。\n例えば、文字\u0026quot;a\u0026quot;の機械語の表現は「01000001」である(ASCII)。 しかし、これを正の整数として解釈するなら、 つまり2進数として読めば、\\(1 \\times 2^6 + 1 \\times 2^0 = 65\\)となる。\nやはり、機械語だけ見ても意味不明だ。 そこで、機械語を意識せず、高級に扱うための仕組みが「データ型」である。 データ型は機械語の解釈の仕方を予め定義することによって、機械語を意識せず、直観的にデータを操作できるようにしてくれる。\nどういう機械語の並びなのか ２つのデータの演算は機械語でどうやって行うか という低級なことを考えずに済み、人間はより高級な、創造的なことに頭を使うことができる。 変数とは、データ型とアドレスの隠蔽を併せたものだ。\nリテラルという抽象的な具象 機械語を使わず、データを直接書き下したものを「リテラル」という。 ベタ書きされているため、リテラルは変更不可能な固定された値となる。\nリテラルを変数へ格納する例をPythonで示す。\n#文字列リテラル characters = \u0026#34;abcd\u0026#34; #数値(整数)リテラル integer = 1234 #数値(実数)リテラル real = 12.34 機械語が隠蔽されている、という意味でリテラルは抽象的だ。 しかし、値が剥き出しになっていて、具体的過ぎる。 具体的なリテラルはコードを分かりづらくすることを次に示す。\nマジックナンバーというアンチパターン 以下は何かしらの計算を行っているコードだ。\nvalue = 10 * 20 / 2 なんのこっちゃ。では、リテラルではなく、変数を使ってみよう。\nlength = 10 height = 20 area = length * height / 2 三角形の面積を計算していることが分かるだろう。\n変数によってリテラルに適切に名前が与えられたことで、 コードの意図を表現できる。抽象化によってコードが改善できるのだ。\n数値リテラルのことを特に「マジックナンバー」といい、 コーディング作法の本には悪い例(アンチパターン)として載っている。\nこれらのコード例は短く、そこまで不都合を感じないかもしれない。 しかし、業務レベルのコードはもっと巨大であり、 マジックナンバーが積み重ったコードはかなり読みにくいことは想像に難くないだろう。\n関数という抽象 (自作)関数とは、データの処理をまとめあげるための非予約語だ。 具体的にどんな処理をしているのかは分からないが、 入力を与えれば、それをなんか処理してれる。 つまり、関数はデータ処理の抽象のことだ。\n因みに、データの操作に関する予約語のことを特に「組み込み関数」という。 関数を自作する素になるという意味で、変数に対するリテラルのようなものだ。\n例えば、三角形の面積の計算は関数化できる。入力は底辺と高さで、出力が面積だ。\nfunction calcTriangleArea(length, height){ return length * height / 2 } area1 = calcTriangleArea(10, 20) area2 = calcTriangleArea(20, 30) 文法が分からなくても、何となく意味は通じるだろう。予約語と非予約語による抽象の賜物だ。\nコピペというアンチパターン 関数化(処理を抽象化)したことによって、面積の計算の処理が再利用できるようになった。 しかし、変数とリテラルしか使わない場合は、以下のように同じ記述を繰り返すことになる。\nlength1 = 10 height1 = 20 area1 = length1 * height1 / 2 length2 = 20 height2 = 30 area2 = length2 * height2 / 2 初心者の方はコピペして、ちょっと修正することで似た処理を書いていがちだ。\nマジックナンバーの例と同様に、コードが短すぎて関数化して何が嬉しいかは伝わりにくいと思う。 だが、より複雑で長いコードで想像して欲しい。\n同じ処理であることは全文を読まない限り分からない。 その上、そのブロックの記述にマジックナンバーが使われていたり、 別の処理が追記されていた場合、処理の重複を見つける難易度は高くなる。\nコードは短いほど分かりやすく、加筆・修正もしやすい。 故に、関数を使った再利用は重要だ。 処理の抽象(関数)が見いだせているのなら、コピペによるいたずらなコード膨張を防ぐことができる。\n処理ブロックにコメントをつけるアンチパターン コメントとは、プログラムの動作に影響しない注釈のことだ。 初心者の方はコメントは書くべきだと習う。 だから、いたずらにコメントを書き連ねがちだ。\n上記のコードにコメント付けてみよう。\n# 三角形１ length1 = 10 height1 = 20 area1 = length1 * height1 / 2 # 三角形２ length2 = 20 height2 = 30 area2 = length2 * height2 / 2 何か分かりやすくなっただろうか？\n本来、コメントとは、コードで表現できないような情報を書くべきなのだ。例えば、\n他の書き方があったにも関わらず、なぜこの実装を選んだのか このコードの弱点 改善案 等だ。決して、コードを読めば分かるようなことにコメントを使うべきではない。\nコメントには、\n読むべき文章量を増やしたり、 コード変更に際してのコメント更新忘れ 等のデメリットが存在する。\n適切に抽象化できているのなら、関数名によって、コードの概要は説明できるはずで、 わざわざコメントを書く必要はないはずだ。 処理内容を関数名だけで説明できない場合は、 本来まとめてはならないような複数の処理を無理やり関数化してしまった可能性がある。\nクラスという抽象 クラスとは、オブジェクト指向と呼ばれるパラダイムの基本的な抽象だ。\n変数と関数は完全に無関係な訳ではない。 特定の変数に対応する関数があるはずだ。 ならば、**関連する変数と関数をまとめちゃおうよ。**これがクラスだ。\n変数と関数という抽象をまとめたクラスは、より高級な抽象と言える。\n関数には入力を与えなければならなかった。 ところが、クラスが持つ関数(メソッドという)は入力せずともクラスが持つ変数(プロパティという)を処理に使うことができる。 これにより、関数の入力の数を減らすことができ、よりスマートに問題を表現することができる。\nクラスの文法はちょっと複雑で、本記事の範囲を超える。 なので、クラスの定義の部分は省いたコードを示す。\n# クラスの作成 tri = Triangle(三角形の情報) # 面積の計算 area = tri.calcArea() # 重心の計算 center = tri.calcCenter() 文法を知らなくても、何となく伝わるだろうか。 クラスも変数として扱うことができる点に注意だ。\n面積や重心は三角形が持つデータだけで計算できるはずだ。 底辺と高さ、という情報だけでは無理かもしれないが、 その場合は必要な情報を三角形クラスに追加すればよい。\nこのようにクラスを使うことでどの変数とどの関数を組み合わせればいいか、 というような詳細を気にせずに、 より高級に問題を扱うことが可能となり、コードを簡潔に表すことができる。\n神クラスというアンチパターン クラスを使えば、関数への入力を省略できる。 また、他にもクラスには継承と呼ばれる便利な機能があったりする。\nなので、初心者の方は１つのクラスに色んな変数や関数を詰め込んでしまいがちだ。 そういう**多機能すぎるクラスのことを「神クラス」**という。 「全知全能である」、または「そんな複雑なクラスを理解できるのは神だけ」という意味が込められている。\n三角形の面積などを計算するクラスが例えば、 ユーザーのメールアドレスなどを持っていたら問題だ。 そのようなクラスははたしてどんな抽象なのだろうか。\n関係のないものをゴチャ混ぜにした抽象を理解するためには、 具体的にその中身を確認しなければならない。 それでは抽象化の意味がない。 理解するのが困難なコードになる。\nまとめ 以上、基本的な非予約語について、\n何を抽象化したものか その抽象化の意味に合わないと、良くないコードが出来上がる ことを確認した。\n抽象についての理解が、プログラム全般をスマートに理解する鍵だ。\n参考 レガシーコードからの脱却[David Scott Bernstein (著), 吉羽 龍太郎 (翻訳), 永瀬 美穂] 論理学　考える技術の初歩[エティエンヌ・ボノ・ド・コンディヤック] 不勉強が身にしみる 学力・思考力・社会力とは何か[長山 靖生] ソフトウェアの20世紀―ヒトとコンピュータの対話の歴史[長谷川 裕行] ","permalink":"https://gotoh-it-school.top/abstraction-on-programming/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eプログラマの思考法を知りたい方\u003c/li\u003e\n\u003cli\u003eプログラミングに興味がある非プログラマの方\u003c/li\u003e\n\u003cli\u003eプログラミング初心者の方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eプログラムは実体がなく、イメージしづらい。しかも、横文字の用語も沢山あって、初心者の方にはかなり取っ付きにくい。\nなおかつ、コードを綺麗に書くための工夫やら規則やらもある。\u003c/p\u003e","title":"[文法以前の超入門]プログラミングの本質は抽象化にある"},{"content":"対象読者 CAE技術者について、以下のようなことを知りたい方\n業務内容 生き残るために必要なスキル 将来性 結論 タイトルの通り、私はCAE技術者からWeb系エンジニアへと転職した。その理由を要約すると以下だ。\nCAEに要求される職人技の将来性がない プログラミングによる自動化スキルこそが生産性を決定する プログラミング技術を伸ばすのにCAE界隈は適していない 私はもともとCAEよりもITに興味があって、力学や数値計算の勉強をそっちのけでプログラミングの勉強に時間を費やしてきた(私の経歴)。 そんな偏見も込みの意見だということに注意していただきたい。\nだが、本記事はCAE技術者、ひいてはITを使用する職種にとって、ITの根幹にあるプログラミングこそが重要であることを示唆する。\nまずはCAEとは何かを論じ、CAEの性質上、プログラミングが重要となる理由を示す。\nCAEの概要 CAE(Computational Aided Engineering)とは、高性能な機体・装置を作るための試行錯誤をコンピュータ上のシミュレーションで一部代替することである。 実物を一々作って実験するのでは、\nコストがかかりすぎる 測定が難しい部分がある 等の問題があり、それを計算(Computational)によって支援する(Aide)。これがCAEだ。\n高性能な機体形状を模索するという目的の性質上、CAEには以下のように膨大な作業量が要求される。\n計算条件を少しずつ変えて、大量ケースを計算し、 それらの計算結果を比較・分析し、 その分析結果を機体・装置の形状設計にフィードバックする 以上が主なCAEの業務だ。 詳細な業務工程を知りたい方はこちら。 これらの作業には以下のように専門知識が要求される。\n専用ソフトの使い方を運動神経に覚えさせること (熱流体、材料)力学などの知識 数値計算の知識 しかし、実務上これらの専門知識は必須ではない。\n専門知識は外注できる そもそも、CAEを必要とするモノづくり(航空機や車)は大規模な組織によって行われたりする。 そのため、中央集権的な業務環境の中CAE技術者は働くことになる。 すなわち、決断するブレインと判断材料を提供する実務者(CAE技術者)に二分される。\nブレインは高学歴エリートであり、力学や数値計算、機体の知識に精通している。 しかし、CAEの専門知識に欠ける。 そこをアシストすることがCAE技術者に求められる。 つまり、力学的・数値計算的な判断はブレインに任せることができる。\nもちろん、力学や数値計算を自前で理解することは望ましいし、CAE技術者として一人前になるためには避けて通れない道だ。 CAEの条件設定のために力学・数値計算の知識が必要だ。\nだが、大量ケースの計算が目前にある状況では、独力での計算条件の設定やその結果の考察などよりも大量な作業を捌けるCAE技術者の方が重宝される。 それを実現するために必要となるのが、プログラミングを駆使した自動化スキルだ。\nCAE職人の厳しい未来 しかし、現状ではCAEを完全自動化することは難しい。 複雑形状に適合した計算格子は職人技でしか実現できず、CAE自動化のネックとなっている。 だからこそ、必要悪としてCAE職人は重宝される。 しかし、職人への道は避けるべきである。\n職人技が完全自動化される未来 職人依存から脱却するため、計算格子作成の自動化に関する研究開発が盛んに行われている。 昨今のAI技術の発展により、ブレイクスルーが起き、格子職人はお払い箱になる未来が来るかもしれない。\n私も転職前の2年間ほどはAIによるCAE自動化の研究開発を行っていた。 今後はCAEツールを使いこなせることよりも、ツールを開発する側の方がより大きなウェイトを占めることは間違いない。\n格子作成のスペシャリストよりもプログラミングできる人材が欲しい、という意見もあったほどだ。\n独立が難しい CAE技術者として独立することも厳しい。 なぜなら、以下のようにCAEには膨大なコストがかかるからだ。\n各種ツールのライセンス料は月額100万と高額になるものもある シミュレーションも莫大な計算リソースを要する これらを個人で賄うのは難しい。組織に属する以外にCAEで食っていくことは難しそうだ。\n特定のツールを極めることのリスク CAE業務のほとんどは専用のソフトウェア(ツール)を用いての作業となる。 それぞれのツールを自在に使いこなせるようにならなければ仕事にならない。\n手順 GUIの把握 視点の操作 ショートカットキー など、いろいろ覚えなければならない。\nしかも、同目的のツールにも様々な種類があり、職場によって使用するツールは異なる。 基本的な考え方は同じだが、当然操作方法は異なる。\n１つのツールに習熟していることは他の同種のツールを使う上で無駄にはならないが、その運動神経は使い続けていないと維持できない。 仕事が変わると、その技能は失われてしまうので、より汎用的な技能であるプログラミングスキルの方が価値があるように思う。\nCAE界隈の低レベルなプログラミング技術 ということで、CAE技術者の生産性にプログラミングスキルは大きく寄与する。\nしかし、以下の理由から、CAE界隈のプログラミング水準は低い。\nCAEの完全自動化は難しく、手作業でゴリ押しする風潮がある 過去の膨大なコードを再利用するために、古い言語Fortran90が使われ続けている 機密が多く、オープンでナウいソースコードに触れる機会が少ない 自動化への低意識 CAEは多数の職人集団によって行われる。 彼らはツールに習熟しており、素早く成果物を作成できる。 だから、プログラミングは必要に迫られて仕方なくやるものであり、自動化しようとする機運は低い。 だって、不慣れなプログラミングに時間を割く代わりに職人技でチャチャっと仕上げられるのだから。\n自動化の余地を虎視眈々と見出し、明日の自分たちが少しでも楽になれるように自動化ツール作成に投資することが生産性向上に繋がる。\n自動化によって浮いた時間 その時間を勉強やさらなるツール作成に投資 より時間が浮く という好循環が生まれ、生産性を指数関数的に向上させられるはずだ。 だが、そのような気持ちを持つ職人は少ないのは上述の通りだ。\n閉鎖的文化、古いプログラミングスキル ということで、自動化マンを志すとしよう。 だが、その志はCAE界隈では厳しい道となる。 古く閉鎖的な文化だからだ。\n故に、自動化ツールは自分の業務効率化のためだけに作られがちである。 小規模で汚い自動化ツールがCAE技術者ごとに点在する。\n”汚い”というのは、読みにくく、変更や機能追加がしづらい、という意味だ。 大規模だとたちまち保守不能に陥るが、小規模ならば汚く書いても問題になりにくい。 だからこそ、低いプログラミングスキルでどうにかできてしまう。\nまた、Fortran90のような古い言語は手続き型だ。 現在、オブジェクト指向は必須なのに古いプログラミングに縛られてしまっている。 だから、最新のオープンソースのフレームワークやライブラリの扱いが分からず、手続き型で自作して対処しようとする。 新しいプログラミングを取り込む文化が弱い。\nCAE技術者の最重要スキルはプログラミング 膨大な作業量が求められるというCAEの性質上、職人技のみの対応には限界がある。 だからこそ、専門知識よりも自動化が重要であり、職人技がどんどん不要になっていく未来が訪れる。\n今後生き残るためには、CAEのより上流、すなわち\nCAE自体の自動化 CAEツールの開発 のような業務スキルが大切になりそうだ。 プログラミングスキルが今後の生き残りのために必要だと思う。\nブレインとしての地位を高めるという道もあるが、それは他のIT業界では通用しない プログラミングを学ぶには環境が悪い だから私は最も汎用的なWebを扱う業界に転向しようと思ったのだ。\nappendix 著者の経歴 私は以下の2点を理由に、プログラミングもCAEも分からない学部卒の状態から航空宇宙関連のCAEエンジニアとして就職した。\n物理や数学が好きだった ITに将来性を感じた そして、以下のような業務経験(古い順)を積んだ後、5年間の在籍期間を以って、Webエンジニアへと転職した。\n某重工向けCAE業務 某重工向けコードの開発 某研究機関にて、AI関連の研究・開発 最後の仕事「AIの研究・開発」は、単なるCAE技術者にとっては得難い経験で将来性がある有望な立場にいられた。 だが、転職した。\nCAEの工程の詳細 上述のとおり、各工程において、\n専用ソフトの使い方を運動神経に覚えさせること (熱流体、材料)力学などの知識 などの専門知識が要求される。\n形状データ作成 シミュレーションを行うためには、実機の形状をコンピュータ上で再現しなければならない。\n図面という2次元情報から3次元をイメージする能力 方程式で表せる数学的な曲線で再現できない箇所は手作業で調整 ソフト間の互換性がない形状データが崩れたりしたときの修正 機体への知識 などの能力や作業が要求される。\n計算格子作成 計算格子とは、形状データをベースとして、機体やその周りの空間を模擬したものだ。\n計算格子作成の難易度は形状データの複雑さに比例する 計算格子の品質は次の工程に影響を及ぼす ため、最も職人技を要求される。\nソルバーによる計算 ソルバーとは、運動法則をプログラムしたもので、シミュレーションを行う主役だ。 計算格子と計算条件を入力し、シミュレーション結果を出力する。 計算自体はあまり手間ではない。 実行するだけだからだ。 ただ、計算が上手く行かない場合、地獄を見る。\n計算格子作成への手戻り 計算モデル・条件の変更 計算が上手くいくかどうかチェック(ある程度計算してからではいと分からないので、待ち時間が生じる) を繰り返さなければならず、かなりダルい。\n計算結果の可視化、解釈 シミュレーション結果はただのバイナリデータとして吐き出されるため、人間には理解不能だ。 そこで、人間に解釈可能な情報を計算結果から取り出さなければならない。そのためには、\nシミュレーションの可視化 力学への理解 を元にどこに着眼べきかを判断しなければならない。 そして可視化した結果を力学や数値計算の知識を基に分析し、 性能向上のために機体形状をどのように修正すべきかフィードバックするのがこのフェーズの役目だ。\n","permalink":"https://gotoh-it-school.top/cae2web-job-change/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cp\u003eCAE技術者について、以下のようなことを知りたい方\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e業務内容\u003c/li\u003e\n\u003cli\u003e生き残るために必要なスキル\u003c/li\u003e\n\u003cli\u003e将来性\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eタイトルの通り、私はCAE技術者からWeb系エンジニアへと転職した。その理由を要約すると以下だ。\u003c/p\u003e","title":"27歳でCAE技術者からWebエンジニアに転職した理由"},{"content":"対象読者 高校数学の「論理と集合」が分かる方 結論 自己言及とは、「この主張は○○だ」のように自身を含む主張のことだ。このような主張はおかしな結論を導く。これが自己言及のパラドックスだ。\n以下では、自己言及のパラドックスの一般論とその具体例\n人食いワニのジレンマ 攻殻機動隊の思考戦車「タチコマ」の発言 嘘つきのパラドックス ラッセルのパラドックス について説明する。\nその後に、実は自己言及のパラドックスとは矛盾というよりは、自然言語で表された命題を扱いきれない数学・論理学の限界を示していることを述べる。\n自己言及のパラドックスの一般的構造 まずは自己言及のパラドックスの一般的構造を示す。\n自己言及する命題を\\(S\\)と置く。\n否定の自己言及 「\\(\\lnot S\\)という主張」を\\(S\\)とおいた場合を考えてみる。\n\\(S\\)を真だと仮定する。すると、\\(\\lnot S\\)が成り立つことを意味し、仮定と矛盾する。\n逆に\\(S\\)を偽だと仮定すると、\\(\\lnot \\lnot S \\equiv S\\)となり、仮定\\(\\lnot S\\)と矛盾する。\n以上から、\\(S\\)を真と偽どちらと仮定してもパラドックス(矛盾)を引き起こす。\n肯定の自己言及 次は、「\\(S\\)という主張」を\\(S\\)とおいた場合を考えてみる。\n\\(S\\)が真だと仮定する。すると、\\(S\\)が成り立つことを意味するが、何の問題もない。\n逆に\\(S\\)が偽だと仮定する。つまり、\\(\\lnot S\\)が成り立つが、これも仮定と矛盾しない。\n以上から、\\(S\\)は真と偽どちらでもOKというおかしなことになる。\n以上が自己言及のパラドックスの一般だが、なんだか言葉遊びみたいで面白くない。なので、以下で自己言及のパラドックスの具体例を４つ挙げる。その後にこのパラドックスの正体を明かす。\n人食いワニのジレンマ(ワニのパラドックス)(参考※１) ワニが子供を襲った。\nワニ: 「xグへへ、美味そうなガキだぜ」\n母: 「私の子供を食べないで！」\nワニ: 「今日、ワシが何をするか当てられたら、子供は食わずに返してやろう。だが、ハズレたら食う！」\nさて、お母さんは何と答えるべきだろうか。どういう巡り合わせか、お母さんはつい先ほど、自己言及のパラドックスについての記事を読んでいた。\n母: 「クソ！なんでこんな時に自己言及のパラドックスのことが頭を離れないの？」\n母: 「\u0026hellip;\u0026hellip;ハッ！！」\nその時・・・・！　圧倒的　閃きっ・・・・・・・・・・！！\n母: 「あ、あなたはその子を食べる\u0026hellip;!!」\nワニが子供を食べる場合、母親はワニの行動を言い当てたことになるので、ワニは約束を破ったことになってしまう。\n逆に食べなかった場合、母親の予想はハズレたことになり、子供を食べなければならなくなって、矛盾する。\nワニの行動によってワニの行動が決まる、という自己言及的な約束が仇となった。\n人食いワニのジレンマ(ジョジョパロディ)\\[引用 参考※5\\] 攻殻機動隊の思考戦車「タチコマ」の発言(参考※4「原文ママ」) タチコマ「僕は嘘しかつかない。本当のことは何一ついわないんだ。」\nさて、もし今のセリフが本当なら、彼は今、真実を語ってしまった。 もし今のセリフも嘘なら、彼は普段から真実を語ることになる。この矛盾をどう処理する？\nこのタチコマの問題は嘘つきのパラドックス(クレタ人のパラドックスとも)と言われている。\n嘘つきのパラドックス 嘘つきのパラドックスとは、「私は嘘つきである」と言う人が嘘つきなのかどうかは論理的に判定できないことを指す。\nこのような発言をした人をAさんとする。\nAさんが正直者である場合、この発言は矛盾している。だって、正直者ならば、「私は嘘つきだ」なんて嘘は言わないから。\nAさんが嘘つきである場合も、この発言は矛盾している。だって、嘘つきなのに「私は嘘つきだ」と正直に答えているから。\nいずれにせよ、Aさんは正直者かつ嘘つきである、というおかしな結論を得る。これは上記の一般論「否定の自己言及」と同じだ。\n逆に、Aさんは「私は正直者だ」と言ったとしても、「肯定の自己言及」と同様に正直者でも嘘つきでもOKとなり、何かがおかしい。\nラッセルのパラドックス ラッセルのパラドックスとは、「自分自身に属さない集合」という自己言及的な集合を考えると矛盾が生じることを指す。これは集合論という数学の根底を揺るがす大問題だ(※補足)。\n唐突になんだ？「集合が自分自身に属するかどうか」、なんて言われてもピンと来ないと思う。なので、次の「人々は人なのか」議論を見て欲しい。\n一定の目的のもとに集まった人々のことを法人といい、法律上では一人の人間として扱う。特に、営利目的の法人のことを会社という。国という人の集合も擬人化されたりして、一人の人間と見做すことがある。\n全人類を集めたものを\\(S\\)とおいてみる。全人類も法人や国のようにヒトなのだろうか。だとすると、\\(S\\)は人全てが属するはずなので、\\(S \\in S\\)となる。いやいや、人とは個人に限ると考えると、\\(S \\notin S\\)となる。\nこのように、「自分自身に属さない集合」は突飛な考えではない。前置きが長くなったが、矛盾を示そう。\n自分自身に属さない集合を全て集めた集合を\\(X\\)とおく。\n$$ X = \\{S | S \\notin S\\} $$\n\\(X\\)は自分自身に属す、つまり\\( X \\in X\\)と仮定すると、\\(X\\)の要素は自分自身に属さない(\\(X \\notin X\\))という定義と矛盾する。\n逆に\\(X \\notin X\\)と仮定すると、\\(X\\)は「自分自身が属さないものを全て集めた」集合なので、\\(X \\in X\\)となり矛盾する。\n命題関数を命題と言い張ることがパラドックスの原因(参考※２) 実は自己言及のパラドックスの根拠は背理法である。背理法は、その命題自体を証明するのではなく、「仮定は正しくない」ことを証明するに過ぎない。仮定\\(S\\)と結論\\(\\lnot S\\)が排中律(真でも偽でもない、ということはない)に違反している。だから、途中の推論が正しかったとすると、仮定が間違っていた。これが背理法だ。\nならば、この矛盾を解くカギは普通の背理法のように、「仮定は偽である」とするのではなく、「仮定の設定自体が間違っていた」、つまり「仮定はそもそも命題ではなかった」と捉えることである。\n「かつ」や「または」のように、命題の入力に対して真理値を返す関数を論理演算子と呼ぶ**。一般に、真理値を出力する関数を命題関数という。命題関数は入力が確定しない限り真理値が確定しない。つまり命題関数は命題ではない**。\n自己否定している文「\u0026ldquo;この命題\u0026quot;は正しくない」は命題ではなく、論理演算子だったのではないか。入力した命題\\(S\\)の真理値を反転させるような論理演算子「\\(S\\)は正しくない」を否定演算子という。通常は\\(\u0026rdquo;\\lnot\u0026quot; S\\)のように書くが、これを\\(f\\)とおく。\u0026ldquo;この命題\u0026quot;は\\(f\\)に対応するので、自己否定している文は\\(f(f)\\)と書き直せる。論理演算子の入力は命題でなければならないのに、関数を入力してしまっている。命題関数(論理演算子)を命題と言い張り、不適切な入力を行ってしまったことが自己言及のパラドックスを引き起こしたのだ。\n数学・論理学の限界 なぜこんな間違いをおかしてしまったのだろうか。それは、意味が曖昧な自然言語による文を数学的に扱うためには、無理やりにでもその文を命題として解釈しなければならないからだ。\n言語との向き合い方としては次のような３つの立場がある。\n構文論：　語句と語句の関係(文法) 意味論：　語句とその内容の関係(意味) 語用論：　語句と話者の関係 数学や論理学は、意味論の範疇にある。意味に着目しているからこそ、その文が正しいか、間違っているかを解釈できる。つまり、その文を命題として扱えるのだ。\n文を解釈する(意味論に落とし込む)作業を行うのは読者であり、これは語用論の範疇に含まれる。大体の場合は文の解釈でおかしなことは起こらないが、自己言及的な文のように難解な場合は、語用論がネックとなってしまう。このように、数学には、真とも偽とも判定できないような問題が存在する。\n補足 集合とは「区別できる要素を集めたもの」である、という素朴な定義ではラッセルのパラドックスが生じてしまう。この矛盾を回避するために集合に取り決めを導入した。これを公理的集合論という。どうやら数学は危機を免れたようだ。\n参考 詭弁論理学[野崎 明弘] 論理学入門 [三浦 俊彦] 法学入門[遠藤 浩, 久保田 きぬ子] 【問題】自己言及のパラドックス【攻殻機動隊】 考えるのをやめたキャラたち ","permalink":"https://gotoh-it-school.top/self-reference-paradox/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e高校数学の「論理と集合」が分かる方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e自己言及とは、「この主張は○○だ」のように自身を含む主張のことだ。このような主張はおかしな結論を導く\u003c/strong\u003e。これが自己言及のパラドックスだ。\u003c/p\u003e","title":"[数学・論理学の限界？]自己言及のパラドックスとは？４つの例と証明"},{"content":"対象読者 論理学の背景を知りたい方 結論 論理学とは、人類共通の思考方法を形式化し、その性質を研究する学問である。その基礎となるのは、真理値と呼ばれる真か偽かいずれかをとる値である。\n以下では、\n真理値がいかなる人間にとっても正しくなるように定められていて、 その真理値の操作によって、議論を簡便かつ厳密に展開していけるメリット について解説する。\nでは、論理を形式化することがなぜ重要であるか確認しよう。\n論理学の目的は思考の形式化 人間は物事を考える際、日常会話で使われる日本語や英語のような自然言語を用いる。数式や論理式は思考をスリム化することによって、より高度な議論を簡単に行えるようにした。論理学とは、人間共通の思考法を最小限のルールで記号化したものである。\n人種や国、果ては家族や個人ごとに考え方は異なる。思考は文化を反映している。それらの中で、共通した要素を抽出するには、どうすればよいだろうか。まずは、あらゆる文化でも成り立つ\u0026quot;正しさ\u0026quot; とは何かを考える必要がある。\n言葉は文化によって変わる 世界は混沌としている。その中で認識できる単位を抽出・区別し、記号を与えることを「命名」という。つまり、記号とは、あるイメージの代用品であり、言語は記号の羅列として表される。\n世界をどのように認識するかは文化が規定する。日本人は「昆布」や「ワカメ」、「もずく」のように海藻を区別するが、外国では分類もなく単に海藻としか言わなかったりする。逆に、日本人は雪を「みぞれ」や「ひょう」のように区別はするものの、イヌイットはもっと多様に雪を区別するらしい。\nまた、文化や立場、意図が言葉の内容を決める。日本人は「すみません」を「ありがとう」の意味で使ったりする。「(お手数をおかけして)すみません」ということで謝罪と感謝を表現しているのだ。また、「君、面白いね」とは、皮肉であり、「君はつまらない」という逆の意味で言う場合もある。\nこのような言葉の捉え方を推し進めていき、人類普遍のルールを探そうと考えると、「記号が指し示す内容が変化しても成り立つ」とはどういうことか、を明らかにしなければならない、という結論を得る。\n真理値とは可能世界の分類 次の文を考える。\n人間は死ぬ この文は明らかに成り立つように思われる。だが、\n”人間”という語が指し示す実体 \u0026ldquo;死ぬ\u0026quot;という語が表す性質 これらが文化によって別のものを表し得ることは上述の通りだ。記号と指し示す内容の対応関係を「可能世界」と呼ぶ。文化=可能世界だ。\n屁理屈のように思われるかもしれないが、例えば、\n\u0026ldquo;人間”という記号は「この世界でいうダイヤモンド」を表すのだとしたらどうだろう。ダイヤモンドは無機物であり、死にはしない。よって、そのような可能世界において、この文は成り立たなくなる。\nでは、\u0026ldquo;人間\u0026quot;という記号は「この世界でいうミジンコ」を表すような可能世界ではどうだろう。ミジンコは生物なので、死ぬ。よって、この文は成り立つ。\n以上のように、可能世界が変わると、その文が正しいかどうかも変わってしまう。そんなことでは、あらゆる文化で共通する思考ルールは見つけられない。そこで、この文が成り立つ場合とそうでない場合に可能世界を分類する。\nこの文が成り立つ可能世界をすべて集めたものを「真」 それ以外の可能世界の集合を「偽」 と名付ける。この2値を総称して「真理値」という。\n図1．記号と可能世界の関係 では、「「人間は死ぬ」は真である」とは、どういう意味か。それは、可能世界を片方に限定することだ。言い換えると、この文が成り立つような可能世界だけを選び出す、ということに他ならない。このように真理値を定義すれば、どんな文化(可能世界)から見ても、「成り立つ」と見做せる文を考えることができるのだ。\n「人間は人間である」という文を可能世界を意識して書き直すと、「\\(xはxである\\)」となる。しかし、この文はどのような可能世界を選んだとしても成り立ってしまう。つまり、偽となり得ないのだ。このような文を「同語反復(またはトートロジー)」という。なんとなく、文化に依らないルールが見えてきた。\n上記で見た文はかなり単純で、思考という複雑な過程とは程遠い。そこで、文を組み合わせたときの真理値を考える。\n論理演算子という名の接続詞 あいつの仕業か。(とすると、)この前のあれ(も)\u0026hellip;。もう怒ったぞ！(だから)、復讐してやる！\nこのように、感情などの意味が不安定な枝葉を刈り取ると、思考とは、接続詞によって文を結合し、新たな意味を作り出すことだ。\n日本語には様々な接続詞がある。その中でも、論理学で基本となる接続詞は「または」、「かつ」、「ならば」、「ではない」(「ではない」)は厳密には副詞)である。こいつらは論理演算子と呼ばれる。\n足し算「+」、引き算「-」のような演算子は数値を入力とし、数値の出力を返す。これと同様に、論理演算子は真理値を入力とし、真理値を出力する。\n以上のように、真理値を基礎として、文を接続していくことで、思考を最小限のルールで記号化していくことが論理学の体系だ。\n推論は思考を推し進める この中で、一番重要な論理演算子は「ならば」だ。(参考：「数学の「ならば」の本当の意味」)\n別に、当たり前の文を「または」や「かつ」で繋ぎ合わせて新しい文を作ったからといって、何も嬉しくはない。文の接続によって、「既知の文を前提として、そこから未知の非自明な、有意義な結論を得ること」こそに意味がある。\nPならばRである。 QならばRである。 PまたはQである。 よって、Rである。 みたいな感じで、自明でない結論を正しく推論する手続きを形式をもって保証する体系が論理学だ。\n参考 論理学入門[三浦 俊彦] 記号論のへの招待[池上 嘉彦] ","permalink":"https://gotoh-it-school.top/truth-value-is-possible-world/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e論理学の背景を知りたい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e論理学とは、人類共通の思考方法を形式化し、その性質を研究する学問である\u003c/strong\u003e。\u003cstrong\u003eその基礎となるのは、真理値と呼ばれる真か偽かいずれかをとる値である\u003c/strong\u003e。\u003c/p\u003e","title":"真理値とは可能世界の集合である ~論理学の基礎から解説~"},{"content":"対象読者 数学の問題を解く上で、必要条件・十分条件を見分けることはできるが、理解はできない方 会話で必要条件、十分条件を使いこなし、ちょいインテリ感を演出したい方 結論 必要条件と十分条件ってどっちがどっちだかややこしい。 この判別が数学のセンター試験で出てくる。 解き方を暗記して突破したものの、どんな意味なのか分からない方は多いのではないだろうか。\nおさらいすると、\n命題(条件)同士の力関係において、強い方を十分条件、弱い方を必要条件、 命題を満たす集合同士の包含関係において、小さい方を十分条件、大きい方を必要条件 という。何をもって強弱？、どんな観点から必要とか十分と言ってるのか。本記事では、なぜ、必要条件と十分条件と名付けられたのかを数学の定義から遡って解説することで、\n丸暗記ではなく、 数学の問題も解けるし、 日常会話でも使いこなせる ような理解を提供する。\nまた、その理解のチェックとして、最後に数学と日常会話の例題をおいた。\n必要条件、十分条件は２つの条件の関係を表す用語 ２つの条件を\\(P\\)と\\(Q\\)と書くことにする。例えば、\nPを、「ぼくの好きな食べ物はリンゴです」 Qを、「地球は青かった」 みたいにマジで適当な条件を選んだとする。 このとき、\\(P\\)と\\(Q\\)には何の関係もない。 何が言いたいかというと、必要条件と十分条件という言葉は、特定の関係を持つ2つの条件に対して使うものだということだ。\nその関係とは、ずばり、「\\(P\\)ならば\\(Q\\)」が成り立つ(真となる)ような関係だ。 これを掘り下げるためには、「ならば」は数学ではどう扱われるかを理解しなければならない。\n数学の「ならば」の定義 数学における「ならば \\(\\Rightarrow\\)」は２つの真理値 \\(P\\)、\\(Q\\) の入力に対して、 １つの真理値を出力する2項演算子だ。\n\\(P\\) と \\(Q\\) を「命題」とする。 命題とは真か偽かのいずれかとして判断できる文のことだ。\n\\({1, 2, \\dots}\\) を自然数というのと同じで、真や偽を「真理値」という。\n真理値は2通りある。 よって、\\(P\\) と \\(Q\\) の演算は \\(2 \\times 2 = 4\\) 通りある。 以下に \\(\\Rightarrow\\) の入出力の対応表をまとめる。これを真理値表という。\n表1．「ならば」の真理値表 \\(P\\) \\(Q\\) \\(P \\Rightarrow Q\\) ① 真 真 真 ② 真 偽 偽 ③ 偽 真 真 ④ 偽 偽 真 これが数学における「ならば」の定義だ。\nいきなり表で「ならば」を定義されても意味が分からない、という方はこちらをどうぞ。\n必要条件と十分条件の命名理由 必要条件、十分条件を考える上で、表１.②となるような状況は無視する。 その主張\\(P \\Rightarrow Q\\)が成り立たないようなデタラメな状況には興味ないからだ。\n状況を表1の①、③、④に限定することで、一方の真偽がもう一方の真偽を制約するような、条件間の力関係が見えてくる。\nいきなりだが、以下のようなゲームがあるとする。\n\\(P\\)と\\(Q\\)の真偽は不明である 片方は真である もう片方の真理値を推定せよ このとき、\\(P\\)と\\(Q\\)のどちらが真だと嬉しいだろうか。場合分けして考える。\n\\(P\\)が真の時、\\(Q\\)も真であることが確定する(表１．①) 逆に、\\(Q\\)が真の時、\\(P\\)は真にも偽にもなり得る(表１．①③) これは、「\\(P\\)が\\(Q\\)の真理値を強制している」、ということを示している。以下のようにも言い換えられる。\n\\(P\\)は\\(Q\\)よりも強い。 逆に言えば、\\(Q\\)は\\(P\\)よりも弱い。 さらに別の言い方もできて、\n\\(P\\)が真であることさえ分かれば、\\(Q\\)の真理値を知るのに十分だ 逆に\\(P\\)が真であるためには、少なくとも\\(Q\\)は真である必要がある 故に、\\(P\\)は\\(Q\\)の十分条件、\\(Q\\)は\\(P\\)の必要条件という**。**\n実は、十分条件と必要条件には別名があって、\n十分条件\\(P\\)を強い命題 必要条件\\(Q\\)を弱い命題 という。もはや説明は要らないだろう。\n十分条件は必要条件に含まれる 以上は、表からの説明だった。さらに図解があれば理解の助けになる。そこで、十分条件や必要条件には包含関係が成り立つことを確認する。\n実は命題は、主語と述語に分解できる。\n主語は区別できる要素 述語は性質 を表す。例えば、「俺様はモテモテだ」という命題は、全世界のモテ男の集合を\\(S\\)とおくと、\\(s \\in S\\)と書ける。「これにはこういう性質がある」ということを数学では集合を用いて表すことができる。\n以下のような命題を考える。\n\\(P\\)は\\(Q\\)の十分条件である \\(P\\)と\\(Q\\)は同じ主語を持つ 命題\\(P\\)を満たすもの全ての集合を\\(P\u0026rsquo;\\)、命題\\(Q\\)のそれを\\(Q\u0026rsquo;\\)とおく。このとき、以下のように書ける。\n$$ s \\in P\u0026rsquo; \\Rightarrow s \\in Q\u0026rsquo; $$\n十分条件では表1.②のような状況は考えないので、この式は常に真となる。\nあれ？。これは、集合の包含関係じゃないか。そう、十分条件\\(P\\)は必要条件\\(Q\\)に含まれるのだ。\n条件が強いほど、小さな集合となる 条件の強さとは、条件の制約の厳しさを意味する。\n例えば、以下の条件は番号が若いほど、制約が多く、強い(厳しい)条件だ。\nAさんは日本人である Aさんはアジア人である Aさんは地球人である 若い番号の条件が十分条件、それより大きい番号の条件は必要条件に対応する。\n図１．条件の包含関係 十分条件が満たされれば、必要条件も自動的に満たされる。 言い換えれば、十分条件は同時に必要条件をも満たす。 これは上で見た包含関係からも明らかだ。 十分条件の方が必要条件よりも超えるべきハードルがたくさんあり、十分条件を満たす集合は必要条件のものよりも小さくなる。\n最強の条件と最弱の条件 では、最強の条件、最弱の条件とはどんなものだろうか。まずは命題の観点から、次は集合の観点から考えてみる。\n最強の命題には、制約が厳しすぎて、もはや、条件を満たす(真となる)ものが存在しないのだ。 逆に、最弱の命題は制約が緩すぎて、なんでもOK、すべて正解(真)としてしまう。 つまり、\n最強の命題とは、常に偽となる命題であり、 最弱の命題とは、常に真となる命題のことだ。 次は集合の観点だ。条件が強くるほど、それを満たす集合も小さくなったのだから、\n最強の条件とは、大きさゼロの集合、つまり要素を何も持たない空集合であり、 最弱の集合とは、議論対象をすべて含んだ集合(普遍集合という)だ。 数学や日常会話で必要条件・十分条件を使いこなす 以上で、必要条件・十分条件とは、２つの命題の力関係、包含関係を示す用語であることを確認した。\n包含関係という視点は、数学の問題を解くのに使える。力関係という視点は、日常会話において、必要条件・十分条件というワードを使いこなす助けとなる。\n以下では、例題を通して、このことを確認する。\n数学の「論理と集合」の問題 適当な数学の問題を参考※2よりいくつか引用する(※筆者注)。\n以下において、\\(P\\)は\\(Q\\)の何条件であるか、それぞれ答えよ。ただし、xは実数とする。\n\\(P: x = 3, Q: x^2 - 4x + 3 = 0\\) \\(P: x \u0026gt; 0, Q: |x| \u0026gt; 1\\) \\(P\\)を満たす集合を\\(P\u0026rsquo;\\)、\\(Q\\)を満たす集合を\\(Q\u0026rsquo;\\)とおく。\n問１は、\\(P\u0026rsquo; = \\{3\\}, Q\u0026rsquo; = \\{1, 3\\}\\)であり、\\(P\u0026rsquo; \\subset Q\u0026rsquo; \\)。よって、十分条件。\n問２は、 \\(P\u0026rsquo;\\)と\\(Q\u0026rsquo;\\)の間には包含関係が成り立たない。よって、十分条件でも必要条件でもない。\nこの程度の問題を解くためだけなら、他のサイトなどであるように、語呂合わせとかのテクニックで暗記すれば十分だ。しかし、それだけの理解では、日常会話には通用しない。\n日常会話での必要条件・十分条件 とある発言シーンを雑考する。\n男: 「俺様が天才であることは、この問題が解けることの十分条件だ！」\nこの男は何を言ってるのだろうか。俺様の天才具合をアピールしたいのだろうか。 それとも、天才の力を以ってしても、その問題は難しい、と言いたいのだろうか。\nまずは、「十分条件」と言ってる以上、「天才」という性質と、 「この問題が解ける(能力を有する)」という性質は無関係なものではなく、力関係が成り立つことを主張している。 そして、「天才」の方がより強力な条件であり、天才ならば当然その問題は解ける、と言ってる。\nこの男が自身満々にそう発言している場合、\n「自分は天才であることは真だ」と確信しており、 当然、俺はその問題を解ける と尊大な態度を取っていることが分かる。\n逆に自信なくそう言っているのだとしたら、\n「この問題」とは天才にとっては簡単なことは周知の事実であり、 それにも関わらず、もし自分が解けなかったら\u0026hellip; とプレッシャーを感じている、と読むことができる。\n以上のように、。必要条件・十分条件の意味が分かっていれば、 その発言に込められた気持ちがより分かるかもしれないし、 自分の強い気持ちを伝えることもできるかもしれない。 そもそも、必要条件・十分条件なんて、日常でそんなに聞かないけどｗ。\n参考 論理学入門 [三浦　俊彦] スタディサプリ[必要十分条件] ","permalink":"https://gotoh-it-school.top/necessary-sufficient-condition/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e数学の問題を解く上で、必要条件・十分条件を見分けることはできるが、理解はできない方\u003c/li\u003e\n\u003cli\u003e会話で必要条件、十分条件を使いこなし、ちょいインテリ感を演出したい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e必要条件と十分条件ってどっちがどっちだかややこしい。\nこの判別が数学のセンター試験で出てくる。\n解き方を暗記して突破したものの、どんな意味なのか分からない方は多いのではないだろうか。\u003c/p\u003e","title":"[名前の由来から理解！]必要条件と十分条件の考え方と日常会話の例"},{"content":"対象読者 数学の「ならば」の真理値表について、以下のように思う方\n約束事として受け入れるのが気持ち悪い その定義の妥当性を理解し、なぜそう約束したか納得したい 結論 数学の「ならば」の定義である真理値表を眺めても、日常会話の「ならば」とは全く異なるように見える。 なぜこの真偽の羅列が「ならば」を表すことになるのだろうか。\nこれを理解するポイントは「寛容の原則」という、論理学の原則にある。\n以下では、\n数学の「ならば」は日常会話のそれをガッツリ反映していること 数学の「ならば」への勘違いの例 を確認し、論理の要である「ならば」への理解を深める。\nまずは、数学における「ならば」の定義を確認する。\n数学の「ならば」の定義 数学における「ならば \\(\\Rightarrow\\)」は２つの真理値 \\(P\\)、\\(Q\\) の入力に対して、 １つの真理値を出力する2項演算子だ。\n\\(P\\) と \\(Q\\) を「命題」とする。 命題とは真か偽かのいずれかとして判断できる文のことだ。\n\\({1, 2, \\dots}\\) を自然数というのと同じで、真や偽を「真理値」という。\n真理値は2通りある。 よって、\\(P\\) と \\(Q\\) の演算は \\(2 \\times 2 = 4\\) 通りある。 以下に \\(\\Rightarrow\\) の入出力の対応表をまとめる。これを真理値表という。\n表1．「ならば」の真理値表 \\(P\\) \\(Q\\) \\(P \\Rightarrow Q\\) ① 真 真 真 ② 真 偽 偽 ③ 偽 真 真 ④ 偽 偽 真 これが数学における「ならば」の定義だ。\n日常会話の「ならば」を「\\(\\Rightarrow\\)」に当てはめる この表のどこが「ならば」なのか意味不明だ。 そこで、日常会話の具体例を当てはめてこの真理値表の意味を考えてみる。\n父が息子に対して、\n「テストでいい点数をとったならば、ゲームを買ってあげよう」\nと言ったとする。この発言を\\(R\\)とする。\nこの文を表1に当てはめてみると、\n\\(P\\)は「息子がテストで良い点数を取る」 \\(Q\\)は「父が息子にゲームを買ってあげる」 \\(R\\)は、\\(P \\Rightarrow Q\\) に対応する。\n真理値表の４つの状況(表１の①から④)を以下で考察する。\n表1.①の場合(\\((P, Q, R) = (真, 真, 真)\\)) これは妥当だ。 息子はいい点数を取り、父はそれにしっかり報いた訳だ。 このとき、発言は正しいだろう。\n表1.②の場合(\\((P, Q, R) = (真, 偽, 偽)\\)) これも妥当だ。息子はいい点数を取ったにも関わらず、父はゲームを買ってあげなかった。 当然、息子は父の発言に対して、「お父さんの嘘つき！」と思うだろう。\n表1.③の場合(\\((P, Q, R) = (偽, 真, 真)\\)) これは妥当か微妙だ。\n息子が悪い点数を取ったのに、父はゲームを買ってくれたのだ。 お父さんチョロいわ～。 発言は嘘に思える。表1.③の取り決めはおかしい。\n一方、父の慈悲により、残念な結果だったがゲームを買ってあげた、という場合もあり得そうだ。 この時、父の発言を嘘というのは厳しすぎる気もする。\nそもそも、「前提の通りじゃないので、その結論がどうなろうが知ったことではない。俺は嘘はついてない。」 と言われたら、なるほど一理ある。\n表1.④の場合(\\((P, Q, R) = (偽, 偽, 真)\\)) これは妥当だ。 息子が悪い点数を取り、父はゲームを買ってあげなかった。当然だ。\n「ならば」の真理値表への疑問 以上より、数学のならば「\\(\\Rightarrow\\)」の真理値表(表1)の定義は日常会話の「ならば」の語感を反映していることを確認した。\nしかし、表1.③についてのみ疑問が残った。 表1.③の発言\\(R\\)は真か偽のどちらと定義すべきか。\nここで「寛容の原則」の出番である。\n命題を疑ったら真偽が判定できなくなる 一見、真偽が明らかに思える主張でもそれを掘り下げると、自信をもって真偽を判定できなくなってしまう。\n例えば、以下の主張の真偽について考える。\n日本の首都は東京である 今日は良い天気ですね 1.については一見、正しいように思われる。 しかし、それはいつの時代なのか。 平安時代ならこの主張は偽となるし、先史時代ならばそもそも首都と言えるようなところがあったのかも分からない。 また、「東京」という語は何を意味しているだろうか。偏屈が過ぎるが、その話者特有の造語かもしれない。\n2.についてはどうだろう。 雲1つない快晴ならば良い天気だと断言できるだろう。 しかし、今日は確かに晴れてはいるがまばらに曇っているぞ。 そもそも”良い天気”の定義は？ 何％の雲までがいい天気なのだろうか\u0026hellip;。\nこのように、主張を疑いだしたらキリがないし話ができなくなる。\n寛容の原則が数学と日常の「ならば」を繋ぐ だから、なるべくその文が正しくなるよう寛容に解釈する。 厳密にはどうかはさておき、明らかに偽と言えないならば真であると見做そうよ。 これが寛容の原則だ。\n表１.③は前提がそもそも偽で成り立ってないんだから結論が真であろうとも発言自体は嘘じゃないと寛容に考えようよ。 ということで、「ならば」を表1と定めるわけだ。\n日常語で「ならば」を別の言い回しに変えたり論理演算子としての言い換えをしてみると、 この真理値表に日常の「ならば」が潜んでいることがもっと分かるかもしれない (詳細はこちら)。\n空虚なる真 Vacuous Truth 因みに、このように前提が偽のときに「ならば」が真となることを 空虚な真(Vacuous Truth) と呼ぶ。 カッコいいね。\n結論が真でも前提が偽のときは問答無用で「ならば」を真とするなんて違和感はないだろうか。 以降でその違和感の正体を解説する。\n「ならば」の間違った捉え方 表1の定義を知らない大学生に「ならば」の真理値表を考えてもらうと、以下のような回答が多いみたいだ。 その真理値表は数学の定義とは食い違っている(赤文字の部分)。\n表2. 大学生が考えた「ならば」の真理値表 \\(P\\) \\(Q\\) \\(P \\Rightarrow Q\\) ① 真 真 真 ② 真 偽 偽 ③ 偽 真 偽 ④ 偽 偽 真 その大学生たちは以下のような場面を想定してこの表を考えたと思われる。\n約束に関する場面 以下のような発言があるとする。\nレポートを提出すれば、単位をあげるよ 身代金を支払えば、人質は解放する この発言を表2.③に当てはめると、\nレポートを提出しなかったのに、単位がもらえた 身代金を支払っていないのに、人質が解放された となり、これらの発言を嘘だと大学生は見なしたようだ。 確かにこれらは変だ。\n「ならば\\(\\Rightarrow\\)」と「同値\\(\\Leftrightarrow\\)」の混同 上で考えた状況は取引の場面である。 なので、彼らは以下のように、暗に、逆方向の「ならば」も考えてしまっていたのだ(\\(Q \\Rightarrow P\\))。\n単位が欲しいならば、レポートを出せ 人質を解放して欲しいならば、身代金を払え \\(P \\Rightarrow Q\\)と\\(Q \\Rightarrow P\\)を同時に満たすような関係を「同値」といい、 「\\(P \\Leftrightarrow Q\\)」と表す。 同値は両辺の真理値が同じだった場合は真を、異なる場合は偽を返す。 表2は実は、同値の真理値表だったのだ。\n結び 日常会話はフワッとしたところがあるので「ならば」と「同値」を混同するような事が起きたりして、 空虚な真にビックリしたりするだろう。\n対して、数学の論理記号はこのような日常言語の曖昧さを排除し、誤解を減らしてくれる。 そして、数学の「ならば」は日常言語と乖離した謎の呪文ではなく、日常言語に根差したものである。\n参考 論理学入門 [三浦　俊彦] ","permalink":"https://gotoh-it-school.top/implication-operator/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cp\u003e数学の「ならば」の真理値表について、以下のように思う方\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e約束事として受け入れるのが気持ち悪い\u003c/li\u003e\n\u003cli\u003eその定義の妥当性を理解し、なぜそう約束したか納得したい\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e数学の「ならば」の定義である真理値表を眺めても、日常会話の「ならば」とは全く異なるように見える。\nなぜこの真偽の羅列が「ならば」を表すことになるのだろうか。\u003c/p\u003e","title":"数学の「ならば」(含意)の意味は？真理値表の定義を日常会話から理解する|寛容の原則"},{"content":"対象読者 ストークスの定理を視覚的に理解し、しっかり暗記したい方 結論 ストークスの定理は、\n回転量についての経路視点と面積視点の言い換え 微小要素が打ち消し合って、外側の値だけが残る という2点を理解すれば、公式を忘れても、即座に導出できる(ガウスの発散定理の理解も同様)。\nストークスの定理は以下だ。\n$$\\int_C \\boldsymbol{v} \\cdot d\\boldsymbol{r} = \\iint_S (\\nabla \\times \\boldsymbol{v}) \\cdot d\\boldsymbol{S} \\tag{1}$$\nこの式のイメージを理解するポイントは積分の対象となる微小要素の意味を理解することだ。まず、左辺の微小要素\\(\\boldsymbol{v} \\cdot d\\boldsymbol{r}\\)ついて見ていく。\nストークスの定理の基礎；回転量の数学的な表現 台風のような渦をイメージして欲しい。台風の勢い、つまり回転量をどう表現すればよいのだろうか。\n図1．台風と閉曲線 台風の中で、閉じた経路\\(C\\)を描く。\\(C\\)上を風\\(\\boldsymbol{v}\\)が突き抜けていく。\\(C\\)の微小要素\\(d\\boldsymbol{r}\\)上での風の強さを考える。\n図2.閉曲線の微小要素と風 \\(d\\boldsymbol{r}\\)と垂直な風は無視してよい。それは\\(d\\boldsymbol{r}\\)に沿っていないからだ。\\(d\\boldsymbol{r}\\)に平行な成分と微小経路\\(d\\boldsymbol{r}\\)の距離をかけたもの\\(\\boldsymbol{v} \\cdot d\\boldsymbol{r}\\)のみが、\\(d\\boldsymbol{r}\\)に沿った風の強さであり、式(1)の左辺の微小要素だ。\nそれらを合計すると、ストークスの定理の左辺を得る。\n$$ Cでの回転量 =\\int_C \\boldsymbol{v} \\cdot \\ d\\boldsymbol{r} \\tag{2}$$\n回転量とは、経路に沿ったベクトル成分の合計なのだ。閉じた経路に沿った風の合計値によって、回転の勢いを表せそうだ。\n微小な閉じた経路での回転量 = rot 次は、公式(1)の右辺の微小要素\\((\\nabla \\times \\boldsymbol{v}) \\cdot d\\boldsymbol{S}\\)について見ていく。\n式(2)を\\(z\\)軸周りの微小な閉曲線\\(\\partial S_z\\)に適用してみる。\n図3．z軸周りの微小な閉曲線と風 \\(\\partial S_z\\)は４つの経路(\\(C_x, C_{x+dx}, C_y, C_{y+dy}\\))を繋げたものだ。ます、\\(x\\)方向の回転量について考える。\\(C_{y + dy}\\)と\\(C_y\\)で\\(d\\boldsymbol{r}\\)の向きが逆になっている点に注意だ。\n$$ \\begin{aligned} \u0026amp;C_{y + dy}での回転量 \\\\ \u0026amp;= \\boldsymbol{v}(x, y + dy, z) \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= \\boldsymbol{v}(x, y + dy, z) \\cdot (-\\boldsymbol{i}dx) \\\\ \u0026amp;= - v_x(x, y + dy, z)dx \\tag{3.1} \\end{aligned} $$\n$$ \\begin{aligned} \u0026amp;C_{y}での回転量 \\\\ \u0026amp;= \\boldsymbol{v}(x, y, z) \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= \\boldsymbol{v}(x, y, z) \\cdot (\\boldsymbol{i}dx) \\\\ \u0026amp;= v_x(x, y, z)dx \\tag{3.2} \\end{aligned} $$\nよって、(3.1)と(3.2)より、\n$$ \\begin{aligned} \u0026amp;\\partial S_zでのx成分に関する回転量 \\\\ \u0026amp;= \\int_{C_yとC_{y + dy}} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= v_x(x, y, z)dx + (-v_x(x, y + dy, z)dx) \\\\ \u0026amp;= \\left(-\\frac{\\partial v_x}{\\partial y}dy\\right)dx \\tag{3.3} \\end{aligned} $$\n同様に考えると、\n$$ \\begin{aligned} \u0026amp;\\partial S_zでのy成分に関する回転量 \\\\ \u0026amp;= \\int_{C_xとC_{x + dx}} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= -v_y(x, y, z)dy + v_y(x + dx, y, z)dy \\\\ \u0026amp;= \\left(\\frac{\\partial v_y}{\\partial x}dx\\right)dy \\tag{3.4} \\end{aligned} $$\n(3.3)と(3.4)を合計すると、\n$$ \\begin{aligned} \u0026amp;\\partial S_zでの回転量 \\\\ \u0026amp;= \\int_{\\partial S_z} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= \\left(\\frac{\\partial v_y}{\\partial x} - \\frac{\\partial v_x}{\\partial y}\\right)dxdy \\\\ \u0026amp;= (\\nabla \\times \\boldsymbol{v})_{z}dxdy \\tag{3.5} \\end{aligned} $$\n同様に、\\(x, y\\)軸周りの微小な閉曲線\\(\\partial S_x, \\partial S_y\\)について考えると、\n$$ \\begin{aligned} \u0026amp;\\partial S_xでの回転量 \\\\ \u0026amp;= (\\nabla \\times \\boldsymbol{v})_{x}dydz \\tag{3.6} \\end{aligned} $$\n$$ \\begin{aligned} \u0026amp;\\partial S_yでの回転量 \\\\ \u0026amp;= (\\nabla \\times \\boldsymbol{v})_{y}dzdx \\tag{3.7} \\end{aligned} $$\nとなる。\n式(3.5)、(3.6)、(3.7)は似ている。実は、数学の回転\\(\\mathrm{rot}:= \\nabla \\times \\boldsymbol{v}\\)は、各軸\\(x, y, z\\)周りの単位面積あたりの回転量をベクトルで表現したものなのだ。\nx-y平面に収まらない微小な閉曲線での回転量 上では、x-y平面上の閉曲線\\(\\partial S_z\\)について詳しく見た。\nしかし、経路はx-y, y-z, z-x平面上に収まるとは限らない。そこで、より一般的な微小な閉曲線\\(\\partial S\\)での回転量を考える。\nベクトルは各成分に分解できるので、経路は各平面上の経路に分解できる。\n$$ \\partial S = \\partial S_x + \\partial S_y + \\partial S_z$$\n結局、\\(\\partial S\\)での回転量は(3.5), (3.6), (3.7)の合計となる。\n$$ \\begin{aligned} \u0026amp;\\partial Sでの回転量 \\\\ \u0026amp; = \\int_{\\partial S} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp; = \\int_{\\partial S_x + \\partial S_y + \\partial S_z} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp; = (\\nabla \\times \\boldsymbol{v})_{x}dydz \\\\ \u0026amp; + (\\nabla \\times \\boldsymbol{v})_{y}dzdx \\\\ \u0026amp; +(\\nabla \\times \\boldsymbol{v})_{z}dxdy \\tag{4.1} \\end{aligned} $$\nもっと綺麗にまとめれそうだ。面積をベクトルで表してみる。\n$$ \\begin{aligned} d\\boldsymbol{S} \u0026amp;= S_x\\boldsymbol{i} + S_y\\boldsymbol{j} + S_z\\boldsymbol{k} \\\\ \u0026amp;= dydz\\boldsymbol{i} + dzdx\\boldsymbol{j} + dxdy\\boldsymbol{k} \\tag{4.2} \\end{aligned} $$\n(4.1)を(4.2)で書き換えると、\n$$ \\begin{aligned} \u0026amp;\\partial Sでの回転量 \\\\ \u0026amp;= (\\nabla \\times \\boldsymbol{v}) \\cdot d\\boldsymbol{S} \\tag{4.3} \\end{aligned} $$\nこれは式(1)の右辺の微小要素だ。式(4.3)は、回転量を経路視点から面積視点に変換する式である。\n内側では打ち消し合い、外側だけ残る 隣り合った微小な閉曲線\\(\\partial S_iと\\partial S_j\\)の回転量の合計(☆)を計算してみる。\n図4．共有する経路での回転量はキャンセルする 両者で共有する経路(\\(l\\))での回転量は打ち消し合う。お互いに逆向きだからだ。式で書くと、\n$$ \\begin{aligned} \u0026amp;\\int_l \\boldsymbol{v} \\cdot d\\boldsymbol{r} + \\int_{-l} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= \\int_l \\boldsymbol{v} \\cdot (d\\boldsymbol{r} - d\\boldsymbol{r}) \\\\ \u0026amp;= 0 \\end{aligned} $$\n故に、共有していない、外側の経路での回転量のみを合計することで(☆)を求めることができる。\n微小ではない閉曲線\\(C\\)における回転量も同様に考えることができる。共有される経路での回転量はキャンセルされるため、以下のように\\(C\\)を無数の微小な閉曲線\\(\\partial S_i\\)に分解できる。\n微小な閉曲線\\(\\partial S_i\\)が成す面積\\(S_i\\)も微小であるため、経路視点と面積視点で言い換えることができる(式(4.3))。なお、閉曲線\\(C\\)が成す面積を\\(S\\)とおくと、以下を満たす。\n$$S = \\sum_i S_i$$\n微小な面積要素を足し合わせることはまさしく面積分なので、総和\\(\\sum\\)を積分\\(\\iint\\)に書き換えられる。まとめると、\n$$ \\begin{aligned} \\int_C \\boldsymbol{v} \\cdot d\\boldsymbol{r} \u0026amp;= \\sum_i \\int_{\\partial S_i} \\boldsymbol{v} \\cdot d\\boldsymbol{r} \\\\ \u0026amp;= \\sum_i (\\nabla \\times \\boldsymbol{v}(\\boldsymbol{r_i})) \\cdot \\boldsymbol{S_i} \\\\ \u0026amp;= \\iint_S (\\nabla \\times \\boldsymbol{v}) \\cdot d\\boldsymbol{S} \\end{aligned} $$\nこれがストークスの定理(式(1))の意味だ。\n図5．ストークスの定理のイメージ ストークスの定理は公式を忘れても大丈夫！ 回転量についての２つのイメージ\n経路の積分と面積の積分の言い換え((式4.3)) 内側は打ち消し合って、外側だけが残る これさえ覚えていれば、ストークスの定理の公式を導出することができる。\n現に、私がストークスの定理を知ってから9年近く経ったが、本記事を書くことができた。式を丸暗記するのではなく、その成り立ちについて理解しておくと、記憶が長持ちするようだ。\n","permalink":"https://gotoh-it-school.top/stokes-theorem/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eストークスの定理を視覚的に理解し、しっかり暗記したい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eストークスの定理は、\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e回転量についての経路視点と面積視点の言い換え\u003c/li\u003e\n\u003cli\u003e微小要素が打ち消し合って、外側の値だけが残る\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eという2点を理解すれば、公式を忘れても、即座に導出できる(\u003ca href=\"/gaussian-divergence-theorem/\"\u003eガウスの発散定理\u003c/a\u003eの理解も同様)。\u003c/p\u003e","title":"ストークスの定理~微小要素のイメージから分かりやすく証明!~"},{"content":"対象読者 ガウスの発散定理を視覚的に理解し、しっかり暗記したい方 結論 ガウスの発散定理は、\n湧き出し量についての表面積視点と体積視点の言い換え 微小要素が打ち消し合って、外側の値だけが残る という２点を理解すれば、公式を忘れても、即座に導出できる(ストークスの定理の理解も同様)。\nガウスの発散定理は以下だ。\n$$\\iint_S \\boldsymbol{v} \\cdot \\boldsymbol{n}dS = \\iiint_V \\nabla \\cdot \\boldsymbol{v}dV \\tag{1} $$\nこの式のイメージを理解するポイントは積分の対象となる微小要素の意味を理解することだ。まず、左辺の微小要素\\(\\boldsymbol{v} \\cdot \\boldsymbol{n}dS\\)ついて見ていく。\nガウスの発散定理の基礎；湧き出し量の数学的な表現 温泉が湧き出るところをイメージして欲しい。その湧き出し量をどうやって定義すればよいのだろうか。\n図１．温泉と閉曲面 湧き出し量とは、とある閉じた面\\(S\\)内から外へ出ていく流量のことだ。\\(S\\)上のとある微小要素\\(dS\\)における湧き出し量について考える。\n図２．閉曲面の微小要素と湧き出し \\(dS\\)における、内から外への垂直かつ大きさ１のベクトルを\\(\\boldsymbol{n}\\)とする(単位法線ベクトルという)。\n温泉の流れはベクトルで表すことができる。単位面積あたりの流量を\\(\\boldsymbol{v}\\)とおく。\\(\\boldsymbol{v}\\)は\\(dS\\)を貫いている。しかし、\\(dS\\)と平行な方向、言い換えれば、\\(\\boldsymbol{n}\\)と直交する方向の水流は湧き出しとは関係ない。完全に内向きでも外向きでもない、という意味だからだ。\n以上から、\\(dS\\)における湧き出し量は、\\(\\boldsymbol{v}\\)の\\(\\boldsymbol{n}\\)方向成分、つまり\\(\\boldsymbol{v} \\cdot \\boldsymbol{n}\\)に面積をかけたものとなる。\n$$dSでの湧き出し量 = \\boldsymbol{v} \\cdot \\boldsymbol{n}dS \\tag{2}$$\nこれは公式(1)の左辺の微小要素だ。\nこれを閉曲面\\(S\\)上で合計したものが左辺であり、\\(S\\)上での湧き出し量を意味する。\n微小な閉曲面での湧き出し量 = 発散(div) 次に、公式(1)の右辺の微小要素\\(\\nabla \\cdot \\boldsymbol{v}dV\\)について考える。\n閉じた面Sに囲まれた3次元空間を\\(V\\)とし、その中のとある微小体積を\\(dV\\)とする。そこでの湧き出し量について考える。\nまず、\\(x\\)方向のみの湧き出し量を計算する。\\(dV\\)はメッチャ小さな立方体であり、合計6個の面がある。その中で、\\(x\\)方向の湧き出しと関係ある面は２つあり、\\(dS_{x+dx}\\)、\\(dS_{x}\\)と名付ける。\n図３．微小体積のx方向の湧き出し 式(2)を用いて、\\(dS_{x+dx}\\)、\\(dS_{x}\\)それぞれの湧き出し量を計算できる。\\(dS_{x+dx}\\)と\\(dS_{x}\\)で、内から外への向きが逆になっている点に注意だ。\n\\(x\\)方向の単位ベクトルを\\(\\boldsymbol{i}\\)、流量を\\(\\boldsymbol{v}=(v_x, v_y, v_z)\\)とおくと、\n$$ \\begin{aligned} \u0026amp; dS_{x+dx}での湧き出し量 \\\\ \u0026amp;= \\boldsymbol{v} \\cdot \\boldsymbol{n}dS_{x+dx} \\\\ \u0026amp;= \\boldsymbol{v} \\cdot \\boldsymbol{i}dydz \\\\ \u0026amp;= v_x(x+dx, y, z)dydz \\tag{3.1} \\\\ \u0026amp; dS_{x}での湧き出し量 \\\\ \\end{aligned} $$\n$$ \\begin{aligned} \u0026amp;= \\boldsymbol{v} \\cdot \\boldsymbol{n}dS_{x} \\\\ \u0026amp;= \\boldsymbol{v} \\cdot -\\boldsymbol{i}dydz \\\\ \u0026amp;= -v_x(x, y, z)dydz \\tag{3.2} \\end{aligned} $$\nよって、\n$$ \\begin{aligned} \u0026amp;x方向の湧き出し量 \\\\ \u0026amp;= \\iint_{dS_{x+dx}とdS_{x}}\\boldsymbol{v} \\cdot \\boldsymbol{n}dS \\\\ \u0026amp;= (v_x(x + dx, y, z) - v_x(x, y, z))dydz \\\\ \u0026amp;= \\left(\\frac{\\partial v_x}{\\partial x}dx\\right)dydz \\tag{3.3} \\end{aligned} $$\n同様に考えると、\n$$ \\begin{aligned} \u0026amp;y方向の湧き出し量 \\\\ \u0026amp;= \\left(\\frac{\\partial v_y}{\\partial y}dy\\right)dzdx \\tag{3.4} \\end{aligned} $$\n$$ \\begin{aligned} \u0026amp;z方向の湧き出し量 \\\\ \u0026amp;= \\left(\\frac{\\partial v_z}{\\partial z}dz\\right)dxdy \\tag{3.5} \\end{aligned} $$\n\\(dV\\)を囲む閉じた面を\\(\\partial dV\\)と名付ける。\\(\\partial dV\\)での湧き出し量は、x, y, z方向全ての湧き出し量の合計となるので、\n$$ \\begin{aligned} \u0026amp;dVでの湧き出し量 \\\\ \u0026amp;= \\iint_{\\partial dV}\\boldsymbol{v} \\cdot \\boldsymbol{n}dS \\\\ \u0026amp;= \\left( \\frac{\\partial v_x}{\\partial x} + \\frac{\\partial v_y}{\\partial y} + \\frac{\\partial v_z}{\\partial z} \\right)dxdydz \\\\ \u0026amp;= \\nabla \\cdot \\boldsymbol{v}dV \\tag{3.6} \\end{aligned} $$\nとなる。\nこれは公式(1)の右辺の微小要素だ。実は、数学の発散\\(\\mathrm{div}\\boldsymbol{v} := \\nabla \\cdot \\boldsymbol{v}\\)とは、各軸\\(x,y,z\\)に対する湧き出し量を合計したものだったのだ。\n内側では打ち消し合い、表面だけ残る 隣り合った微小な六面体\\(dV_i\\)と\\(dV_j\\)の湧き出し量の合計を計算してみる。\n図４．共有する面での湧き出しはキャンセルする 両者で共有する面(\\(A\\)とおく)での湧き出し量は打ち消し合う。お互いに単位法線ベクトルが逆向きだからだ。\n$$ \\boldsymbol{v} \\cdot \\boldsymbol{n_i}dA + \\boldsymbol{v} \\cdot \\boldsymbol{n_j} dA = dA \\boldsymbol{v} \\cdot (\\boldsymbol{n_i} - \\boldsymbol{n_i}) = 0 $$\nよって、\n$$ \\iint_{\\partial{dV_i} + \\partial{dV_j}} \\boldsymbol{v} \\cdot \\boldsymbol{n} dS= \\iint_{\\partial{dV_i} + \\partial{dV_j}の外側} \\boldsymbol{v} \\cdot\\boldsymbol{n} dS $$\n同様に、微小ではない閉曲面\\(S\\)での湧き出し量を考える。\n閉曲面\\(S\\)に囲まれた面積を\\(V\\)とおく。このとき、\\(V\\)は無数の微小な六面体に分割することができる。\n$$V= \\sum_i dV_i$$\n\\(dV_i\\)が成す微小な閉曲面\\(\\partial dV_i\\)における湧き出し量は、式(3.6)によって発散で言い換えることができるので、\n$$ \\iint_{\\partial dV_i} \\boldsymbol{v} \\cdot \\boldsymbol{n} dS = div \\boldsymbol{v} dV_i $$\nまた、\n微小な六面体\\(dV_i\\)同士の隣り合った面での湧き出し量はキャンセルされる 微小な体積要素を足し合わせることはまさしく体積積分なので、総和\\(\\sum\\)を積分\\(\\iiint\\)に書き換えられる まとめると、\n$$ \\begin{aligned} \u0026amp; \\iint_S \\boldsymbol{v} \\cdot \\boldsymbol{n} dS \\\\ \u0026amp;= \\sum_i \\iint_{\\partial dV_i} \\boldsymbol{v} \\cdot \\boldsymbol{n} dS \\\\ \u0026amp;= \\sum_i \\nabla \\cdot \\boldsymbol{v}dV_i \\\\ \u0026amp;= \\iiint_V \\nabla \\cdot \\boldsymbol{v} dV \\end{aligned} $$\nこれがガウスの発散定理(式(1))の意味である。\n図５．表面の湧き出しのみ生き残る ガウスの発散定理は公式を忘れても大丈夫! 湧き出しについての２つのイメージ\n面と体積の言い換え(式(3.4)) 内側は打ち消し合って、表面が残る これさえ覚えていれば、簡単にガウスの発散定理を導出することができる。\n数学は公式の導出を通して、イメージを理解することが大切なんだと思う。私もガウスの発散定理について初めて勉強したのは本記事作成から9年前くらいだが、この２つのイメージを覚えていたので、今でも式(1)を導出することができた。\n","permalink":"https://gotoh-it-school.top/gaussian-divergence-theorem/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eガウスの発散定理を視覚的に理解し、しっかり暗記したい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eガウスの発散定理は、\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e湧き出し量についての表面積視点と体積視点の言い換え\u003c/li\u003e\n\u003cli\u003e微小要素が打ち消し合って、外側の値だけが残る\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eという２点を理解すれば、公式を忘れても、即座に導出できる(\u003ca href=\"/stokes-theorem/\"\u003eストークスの定理\u003c/a\u003eの理解も同様)。\u003c/p\u003e","title":"ガウスの発散定理~微小要素のイメージから分かりやすく証明!~"},{"content":"対象読者 合成関数の微分がイメージできない方 合成関数の微分の手順ではなく、意味を理解したい方 結論 合成関数の微分のことを「なんか分子分母を付け足して微分を展開できること」だと思ってはいないだろうか。以下の式展開は、\\(dy\\)を分子分母に付け足しているだけに見える。\n$$ \\frac{dz}{dx} = \\frac{dz}{dy}\\frac{dy}{dx} $$\nこの式変形は言葉遊びみたいで合成関数の微分の意味やイメージを理解することは難しいだろう。\nしかし、答えは簡単だ。合成関数の微分とは単なる比の掛け算に過ぎない。\n突然だが、3人の戦士に登場いただこう。彼らは以下のような力関係にあるとする。\nAさんはBさんよりp倍強い BさんはCさんよりq倍強い このとき、AさんはCさんよりpq倍強い。これが理解できたのなら、合成関数の微分の意味を理解したも同然だ。だって、合成関数の微分も同じことを表しているのだから。\nと、言われても納得できるはずもない。関数や微分の意味の理解が前提だからだ。なので、以下を順に説明していき、合成関数の微分なんて、簡単であることを示す。\n関数の意味について 微分の意味について 合成関数の微分について 関数とは２つの値の対応関係 高校数学までは関数を把握するためにグラフを多用してきた。 だから、関数とグラフの絵と同じものだと誤解しがちだ。\n関数の定義は以下だ。 $$ \\forall x \\in X, \\exists! y \\in Y, f(x) = y $$\n「\\(\\forall\\)」は「全ての(All)」、 「\\(\\exists\\)」は「存在する(Exist)」を意味する記号である。 「\\(\\exists!\\)」は「ただ1つ存在する(Exist)」という意味だ。\n日本語で言うと、関数とは「どの入力に対してもただ1つの出力が対応する」ということである。 入力1つに対して複数の出力を対応づけることは許されない。\n例えば、関数 \\( f(x) = x^2 \\) は以下のような対応関係を表している。\n入力が1の時、出力は1 (\\(f(1) = 1\\)) 入力が2の時、出力は4 (\\(f(2) = 4\\)) 入力が3の時、出力は9 (\\(f(3) = 9\\)) \u0026hellip; 図1．関数のイメージ 関数は「グラフの絵」というより「入力の集合と出力の集合の対応関係」とイメージできる。 グラフの絵は「入力と出力の座標の集合」である。 入力の集合を定義域、出力の集合を値域と呼ぶ。\n関数 \\(f\\) は以下のように定義域 \\(X\\)、値域 \\(Y\\) を明示して書くことができる。\n$$f: X \\rightarrow Y, f(x) = y$$\n定義域と値域の区別は関数をイメージする上で重要だ。 定義域と値域は別物である例を次に示す。\n定義域と値域が異なる例 関数 \\(f(x) = x^2\\) の定義域を実数全体とする。\nこのとき、負の入力は、2乗によって正として出力される。 つまり、定義域は実数全体なのに対して、値域は非負の実数となる。\n図2．定義域と値域が異なる例 関数とは２つの値の対応関係 高校数学まででは、関数を把握するためにグラフを多用してきた。だから、関数とグラフを同じものだと誤解しがちだ。\n否、「関数」とは、数の関係のことだ。詳しく言うと、入力と出力という２つの数の対応関係のことだ。 関数 \\( f(x) = x^2 \\) は以下のような対応関係を表している。\n入力が1の時、出力は1 (\\(f(1) = 1\\)) 入力が2の時、出力は4 (\\(f(2) = 4\\)) 入力が3의時、出力は9 (\\(f(3) = 9\\)) \u0026hellip; 図1．関数のイメージ このように、入力と出力をはっきりと意識すると、関数のイメージが、「グラフという絵」から、「入力の集合と出力の集合の対応関係」という厳密なものに変わるだろう。また、グラフのイメージも刷新されるはずだ。グラフとは、「絵」というより、「入力と出力の順序対(座標)の集合」という方が相応しいのだ。入力の集合を定義域、出力の集合を値域と呼ぶ。\n関数 $f$ は以下のように定義域 $X$、値域 $Y$ を明示して書くことができる。\n$$f: X \\rightarrow Y, f(x) = y$$\n定義域と値域の区別は関数をイメージする上で重要だ。その練習として、定義域と値域は別物である例を以下に示す。\n定義域と値域が異なる例 関数 $f(x) = x^2$ の定義域を実数全体とする。つまり、入力にはどんな実数を選んでも良い、ということだ。\nこのとき、この関数の値域も実数全体になりそうだが、そうはならない。マイナスの入力は、2乗によって打ち消されてしまうからだ。こうして定義域と値域は一致しなくなる。\n図2．定義域と値域が異なる例 微分の図形的な解釈 高校では、以下のような微分の公式を習っただろう。\n$$\\frac{d}{dx} x^n = nx^{n-1}$$\nこの公式からは計算手順以上の意味を見出せない。微分の意味とは何なのか。\n微分とは、「クネクネ曲がったものでも、局所的に見れば真っ直ぐ」ということを意味する。地球は本当は楕円？であり、曲がっている。だけど、地面に立った人間視点(局所)から見れば、地球は平らに見える。これが微分だ。\n関数の微分は、とある点\\(x=a\\)におけるグラフの傾きを意味する。曲がっている2次関数\\(y(x) = x^2\\)でも、\\(x=a\\)周りのメッチャ狭い区間(局所)の変化は一定の比率\\(\\frac{dy}{dx}(a)=2a\\)になる。この比率自体は点の位置(aの値)で変化するが、その区間内では一定の値として扱える。局所的な変化は一定の比で表すことができる。これが「微分とはグラフの傾きを求めること」の真意だ。\n微分とは、入力の微小変化と出力変化の比 以上で関数と微分の図形的解釈を押さえた。関数の微分のイメージをより厳密にできる準備が整った。\n関数の微分は「入力の微小変化と出力の微小変化は一定の比の関係にある」ことを表す。\nとある入力と出力の関係\\(f(x) = y\\)があるとする。その入力を僅かにずらした値\\(x +\\Delta{x}\\)を入力とするとき、出力も元の値\\(y\\)から僅かに変化するだろう。その変化量を\\(\\Delta{y}\\)とおくと、以下のように書ける。\n$$ \\begin{aligned} \u0026amp; f(x + \\Delta{x}) = y + \\Delta{y} \\\\ \u0026amp; \\Leftrightarrow \\Delta{y} = \\frac{f(x + \\Delta{x}) - f(x)}{\\Delta{x}}\\Delta{x} \\end{aligned} $$\nここで、微分の意味を思い出して欲しい。微分とは、局所的な変化は一定の比で追える、ということだった。言い換えると、以下のように出力の変化は入力の変化との比で表せる。\n$$ \\Delta{y} \\simeq \\frac{df}{dx} \\Delta{x}$$\n厳密な等式ではなく、ニアリーイコール(\\(\\simeq\\))とした理由は、\\(\\Delta{x}\\)が局所的と言えるほど小さいとは限らないからだ。\n\\(\\Delta{x}\\)を十分小さく、つまり微小(局所的)にしたとき、\\(\\Delta{x}\\)は\\(dx\\)と書く。このとき、上式は厳密な等式となる。\n$$ \\begin{aligned} dy = \\frac{df}{dx} dx \\tag{1} \\end{aligned} $$\nこれが関数の微分だ。\n微小という概念は難しいが、任意の実数よりも小さくできる、という意味だ。ゼロではないが、ゼロ以外の如何なる実数よりも小さい値を意味する。詳細は極限の基礎となる、ε-N論法やε-δ論法を参照されたい（ググるのが面倒な方は補足へ)。\n合成関数とは出力と入力を繋ぐこと 「合成関数」とは、複数の関数の入出力を繋げて、１つの関数として表したものだ。\n以下のような2つの関数があるとする。\n$$f: X \\rightarrow Y, f(x) = y$$\n$$g: Y \\rightarrow Z, g(y) = z$$\n\\(f\\)の出力を\\(g\\)の入力として繋げた関数を\\(h\\)とおくと、以下のように書ける。\n$$h: X \\rightarrow Z, h(x) = g(f(x)) = g \\circ f(x) = z$$\n合成関数には、\\(g(f(x))\\)やら\\(g \\circ f(x)\\)のように複数の書き方がある。この合成関数\\(h\\)の表現からは集合\\(Y\\)が消えてしまっているが、２つの関数をつなぐ仲介役として存在している。\n以下で、入力の微小変化が集合\\(Y\\)を介して伝播していくことが合成関数の微分であることを示す。\n合成関数の微分は単なる比の掛け算 合成関数\\(h = g \\circ f\\)において、入力\\(x\\)の微小変化によって、出力\\(z\\)は一定の割合で変化する。\n関数\\(f\\)において、入力\\(x\\)の変化は出力\\(y\\)の変化を引き起こす。入力の変化が微小なとき、出力は入力と一定の比の関係で追える。\n関数\\(f\\)の出力の微小変化は関数\\(g\\)に入力される。関数\\(g\\)の出力\\(z\\)もまた微小に変化し、これも同様に一定の比によって表される。\n$$ \\begin{aligned} dz = \\frac{dg}{dy} dy \\tag{2} \\end{aligned} $$\n以上のように、中間の集合\\(Y\\)を介した変化の連鎖をイメージできるはずだ。この連鎖のイメージが重要であり、その証拠に合成関数の微分は英語で「chain rule(連鎖律)」と呼ばれる。式(1)、(2)より、xとzの微小変化の関係が導ける。\n$$ \\begin{aligned} dz \u0026amp;= \\frac{dg}{dy}dy = \\frac{dg}{dy} \\cdot \\frac{df}{dx}dx \\\\ \u0026amp;=g^{\\prime}(y) \\cdot f^{\\prime}(x) dx \\\\ \u0026amp;=g^{\\prime}(f(x)) \\cdot f^{\\prime}(x) dx \\end{aligned} $$\nこれが合成関数の微分の公式だ。この意味が理解できていれば、\n合成する関数が3個、4個と増えていったとしても、同様に、各々の関数の微分係数を掛け算していけば良い 単に\\(dy\\)を分子・分母にかけて、２つの分数の掛け算にした訳ではない ことが分かるだろう。\nこの比(微分係数)を掛け合わせていく感じは冒頭で唐突に述べた例と全く同じだ。\nAさんとBさんの力関係は、関数\\(g\\)の微分 BさんとCさんの力関数は、関数\\(f\\)の微分 AさんとCさんの力関係は、合成関数\\(g \\circ f\\)の微分 に対応する。\n補足 : 微小の意味 ε-δ(イプシロンデルタ)論法 微分は極限を用いて定義される。\n$$ \\frac{df}{dx} = \\lim_{\\Delta{x} \\to {0}} \\frac{f(x + \\Delta{x}) - f(x)}{\\Delta{x}}$$\n高校数学では、極限と代入の区別はなかった。例えば、0への極限は0を代入した値として扱われた。しかし、極限と代入は異なる。\n以下では、極限の厳密な表現を通して、「微小」や「十分小さい」の意味を確認する。\n例えば、\\(f(x)=x^2\\)とおくと、その微分は\\(f\u0026rsquo;(x) = 2x\\)となる。この厳密な表現は以下のようになる(ε-δ論法という)。\n$$ \\forall \\epsilon \u0026gt; 0, \\exists{\\delta} \u0026gt; 0 s.t. \\\\ 0 \u0026lt; \\Delta{x} \u0026lt; \\delta \\Rightarrow \\frac{\\Delta{f}}{\\Delta{x}} - 2x \u0026lt; \\epsilon \\tag{3}$$\n\\(\\Delta{f} = f(x + \\Delta{x}) -f(x)\\)とおいた。\nこの式(3)を意訳すると、「いい感じの\\(\\Delta{x}\\)を選べば、\\(\\Delta{f} / \\Delta{x} - 2x\\)は任意の正の実数\\(\\epsilon\\)よりもを小さくできる」となる。\n「\\(\\forall\\)」は「任意の」、「\\(\\exists\\)」は「存在する」を意味する。\n「任意の」というのが「微小」を理解するためのポイントだ。\nこれでもかってくらい小さな値を\\(a_0\\)と適当においてみる。\\(\\epsilon\\)は任意に選ぶことができるため、より小さな値にすることができる。例えば\\(\\epsilon = a_0 / 2 = a_1\\)と選ぶことができる。\nさらに、\\(\\epsilon\\)は任意なため、\\(\\epsilon = a_1 / 2 = a_2\\)のようにさらに小さい値に選び直すことができる。\nこのように、\\(\\epsilon\\)は無限に小さく選び直すことができる。これが「任意の」の意味だ。0には届かないんだけど、0以外の如何なる値よりも小さい。これが「微小」や「十分小さい」などの意味だ。\nでは、微小を踏まえて、式(3)の証明を行う。\n普通に計算すれば、以下の等式が成り立つ。\n$$ \\frac{\\Delta{f}}{\\Delta{x}} - 2x = \\Delta{x} $$\nここで、\\(\\delta\\)をとある値と定めてみる。例えば、\\(\\delta= \\epsilon / 2 \\)としてみる。このとき、\\(\\Delta{x} \u0026lt; \\delta\\)とおくと、如何なる\\(\\epsilon\\)においても、以下が成り立つ。\n$$ \\frac{\\Delta{f}}{\\Delta{x}} - 2x \u0026lt; \\epsilon/2 \u0026lt; \\epsilon \\tag{4}$$\n別に、\\(\\delta= \\epsilon / 2 \\)である必要はなく、\\(\\delta= \\epsilon / 3 \\)でも\\(\\delta= \\epsilon / 10 \\)でもOKだ。重要なのは、任意の\\(\\epsilon\\)よりも小さな\\(\\delta\\)が存在し、常にそれを選ぶことができる、という点だ。\nこのように、\\(\\delta\\)よりも小さい\\(\\Delta{x}\\)を\\(dx\\)と表したのだった。\n式(4)は「\\(\\Delta{f}/\\Delta{x}\\)は\\(2x\\)に限りなく近づいていく」ことを示している。これが極限であり、\\(f(x) = x^2\\)の微分が\\(2x\\)であることの意味だ。\n","permalink":"https://gotoh-it-school.top/chain-rule/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e合成関数の微分がイメージできない方\u003c/li\u003e\n\u003cli\u003e合成関数の微分の手順ではなく、意味を理解したい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e合成関数の微分のことを「なんか分子分母を付け足して微分を展開できること」だと思ってはいないだろうか。以下の式展開は、\\(dy\\)を分子分母に付け足しているだけに見える。\u003c/p\u003e","title":"[厳密なイメージで分かりやすく証明]合成関数の微分は要するに比の掛け算"},{"content":"対象読者 人工知能の歴史を数式なしで簡単に学びたい方 ディープラーニングは従来のAI技術と比べて何が凄いのか知りたい方 結論 人工知能は現在3回目のブームを迎えている。以下にそれぞれの技術的な主役を列挙する。\n1956~1970:第1次ブーム(推論・探索) 1980年代 :第2次ブーム(エキスパート・システム) 2012~現在 :第3次ブーム(ディープラーニング) 以下でそれぞれのブームの興りと終焉を見ていく。\n第１次ブーム(1956~1970) コンピュータの目覚ましい計算能力を見て、人はコンピュータが人間を超えるのではないかと感じた。 以下のようなことをAIが実現するのを目の当たりにして、人々は熱狂した。\n数学の定理を自動で証明 英語の指示に従って積み木を動かす ものすごい速さで迷路のゴールを見つける [1997年]チェスで人間に勝つ(IBMのディープブルー) 第１次ブームの終焉 コンピュータはルールや対象・操作が明確で単純な問題(トイ・プロブレム)しか解けないことが分かってきた。 しかし、人が対峙する実際的な問題は曖昧で複雑だ(e.g. 会話、経営、デザイン)。\nAIがやっていたことは膨大で力任せな探索(ブルートフォース)でしかなかった。 計算能力を発揮し、力任せに場合分けを解くくことで上記のタスクをこなしただけだった。 電卓は人間より遥かに高速に計算をやってのける。 AIはちょっと複雑な対象に適用できるようになった電卓と大差なかったのだ。\nこうしてAIは実用に堪えないことが分かり、ブームは終了した。\n第２次ブーム(1980年代) 実用では使えなかったAIだったが、専門的(エキスパート)な知識を組み込むことによりそれが可能になり、 再びブームが巻き起こる。\n[1970年代初め]患者に質問し、回答を得ることで、病気を診断できる(マイシン) [1960年代]未知の有機化合物を特定できる(DENDRAL) [2011年]クイズ番組にてチャンピオンに勝利(IBMのワトソン) 第２次ブームの終焉 知識は条件文の組み合わせによって表現された。 しかし、そこには以下のような困難な問題があった。\n専門家へのヒアリングにかかる知識抽出コスト 知識間に矛盾が生じないよう管理 知識を記述すること(e.g. 胃のあたりがムカムカする、という曖昧な文に対してどう解釈するか) 結局、AIは概念を理解している訳ではなく、 入力(e.g. 質問の解答)に対して、条件分岐に従って出力しているに過ぎなかった。 その条件分岐は人間が設計しなければならず、 入力データのどこに着目するかは研究者の経験と直観に依存した職人技によって決められた。\nこうした困難さに直面したAI業界は人々からの高すぎる期待を裏切り、ブームは幕を閉じた。\n第2次ブームまでのAIの限界 人間にチェスやクイズで勝ち、目覚ましい性能を見せつけたAIだった。 しかし、AIがやったことは膨大な探索と条件分岐の処理に過ぎず、人間のような知性を実現できなかった。\n以下でAIに解けない２つの問題をまとめる。ポイントは人間の常識を\nフレーム問題 フレーム問題とは、現実世界から問題解決と関連のある情報のみを選び出すことが困難である、という問題だ。\n人間はフレーム問題を自然に解いている。 例えば、料理をする、という問題を解く時、材料、調理器具、火加減等に着目して、適切に\nグランディング問題 グランディング問題とは、AIは記号とその意味を結びつけることが難しい、という問題だ。\n人間は言葉を操る。言葉とは、ある概念を表現する\n第3次ブーム(2012年~現在) 2012年に画像認識の世界的なコンペが開催された。 ヨットや花、動物などが撮られた画像から、被写体のラベルを言い当てる精度が競われた。 そこでは東大やオックスフォード大などの名立たる参加者が画像認識の失敗率26%~あたりでせめぎ合っていた。\nそこにトロント大がディープラーニングをひっさげて初参加し、 失敗率15%台の桁違いの高精度を示し、優勝した。 失敗率は1年で1%下げるのがやっとだという世界だったため、 この出来事は大きな衝撃となり、第3次ブームが幕を開けることとなった。\n今までのブームとは訳が違うディープラーニングの凄さ ディープラーニングのブレークスルーは第２次ブームでの限界であった知識の表現を自動的に獲得できる点だ。 これにより、1・２次ブームでの限界を補完でき、AIは大きく飛躍することになる。\n2016年、AIは囲碁で世界チャンピオンに勝利した(AlphaGo)。 囲碁はチェスに比べて、次の一手を決めるための盤面の評価が困難だ(2次ブームでの限界)。 その評価方法をディープラーニングを用いることにより、自動で獲得できるようになった。\n今後(いや、現在も)、世界はディープラーニングによって大きく変わっていくことは避けられないだろう。\nディープラーニングの限界 知識表現を自動で獲得できる点がディープラーニングの\n日本のAI開発現場 やはり、ブ\n参考 人工知能は人間を超えるか[松尾　豊]] ","permalink":"https://gotoh-it-school.top/ai-history-through-deep-learning/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e人工知能の歴史を数式なしで簡単に学びたい方\u003c/li\u003e\n\u003cli\u003eディープラーニングは従来のAI技術と比べて何が凄いのか知りたい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e人工知能は現在3回目のブームを迎えている。以下にそれぞれの技術的な主役を列挙する。\u003c/p\u003e","title":"人工知能(AI)の歴史 ~ディープラーニングに至るまで~"},{"content":"対象読者 タイトルの件について納得できない方 約束事として納得できない方 結論 ネット上にはこの件に関する誤った意見が散見される。 しかし、これは定義を普通に追えば証明できる。\nただし、その形式的な証明に納得するためには 数学と日常会話の「ならば」の違いを理解する必要がある。 その詳細は他記事に譲る。\n本記事では、ネット上の議論をまとめた後に定義に沿って証明する。 また、証明の別表現を補足し、数学の論理記号がただの空虚な形式ではないことを示す。\nネット上で見られる意見(参考※1) 「なぜ空集合が任意の集合に含まれるのか」について、ネット上のQ\u0026amp;Aで以下のような意見があった。\nそう決めれば都合がいいから 対偶で証明すればおｋ。 真理値表を使わずに理解したい。 それぞれに対して、以下のように思う。\n定義を追えば証明できる。余分な約束事など持ち出す必要はない 対偶を使ってもいいが回りくどいだけ 真理値表は避けて通れない。真理値表がただの羅列に見えるのががモヤモヤに繋がったのだと思う。 これは、数学と日常会話の「ならば」の違いを押さえることで解消できる ということで、正々堂々と証明するために定義を確認する。\n数学の「ならば」の定義 数学における「ならば \\(\\Rightarrow\\)」は２つの真理値 \\(P\\)、\\(Q\\) の入力に対して、 １つの真理値を出力する2項演算子だ。\n\\(P\\) と \\(Q\\) を「命題」とする。 命題とは真か偽かのいずれかとして判断できる文のことだ。\n\\({1, 2, \\dots}\\) を自然数というのと同じで、真や偽を「真理値」という。\n真理値は2通りある。 よって、\\(P\\) と \\(Q\\) の演算は \\(2 \\times 2 = 4\\) 通りある。 以下に \\(\\Rightarrow\\) の入出力の対応表をまとめる。これを真理値表という。\n表1．「ならば」の真理値表 \\(P\\) \\(Q\\) \\(P \\Rightarrow Q\\) ① 真 真 真 ② 真 偽 偽 ③ 偽 真 真 ④ 偽 偽 真 これが数学における「ならば」の定義だ。\n空集合の定義 空集合とは、要素を持たない空の集合であり、\\(\\phi\\)と表す。\nつまり、あらゆる要素\\(x\\)は空集合\\(\\phi\\)には属さない。記号で書くと、\n$$x \\notin \\phi$$\nこうとも書ける。\n$$ x \\in \\phi は常に偽 \\tag{1}$$\n部分集合、含むの定義 集合\\(A\\)が集合\\(B\\)に含まれることは、\\(A \\subset B\\)と表す。 「\\(A\\)は\\(B\\)の部分集合である」と読んだりする。\nこれは「あらゆる要素\\(x\\)は\\(A\\)に属する ならば \\(B\\)にも属する」という意味であり、数式で以下のように書く。\n$$ \\forall x, x \\in A \\Rightarrow x \\in B $$\n「\\(\\forall\\)」は全称量化子という。Allの\u0026quot;A\u0026quot;を逆さにしてできた記号であり、「全て」や「任意の」という意味だ。\n「空集合が全ての集合に含まれる」の厳密な表現 さて、定義が出揃った。\nあらゆる集合\\(A\\)について(\\(A=\\phi\\)の場合でさえ)、\n$$ \\emptyset \\subset A $$\nつまり、\n$$ \\forall x, x \\in \\emptyset \\Rightarrow x \\in A \\tag{2} $$\nが常に成り立つのはなぜか問うことが本記事の目的だった。 では、式2が真であることを示す。\n定石通りの証明 本記事の問い(式2)を「ならば」の真理値表(表１)に当てはめると、\n\\(P\\)は \\(x \\in \\phi\\) \\(Q\\)は \\(x \\in A\\) となる。\n「\\(\\forall\\)」はどこにいった？って感じだが、無視しておｋだ(補足)。\n空集合の定義(式1)より、\\(P\\)は常に偽である。つまり、表1の③と④の状況に絞られる。 このとき、\\(Q\\)の真偽に関係なく、\\(P \\Rightarrow Q\\)は真だと分かる。\n\\(A = \\phi\\) のとき、\\(Q\\)は偽となる。表１の④の状況である。このときでも式2は真。 空集合は空集合をも含む。\nよって、空集合は「あらゆる集合」に含まれる。証明終わり。\nこれは直観的には納得できないかもしれないが、迷うことはない。定義を追うだけだ。\nアレンジ版の証明 いきなり「ならば」の真理値表を持ち出されて、「はい、証明完了♪」なんて言われても納得できねえよ！\nということで、定石通りの証明にアレンジを加える。\n上記の証明が納得しがたい理由は、表１がただの真理値の羅列にしか見えないからだ。 しかし、「ならば\\(\\Rightarrow\\)」は日常語の「ならば」の本質を抜き出すことで定義されたものだ。\n詳細は棚上げするが、日常会話に色んな言い回しがあるのと同様に、 「ならば\\(\\Rightarrow\\)」も別の表現が可能であることを以下で確認する。\nその確認を通して、表1は無味乾燥した記号の羅列ではなく、日常会話の「ならば」が潜んでいることを感じてもらいたい。\n「ならば」の別表現 日本語の「ならば」の言い換えを考える。\n以下の文A, Bは同じ意味を持つので、互いに言い換えることができそうだ。\nA: 「テストの点数が良ければ、ゲームを買ってあげる」 B: 「テストの点数が良いのに、ゲームは買ってあげない、ということはない」 ここで、\n\\(P\\)を「テストの点数が良い」 \\(Q\\)を「ゲームを買ってあげる」 とおき、AとBを記号で表し直すとそれぞれ\n\\(P \\Rightarrow Q\\) \\(\\lnot (P \\land \\lnot Q)\\) と書ける。Bの「のに」が「かつ(\\(\\land\\))」に対応しているのがちょっと分かりにくいかもしれない。しかし、Bは\n「テストの点が良い状況」と「ゲームを買ってもらえない状況」が同時には起こりえない。 とも読み替えられる。「同時に」と「かつ」は同義なので、Bの記号化は妥当だろう。「かつ」は、「のに」、「にも関わらず」のように色んな言い回しが考えられる。\n表2．「かつ」の真理値表 \\(P\\) \\(Q\\) \\(P \\land Q\\) ① 真 真 真 ② 真 偽 偽 ③ 偽 真 偽 ④ 偽 偽 偽 「\\(\\lnot\\)」は否定を表す。真を偽に、偽を真に変換する。-1を掛けると符号が逆転することに似ている。\n表3. 「ではない」の真理値表 \\(P\\) \\(\\lnot P\\) ① 真 偽 ② 偽 真 表2と表3を参考にし、B、すなわち \\(\\lnot (P \\land \\lnot Q)\\) の真理値表を作成する(表4)。\n表4．「ならば」の別表現 \\(P\\) \\(Q\\) \\(\\lnot Q\\) \\(P \\land \\lnot Q\\) \\(\\lnot(P \\land \\lnot Q)\\) \\(P \\Rightarrow Q\\) 真 真 偽 偽 真 真 真 偽 真 真 偽 偽 偽 真 偽 偽 真 真 偽 偽 真 偽 真 真 赤色の部分 は一致していることが分かる。つまり、日常会話の感覚での言い換えが、数学上で通用したのだ。 「ならば」の真理値は適当な羅列ではなく、日常通りの語感が表現されている。\n証明 以上の文A,Bの言い換えを用いると、本記事の問題(式2)は以下のように変形できる。\n$$ \\forall x, \\lnot(x \\in \\emptyset \\land x \\notin A) \\tag{3} $$\n左辺 \\(x \\in \\phi\\) は空集合の定義(式1)より、常に偽である。\n\\(P \\land Q\\)は片方が偽の時、もう片方の真偽を問わず、偽となる(表2)。 常に偽である命題が否定されたものが命題(式3)である。 よって、式3は常に真。\n補足: 全称量化子による述語の束縛 実は、\\(x \\in X\\)のような文は述語と呼ばれる。 この文は「\\(x\\)は\\(X\\)に属する」というように、「主語+述語」、という構造で読める。 \\(x\\)は主語に対応する。 その真偽は\\(x\\)に何を代入するかで変わってくる。 つまり、主語を確定しない限り、述語の真偽は確定しない。\nしかし、主語を確定せずに述語の真偽を決定する道具がある。 それが「任意の」という意味の全称量化子だ。 全ての具体的な値(主語)の代入を一括で評価して、述語の真偽を確定することが「全称量化子」の作用だ。\nでは、一括で代入するにはどうすれば良いのだろうか。 前提の一般的性質から結論の一般的性質が導ければ、一括の代入は達成されたと言えるだろう。\n例えば、「任意の自然数において、４の倍数(集合\\(F\\))は２の倍数(\\(集合T\\))に含まれる」という文を考える。 「4は2の倍数、8も2の倍数、\u0026hellip;」とひとつずつチェックせずとも、 「前提を満たすようなテキトーな主語が結論の性質を満たす」ことを示せばよい。\n前提を満たす(任意の)値を \\(n \\in F\\) とおく。 すると、その性質より、\\(n = 4m (m \\in 自然数)\\) と言える すると、\\(n = 2(2m)\\) と言える。 よって、\\(n\\) は２の倍数となり、\\(n \\in T\\) という感じで、まずは前提を満たす主語を置けばよい。\nよって、\\(\\phi \\subset A\\)も、まず、\n\\(x \\in \\phi\\)とおく というように議論を始めればよかったのだ。\n参考 OKWAVE「空集合はすべての集合の部分集合である」の説明 論理学入門 [三浦　俊彦] ","permalink":"https://gotoh-it-school.top/why-empty-set-is-included-by-any-set/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eタイトルの件について納得できない方\u003c/li\u003e\n\u003cli\u003e約束事として納得できない方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eネット上にはこの件に関する誤った意見が散見される。\nしかし、これは\u003cstrong\u003e定義を普通に追えば証明できる\u003c/strong\u003e。\u003c/p\u003e","title":"[定義からわかりやすく]なぜ空集合はあらゆる集合の部分集合なのか"},{"content":"対象読者 以下に飽き飽きした方\n「猫クラス、犬クラス」等の説明 オブジェクト指向の抽象的で難しい用語 結論 クラスはオブジェクト指向の土台である。 しかし、クラスを使う動機やメリットを理解することは容易ではない。 抽象的で難しい用語が溢れていて、初心者は圧倒されてしまうからだ。\nそれらの難解な用語を理解することは大事だ。\nしかし、そんなことを理解せずともクラスを使うことには十分なメリットがある。\nそこで本記事では、クラスの最低限のメリットを解説する。 そしてオブジェクト指向へ馴染んでいくための基礎を提供する。\n本記事を要約すると、 クラスの最低限のメリットとは、グローバルな変数と関数をユーザ定義型としてまとめることで、 影響範囲をインスタンススコープへ制限し、プログラマの認識負荷を下げ、コードを理解しやすくできることだ。\n何を言ってるのか分からないと思う。 なので、まずはクラスは手続き型プログラミングの限界を超えるために生まれたことを見る。\n手続き型プログラミングという自然なアプローチ オブジェクト指向は難しい。 なぜなら、プログラムに対する考え方が不自然だからだ。\n自然に考えるならば、プログラムは処理を順番に並べることで表現することになる。 このようなプログラミングの捉え方を「手続き型」という。\n学校の運動会のプログラムも時刻順にイベントを箇条書きするようなものだ。\n初心者は十中八九、 「まずはこういうデータを用意して、その値がこうならば、こう処理して\u0026hellip;」 みたいに処理を時系列で箇条書きしていくことでプログラムを作っていく。\n手続き型プログラミングで主役となる構成要素は以下だ。\nグローバル変数 関数 条件分岐(if文など) 繰り返し文(for文、while文など) main文はこれらを駆使して処理を順次実行していく。\n手続き型プログラミングの限界 グローバル変数 main文に多くの手続きが並んていると理解することが難しくなる。 main文の冒頭の大量の変数宣言で萎えた人も多いのではなかろうか。\nそこでまとまった処理を小分けする仕組みが関数である。 関数の組み合わせることでmain文を簡潔で読みやすくできる。\nしかし、ここで\n関数を独立させたい 関数を組み合わせたい という相反する要求が生じる。\n独立した関数同士が情報をやり取りするためにはグローバル変数が使用できる。\nしかし、グローバル変数は、\n関数が外部の影響を受けてしまい、独立性を損ねてしまう どこからでも値を変更できてしまうため、値の推移が理解しづらくなる 故に、コードが理解しづらくなる。 これが手続き型プログラミングの限界だ。\nクラスとは関連する変数と関数をまとめる仕組み 以上から、関数の独立性を保つことは難しいことが分かった。 そこで、オブジェクト指向は別のアプローチをとる。 すなわち、関数を独立させるのではなく、データと関数のまとまりを独立させることを目指す。\n実は、グローバル変数と関数には関連があることが多い。 言い換えると、複数の関数は同じグローバル変数を共有する。 グローバル変数は複数の関数に橋渡しするのだから当然だ。\nグローバル変数とそれに関連する関数をまとめて独立させることができれば、 グローバル変数の問題を回避しつつも、関数間でのデータのやり取りが可能となる。\nクラスとは、グローバル変数と関数を関連によって分類(class)し、まとめるための仕組みだ。 大量のファイルを関連性によってフォルダに分類することで管理しやすくなることと同様に、 クラスによる分類もプログラムを理解しやすくしてくれる。 一度に認識しなければいけない情報量を抑えること(抽象化)がプログラミングの様々なテクニックのエッセンスだ (詳細はこちら)。\nちなみに、クラス内にまとめられた変数や関数のことを総称して「メンバ」といったり、\n変数は「プロパティ、フィールド、メンバ変数、インスタンス変数」 関数は「メソッド、メンバ関数、インスタンス関数」 などと呼ばれる。\nここまでの説明では、クラスは手続き型と一線を画するもののように見えると思う。 しかし、手続き型には既に「構造体」というクラスの前身となる仕組みがあった。\nクラスとは構造体の拡張 構造体とは、複数の変数(データ型)を１つにまとめるためのユーザ定義型だ。C言語やFortranのような言語に導入されている古い技術だ。\n例えば、座標ならば、x,y,zのような３つの実数(浮動小数点)をまとめて定義できる。\nこのように、構造体によって関連するグローバル変数を分類することで、一度に認識しなければならない情報量を減らすことができる。\n変数だけでなく、関数もまとめられるように構造体を拡張したものがクラスだ。\nクラスを実現するためには以下の３つの構成要素が必要となる。\nグローバル変数と関数を詰め込められる入れ物(インスタンススコープ) その入れ物を指示するための名前(クラス名) クラスをメモリ上に配置する機能(インスタンス化) 他にも継承やアクセス修飾子(private/public)などの重要な要素もあるが、それらを棚上げすれば、クラスは構造体とほぼ同じだ。\n関数を持たせることができる構造体(=クラス)の何がそんなに嬉しいのか。以下の具体例を通して手続き型とクラスの違いを見ていく。\nクラスの定義 まずは手続き型のコードを示す。\n例えば、三角形の計算に関連する関数があるとする。グローバルな座標p1,p2,p3は以下の３つの関数と関連している。\n//グローバル変数 p1 = x p2 = y p3 = z function calc_triangle_area(){ global p1, p2, p3 //グローバル変数を関数内で使用 //面積の計算 } function calc_degree(){ global p1, p2, p3 //p1,p2の線分とp1,p3の線分が成す角度の計算 } function calc_normal(){ global p1, p2, p3 //三角形の法線ベクトルの計算 } これをクラスで書き換えてみる。\nclass Triangle { constructor(p1, p2, p3){ this.p1 = p1 this.p2 = p2 this.p3 = p3 } calc_area(){ //this.p1, this.p2, this.p3を用いて面積を計算する } calc_degree(){/*省略*/} calc_normal(){/*省略*/} } 単に関数などをclassの括弧内に閉じ込めただけに見える。 この書き換えの何が嬉しいのだろうか。両者の三角形関連の操作の例を比較する。\nクラスのインスタンス化・コンストラクタ まだクラス定義によって新たなデータ型を作成しただけなので、クラスを動作させることはできない。 そこで、以下のような記述をまず行う必要がある。\n// インスタンス化 tri = Triange(x, y, z) 文字や数値のような基本データ型は、値を指定してメモリ上に配置(allocate)できる。 このメモリの場所の情報(ポインタ)を持ったものが変数である。\n構造体は複数の値をまとめてメモリ上に配置できるユーザ定義型だ。 しかし、定義を記述しただけではメモリ上へは配置されない。 基本データ型と同様に、値を指定してメモリ上に配置しなければならない。\nクラスもユーザ定義型であり、クラスにメモリを割り当てることを「インスタンス化」という。 allocateされたメモリの場所へのポインタを「インスタンス」という。\nインスタンス化する際の動作を定義したメソッドのことを特別に「コンストラクタ(constructor)」という。\n上記のTriangleクラスのコンストラクタでは、引数で与えられた実数を自身(this)へセットしていることを表している。\nインスタンス化してはじめて、メソッドを動作させることができる。\narea = tri.calc_area() deg = tri.calc_degree() norm = tri.calc_normal() アクセスを制限するインスタンススコープ 上では、しれっとメソッドを呼び出したが、一般にメンバには次のようにアクセスできる。\nインスタンス.メンバ名 もともとグローバル変数はどこからでもアクセスできた。 しかし、メンバはインスタンスを通じて(ピリオドで繋いで)のアクセスしかできなくなった。\n名前の有効範囲を「スコープ」と呼ぶ。 グローバル変数は至るところからアクセスできる(グローバルスコープ)。 メンバはインスタンス内でのみ有効である(インスタンスコープ)。\nインスタンスによってスコープが制限されることで、より厳密に分類を表現できる。 グローバルスコープにある要素はプログラマがそれぞれ用途を識別して利用するしかなかった。 グローバルな名前がたくさんあるのは、大量のファイルから探し物をするのと同様に大変だ。\n一方、メンバはアクセスが制限されているため、識別対象を減らすことができ、コードが理解しやすくなる。 特定のフォルダの中身だけ見れば済むのと同じだ。\n手続き型では同じ接頭辞などによる命名で同じグループを表現したりする。しかし、プログラマの認識負荷を下げることができない。\nたくさん作れる 一方、手続きバージョンのmain文は以下だ。\n//グローバル変数 p1 = x p2 = y p3 = z area = calc_triangle_area() deg = calc_degree() norm = calc_normal() ここで、別の三角形について計算したくなったとしよう。 この時、クラスのメリットが発揮される。\n手続きバージョンの場合、グローバル変数と関数をさらに定義しなればならない。\n//追加のグローバル変数 p1_add = x2 p2_add = y2 p3_add = z2 //追加の関数 function calc_triangle_area2(){ global p1, p2, p3 //グローバル変数を関数内で使用 //面積の計算 } function calc_degree2(){ global p1, p2, p3 //p1,p2の線分とp1,p3の線分が成す角度の計算 } function calc_normal2(){ global p1, p2, p3 //三角形の法線ベクトルの計算 } area = calc_triangle_area() deg = calc_degree() norm = calc_normal() //追加の処理 area2 = calc_triangle_area2() deg2 = calc_degree2() norm2 = calc_normal2() ぶっちゃけこの程度の処理ならば、引数を導入すれば、 関数をさらに定義する必要はない。 しかし、現場レベルのより複雑な手続き型コードでは、 このような(関数がグローバル変数による依存性によって再利用できなくなる)状況はよく見られる。\nさらに３つ目の三角形を計算しなければならなくなったら、定義を追加しなければならない。めんどくさい。。。\nしかも、めんどくさいで済むならまだマシだ。 それぞれの三角形ごとに定義した関数には重複部分があり、 修正が必要になったら、各関数を修正しなければならず、修正漏れが出る危険が生じる。\n一方、クラスバージョンはかなりスマートに書けるし、三角形の数が増えても問題なく対処できる。\n//追加のインスタンス化 tri2 = Triangle(x2, y2, z2) area = tri.calc_area() deg = tri.calc_degree() norm = tri.calc_normal() //追加の処理 area = tri2.calc_area() deg = tri2.calc_degree() norm = tri2.calc_normal() とある記事では、 クラスの本質は上記のように「たくさん作れる(マルチプルインスタンス)」ことだと解説されている。 かなりのメリットであることは間違いない。 しかし、たくさん作れるという特性はデータ型一般のものであって、クラス固有のものではない。 やはりクラスの本質とは、構造体の拡張によって、グローバルな要素を分類できることであって、 その結果、マルチプルインスタンスが可能になっただけの話だ。\nさらにクラスを有効に使うために 以上はクラスの最低限のメリットであり、構造体に毛が生えた程度のことしか解説していない。 とはいっても大きなメリットだ。 まずはこのメリットを意識しながらクラスを使っていくことをオブジェクト指向への足掛かりとしていただければ幸いだ。\nしかし本記事では棚上げしたが、クラスには他にも様々な機能やテクニックがある。\nアクセス修飾子 カプセル化 ポリモーフィズム 継承 委譲(コンポジション) デザインパターン SOLIDの原則 テスト駆動開発 ドメイン駆動設計 いろいろあるが、全てクラスによる分類をより鋭く行っていく方法に過ぎない。 いずれにせよ、これらの基本はクラスの分類する機能にある。\n参考 リーダブルコード [Dustion Boswell] オブジェクト指向でなぜつくるのか [平澤　章] 疑りぶかいあなたのためのオブジェクト指向再入門 ","permalink":"https://gotoh-it-school.top/class-on-programming/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cp\u003e以下に飽き飽きした方\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e「猫クラス、犬クラス」等の説明\u003c/li\u003e\n\u003cli\u003eオブジェクト指向の抽象的で難しい用語\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003eクラスはオブジェクト指向の土台である。\nしかし、クラスを使う動機やメリットを理解することは容易ではない。\n抽象的で難しい用語が溢れていて、初心者は圧倒されてしまうからだ。\u003c/p\u003e","title":"[プログラミング]クラスとは なぜ重要？動機やメリットは?"},{"content":"対象読者 プログラミング初学者の方 色々ググってみたが、本タイトルについて理解できなかった方 結論 両者をググったものをまとめると、\nライブラリとは、再利用可能な部品をまとめたもの フレームワークとは、枠組みが予め決まっている部品をあつめたもの と出てくる。\nしかし、こんな抽象的な説明では、何を言ってるかワケワカメだ。\nそこで、本記事では、\nプログラミングの語彙による説明 文章作成の比喩による説明 という2本立てで、ライブラリとフレームワークについて説明する。\nライブラリとは、再利用可能な部品のまとまり プログラムにおける部品とは再利用できる単位のことで関数やクラスのことだ。 部品をまとめたものをライブラリと呼ぶ。 特に、クラスを集めたものをクラスライブラリと呼ぶ。\n上のライブラリとフレームワークのまとめで、共通のキーワード「部品」が出てきた。 まず、これを押さえなければ、ライブラリやフレームワークについて理解することはできない。\n部品とは再利用できるプログラミングの単位 関数とは、ある入力に対して、出力を返すものだ(※1)。\nその出力を得るための具体的な処理は、関数を使う側からは見えない(※2)。 それ故に、コードの前後の文脈とは関係なしに、いつでも、 どこからでも関数を使い回すこと(再利用)ができるため、部品と呼ぶことができる。\nクラスとは、変数と関数をまとめた自作のデータ型のことだ。 関連のあるグローバル変数と関数を１つにまとめたもので、関数よりも大きい部品だ。\n関数の具体的な処理が状態によって変化する場合、グローバル変数を使うことになる。 例えば、真偽値の状態を表すグローバル変数(フラグと呼ぶ)によって、関数の出力を変化させたりするような処理だ。\nグローバル変数はその変数に依存した処理を作り出し、部品化を阻害する。 上の例の場合、関数とフラグは絡み合っていて、関数のみを抜き出して、他の場所で再利用することができない。 クラスはこの問題を解決できる、便利な部品だ。\n※1 入力のことを引数と呼び、 出力を戻り値、返り値などと呼ぶ。 出力を持たない関数を特にサブルーチン呼ぶ。 ※2 呼び出し側から見えなくすることは、プログラミングにおいて非常に重要で、カプセル化と呼ばれる。\nライブラリを用いたライブラリ 自分で作った部品をまとめるだけで、それは自作ライブラリとなる(例えば、関数を数個まとめる)。\n１からライブラリを自作する場合、作者は組み込み(※1)のデータ構造と関数を組み合わせることで、部品を作ることになる。 しかし、他のライブラリの部品を使ってもよい。 こうして作られたライブラリは、謂わば、ライブラリに依存したライブラリと言える。\nこのように、ライブラリを用いたライブラリみたいなものも存在する。\n※1 組み込み(ビルトイン)とは 組み込みとは、そのプログラミング言語に予め備わっている部品のことだ。 例えば、データ構造や標準出力する関数(print)などだ。\n配列や辞書のようなデータ構造は構造体やクラスを用いて自作することも可能だが、 ユーザーの便宜を図って、予めプログラミング言語がそれらの機能を提供してくれる。これがビルトインだ。\nフレームワークとは、枠組みが予め決まっている部品をあつめたもの フレームワークも部品のあつまりのことでありライブラリだ。 さらにその部品群に枠組みが備わった特殊な場合をフレームワークと呼ぶ。\nこの「枠組み」というのが抽象的で難しく、 これを厳密に理解するためにはオブジェクト指向を理解しなければならない。\n枠組みとは、インターフェースを守ることだ ここでいう枠組みとは、部品群を予め決まった方法で組み合わせることでプログラムが強制されるこという。\n本記事では、プログラミングを文章作成で例えることで、 初学者の方にも分かりやすくライブラリとフレームワークの違いを説明する。\n文章作成の比喩では、\nライブラリは引用 フレームワークは踏襲 である。\n一方、プログラマが言いそうな感じでは、\nライブラリは機能の再利用 フレームワークは構造の再利用 である。\nまずは、文章作成の比喩について説明し、 その後、プログラミングの用語を用いてより厳密に説明する(文章作成の比喩をスキップはこちら)。\n文章作成の比喩 通常、プログラミング言語とは、高級言語を意味する。 高級言語とは、人間にとって分かりやすい言葉によって、パソコンへの命令を記述するためのものだ。\n故に、プログラム(厳密にはソースコード)は人間が読むためのものであり、文章に他ならない。 よって、ライブラリやフレームワークを文章作成の観点から説明することができる。\nライブラリとは引用である 文章を一から全てを書き尽くすことは大変だ。しかし、悩む必要はない、ライブラリさえあればね！\n外部にある文章を引用することで、自前で書かなければならない文字数を削減することができる。 引用した前提を土台として、より簡潔に、より高度な内容の執筆に専念できるようになる。\n外部にある文章をライブラリと呼ぶ(故にライブラリを外部モジュールと呼んだりする)。以下で例を見る。\n例：高校数学の教科書を書く あなたが高校数学の教科書を書くことになったとしよう。\nそして、余弦定理(\\(c^2=a^2+b^2 -2ab\\cos\\theta\\))についてまとめることになってしまった。これを証明するためには、\n三平方の定理 三角形の相似 \u0026hellip; 等の中学数学の知識が必要になる。さらに、中学数学を理解するためには算数の知識が必要となる。 しかし、それらの知識は高校以前に学習済みのはずであり、再び、それらを説明から始めるならば、 大変な労力が必要となる。 そこで、**高校以前の内容は小中学生時代の教科書を参考にしてもらう(引用)**ことにすれば、 あなたは、余弦定理の証明のみに専念することができる。この例では、算数と中学数学の教科書がライブラリにあたる。\n中学数学は算数を土台にしているため、中学数学の教科書は算数の教科書を引用している。 同様に、ライブラリを利用して作られたライブラリも存在する。\nフレームワークとは踏襲である 文章をどのように組み立てれば、より良く内容を伝えることができるのだろうか。 特に、長文を書く時、文章の構成はより重要となる。しかし、悩む必要はない、フレームワークさえあればね！\n文章構成のテンプレートのことをフレームワークと呼ぶ。 これがあれば、テンプレートに沿って書き進めるだけでよく、文章の組み立てに悩むことはない。 しかも、実績のあるフレームワークを使えば、より優れた文章を安心して構成できるし、優れた書き方の勉強にもなる。\n以下でフレームワークを用いて物語を作る例を見る。\n例：物語作成[1] あなたは小説を書きたいとしよう。\n物語を一から作り出すには相当な妄想力や知識が必要になりそうだ。 しかし、既存の物語である「浦島太郎」にアレンジを加える、というやり方なら簡単に物語を作れそうだ。 フレームワークは「浦島太郎」のストーリー展開であり、以下のような内容だ。\n浦島太郎は子供がいじめている亀を助ける 後日、亀がお礼に竜宮城に連れて行ってもらい、もてなされる 竜宮城にて乙姫から「決して蓋を開けてはならない」玉手箱をもらう 浦島太郎は玉手箱を開けてしまい、白い煙に当てられ、老人になる この物語をアレンジしよう。亀をドラゴンに書き換えてみたら、よりファンタジーな感じになりそうだ。しかし、\n子供にいじめられる 浦島太郎に助けられる 浦島太郎を竜宮城へ招待する みたいな役割はそのまま踏襲する訳だ。竜宮城ではなく、魔王城にするとかのアレンジも考えられる。\nこのように、既存のフレームワークを利用すれば、簡単に小説が書ける。 しかし、踏襲することは便利である反面、自由度が制限されることもある。 元の役割から逸脱するようなアレンジをしてしまうと、物語が成り立たなくなるだ。\n「やっぱ、竜宮城に行くのは終盤にして、ドラゴンと浦島太郎が一緒に旅をする、という新展開を追加したい」、と思ったとする。\nそのような元の物語と乖離した展開を追記する場合、フレームワークに頼ることはできず、自前で書かざるを得ない。\nその新展開をまた別のフレームワーク「ヘンゼルとグレーテル」から踏襲する、みたいな、 複数のフレームワークの合わせ技もあり得るし、込み入った詳細を引用する、 というライブラリを用いたフレームワークもあり得るだろう。\nプログラミングによるライブラリ・フレームワークの説明 以上が文章の比喩による説明だ(文章の比喩の説明はこちら)。 ここからは、プログラミングの視点から、より厳密に説明する。\nライブラリは機能の再利用である プログラムを一から全てを書き尽くすことは大変だ。しかし、悩む必要はない、ライブラリさえあればね！\n数学的な操作やファイル操作など、多くの人が使う汎用的な機能を各々が一から実装するのは非生産的だ。 そこで、特定の用途の機能をまとめたものを作成し、それをみんなで使い回すようにすれば便利だ。 このような再利用するための機能群をライブラリという。\nライブラリの機能群をimportすることで、自前で実装しなければならない機能を削減できる。 プログラマはアプリケーションの開発に集中できるようになる。\n/*\nまた、個人で開発する上でも、同じ用途の機能をまとめてファイルに分離しライブラリ化しておくのも、 プログラムを整理し理解しやすくするためには有用だ。他人が自分のコードを利用したい、\n*/\n機能とは、関数という単位で提供される。 つまり、引数を与えると出力が返ってくるものを集めたものがライブラリだ。\n単に機能を寄せ集めても、動くプログラムを作ることはできない。\nライブラリを利用するということは引数に何を与えるか、 関数の呼び出し順序、条件分岐等の制御ロジックを全て自作しなければならない、ということだ。\nライブラリは文脈に依存しない粒度である関数を提供するだけだからだ。 だからこそ、自由度はフレームワークよりも高い。\nフレームワークは構造の再利用である プログラムの規模が大きくなってくると、 ちゃんと設計して秩序を持たせたりうまく規模の大きなプ太刀打ちできない。 しかし、悩む必要はない、フレームワークさえあればね！\n文章構成のテンプレートのことをフレームワークと呼ぶ。 これがあれば、テンプレートに沿って書き進めるだけでよく、文章の組み立てに悩むことはない。 しかも、実績のあるフレームワークを使えば、より優れた文章を安心して構成できるし、優れた書き方の勉強にもなる。\n以下でフレームワークを用いて物語を作る例を見る。\n役割としての粒度の部品群であるフレームワークはオブジェクト指向で書かれている。 クラスごとの役割分担とそれらの協調の設計が既に決められおり、 制御ロジックはポリモーフィズムで書かれている。\nフレームワークにおいて、制御ロジックは既に完成しており、 役割に応じて設計されたクラス間で協調して仕事を行う手順が決まっている。 そのため、ユーザーは継承、オーバーライドによって独自の処理を組み込んだサブクラスを作成し、 制御ロジックで用いられるクラスと差し替えることでカスタマイズしていく。\nそこにフレームワークの自由さがある。 しかし、役割は固定されている分、ライブラリより自由度は\u0026quot;劣る\u0026quot;。 \u0026ldquo;劣る\u0026quot;と書くと、ライブラリの方が優れているように見えるかもしれないが、 自由度が低いからこそ、ユーザーは楽ができるため、一概に優劣はない。\n参考 浦島太郎(wikipedia) ","permalink":"https://gotoh-it-school.top/diff-library-and-framework/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eプログラミング初学者の方\u003c/li\u003e\n\u003cli\u003e色々ググってみたが、本タイトルについて理解できなかった方\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e両者をググったものをまとめると、\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eライブラリとは、再利用可能な部品をまとめたもの\u003c/li\u003e\n\u003cli\u003eフレームワークとは、枠組みが予め決まっている部品をあつめたもの\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eと出てくる。\u003c/p\u003e","title":"ライブラリとフレームワークの違い ~比喩で分かりやすく解説~"},{"content":"対象読者 オブジェクト指向がなぜ必要か分からない方 結論 手続き型プログラミングとオブジェクト指向の違いは以下である。\n手続き型プログラミングは中央集権であり、 オブジェクト指向は地方分権である。 手続き型プログラミングでは、クライアント(main文などの関数の呼び出し側)が全てを管理しなければならず、 責任が重すぎる。 故に、柔軟性や可読性が下がってしまう。この問題を解決する手段の１つがオブジェクト指向だ。\nオープンソースのライブラリやフレームワークを避けて通れない時代が来ている。 それらはオブジェクト指向に則って作られており、オブジェクト指向の理解は前提だ。\n書籍やネット上の情報をあたると、\n単純化し過ぎた解説(犬クラス、猫クラスみたいな比喩)と、 抽象的で難しい解説(SOLIDの原則、デザインパターン等) に二極化していて、痒いところに手が届いていない印象を受ける。\n手続き型とオブジェクト指向のアプローチを対比する良いという例をある本で見つけたので、以下で紹介する。\n例 あなたはとある大学の先生だとする。講義が終わり、\n教室にいる学生に次の教室に移動してもらわなければならないが、 学生毎に行先が異なる。 彼らを移動させるにはどうすればよいか、という問題である。\n手続き型アプローチ まずは聴講学生のリスト(グローバル変数)を取得し、リストの学生毎に以下を繰り返し処理を行う。\nその学生のスケジュールを取得する 次の講義を調べる その講義の場所を調べる この教室からの移動方法を調べる その学生に移動方法を教える 先生(制御プログラム)は全てを把握しなければならず大変だし、 現実ではこのようなアプローチはなかなかお目にかかれない。 まるで子供の世話をしているみたいだ。\nオブジェクト指向アプローチ 次の教室への行き方一覧のポスターを貼る 「ポスターを参考に各自移動してください」、と言うだけ 学生は各自が次のスケジュールについて知っており(プロパティに値を保持)、 それを元に先生の指示に従うだけで問題は解決する。\nオブジェクト指向アプローチの優れた点 ここで重要なことは、先生は学生について具体的なことを把握する必要がなく、 抽象的な指示を出すだけ、という点だ。\n「TAの学生は移動する前にプリントの配布を手伝ってもらいたい」、 という追加要求が出たとする(システム開発では必ず起こる)。\n手続き型アプローチの場合、先生は学生一人ずつをいちいち確認して、 そいつがTAだった場合、「移動する前にちょっと手伝ってね、テヘペロ」、 などといちいち言わなければならない。main文が条件分岐で汚れるのが目に見えるようだ。\nオブジェクト指向アプローチの場合、TAは「移動の前に手伝うことあったよな～」、 と知っており、先生の「移動しろ」、という指示を聞いた時に自発的に動いてくれる。 先生は楽できる。つまり、main文を修正する必要はない。\n先生が学生について知らなくても、学生が勝手に仕事してくれる仕組み(地方分権)だからこそ、 追加要求に簡単に対応できる柔軟性を獲得することができるのだ。\n手続き型プログラミングによる表現の限界 手続き型プログラミングはmain文が各種関数を呼び出し、 組み合わせることによってプログラムを表現する。 そのためには、以下の構成要素が必要となる。\nグローバル変数 関数(サブルーチン、プロシージャとも言う) 条件分岐(if文など) 繰り返し文(for文、while文など) これら全てをmain文が把握しなくてはならない(中央集権)。 当然、一度に把握しなければならない情報が多く、コードは複雑になる。\n故に、機能追加や変更が難しくなる。 変更の影響が他の部分に及んで、思わぬバグが発生したりする。\n影響範囲を分離(地方分権)し、処理の制御を細かく分割することで柔軟なプログラムを作り出せる。\n手続き型でも、関数を適切に使うことで、 影響範囲の分離はある程度行うことができる。 しかし、関数間での値のやり取りにはグローバル変数が必要であり、main文の複雑さを抑えるには限界がある。\nこのような手続き型プログラミングの限界そのための技術の１つが オブジェクト指向のクラスなのだ。\n参考 オブジェクト指向のこころ [アラン・シャロウェイ] ","permalink":"https://gotoh-it-school.top/introduction-oop/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eオブジェクト指向がなぜ必要か分からない方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e手続き型プログラミングとオブジェクト指向の違いは以下である。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e手続き型プログラミングは\u003cstrong\u003e中央集権\u003c/strong\u003eであり、\u003c/li\u003e\n\u003cli\u003eオブジェクト指向は\u003cstrong\u003e地方分権\u003c/strong\u003eである。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e手続き型プログラミングでは、クライアント(main文などの関数の呼び出し側)が全てを管理しなければならず、\n責任が重すぎる。\n故に、柔軟性や可読性が下がってしまう。この問題を解決する手段の１つがオブジェクト指向だ。\u003c/p\u003e","title":"[超入門]例から学ぶ手続き型の限界とオブジェクト指向との違い"},{"content":"対象読者 理解しやすく保守しやすいコードを作りたい方 プログラミングの関数の「適切な」使い方を知りたい方 結論 関数(function)はプログラミング学習の初級で登場する基本中の基本である。\nしかし侮ることなかれ！ 基礎故に奥深い。 関数は良いコードを書くための必須の土台であるが、 これを「適切に」使いこなすのは難しい。\nそこで本記事では、\n関数がなぜ作られたのか、何を解決するための道具なのか その解決に逆行する「不適切な」アンチパターン 関数の適切な使用例 についてまとめる。\n関数が生まれた歴史 関数はなぜ生まれたのか。 何かを解決したくてそれが発明されたはずである。 その歴史について述べる。\n関数は「繰り返し使う処理を再利用するため」に生まれた。 再利用できなければ同じコードをいろんな場所にコピペするしかない。 それらを変更しようと思ったらコピペ先全てを修正しなければならない。\nまた、コピペで無駄に行数が膨らんだコードは読みにくい。\n想像しただけで悪夢である。コピペは避けるべきだ。\n関数は再利用のために生まれた 関数がまだなかった頃は 「別の場所にジャンプ(goto)して元の場所の次に戻る」 ことで再利用を実現していた。 これが「関数呼び出し」の原型であり、「プロシージャ」と呼ぶ。\n当初はジャンプ先とジャンプ元の番号をベタ書きしていた。 そのせいでコードを変更する度にジャンプ元の番号を修正しなければならなかった。 なのでジャンプ元の番号を自動で記憶しておく「レジスタ」が発明された。\nしかし、レジスタは1つの値しか記憶しないので、2重にジャンプをすると最初の場所に戻れなくなる。 そこで、複数のジャンプ元の番号を積んで取り出せる「スタック」が生まれた。\n構造化プログラミング goto文の制限 一般にコードを行ったり来たりするジャンプはコードを読みにくくする。 goto文の多用は悪である。\nそこで制限付きgoto文でコードの構造を分かりやすくしようという考え方が生まれた。 これを「構造化プログラミング」と呼ぶ。\n条件分岐(if文)や繰り返し(for文)などはジャンプの仕方が決め打ちされたgoto文である。\n同様にジャンプ先の管理やgoto文を意識せずに再利用を簡単に実現する仕組みが関数に加わった。\n関数の構成要素 名前は番号を分かりやすくする ジャンプ先の番号などを覚えるのは大変だ。 そこで、番号の代わりに分かりやすい文字列でそれを指し示す仕組みが生まれた。 「名前」である。\nURLも同じ発想だ。IPアドレスという数の羅列を分かりやすくする。\n名前は文字列と値がある場所を対応づける「辞書」として実装される。 こういう辞書を特別に「名前空間」と呼ぶ。\n変数も値に名前を与える。 変数は「値を入れておく箱」というよりも名前空間のキーの１つなのである。 関数名も一連の処理に名前を与える。\nグローバル変数の問題点 名前を付けて分かりやすくするのは素晴らしい。 しかし、その名前空間を参照できなければ名前を利用できない。 それができる範囲を「スコープ」と呼ぶ。 名前を利用できるのはそのスコープ内からのみである。\nコード全体のどこから参照できる範囲を「グローバルスコープ」、 これを持つ変数を「グローバル変数」と呼ぶ。\nグローバル変数には2つ問題がある。\n値がどう変化するかはコード全体を確認しないと分からない 使用済みの名前を意図せず新たに宣言してしまうリスクがある 後者の問題を「名前の衝突」と呼ぶ。\n要はスコープが広いと把握しづらいということだ。\nコードが小さければあまり気にしなくてもいいかもしれない。 でも、複雑さは指数関数的に増大していく。 油断しているとすぐに手に負えなくなる。\nローカルスコープで影響範囲を絞る ならば、スコープを小分けできれば把握しやすいし、名前の衝突も気にしなくて良くなる。\n関数にはそのために関数専用の名前空間を作る。 これを参照できる範囲(関数内)を「ローカルスコープ」、 そこで定義された変数を「ローカル変数」と呼ぶ。\nこれは関数の外からは参照できない。 この関数内だけの使い捨ての変数である。 この変数の変化を追うのは容易である。\n関数はコードを分けて理解しやすくしてくれる。 再利用のために生まれた仕組みではあるが、 一度しか呼び出さないとしても関数には価値がある。\n引数と戻り値 隔離されたローカルスコープは外部から参照できない。 では関数はどう外部とやりとりするのか。\n関数の外の変数に関数内で結果を代入することでやりとりすることは可能ではある。 しかしそれではローカルスコープの影響範囲の制限が無駄になってしまう。 関数の中身も外も読まないと変数の変化が追えなくなるからだ。\nこれを回避しつつクリーンに関数外部から値を取り込む機能が「引数」であり、 処理した結果を返す機能が「戻り値」である。 スタックにジャンプ元の場所と一緒に引数と戻り値を積むことでこれを実現する。\nコンピュータの背後のこの仕組みのおかげで引数と戻り値だけを考えれば良くなる。 関数を作る時は関数の外の事を考えなくて良いし、 関数を使う時は関数の内部を知る必要はない。\n関数はコードを分割して分かりやすくしてくれる。\nいろんな関数の呼び方 関数にはいろんな呼び方がある。\nサブルーチン プロシージャ ラムダ式 メソッド \u0026hellip; などなどである。\nサブルーチンは戻り値がない関数の原型(上述) ラムダ式はfunction xxx \u0026hellip; のように関数名の宣言なしに作成できる簡易的な関数である メソッドはクラスのメンバの関数 \u0026hellip; という感じで厳密には意味合いが異なるが、どれも要は関数のことだと思っておけば良いと思う。\n関数のアンチパターン 以上で関数の生まれた過程とそれが解決する問題を説明した。\n要約すると、\n関数は繰り返し使われる処理を再利用するための仕組みとして生まれた 関数は名前と引数と戻り値を外部に公開し、関数内の詳細を気にしなくてもよくしてくれる 関数でコードを分割して影響範囲を狭めることで分かりやすいコードを書ける という感じである。 これらを踏まえて、関数の不適切な使用例についていくつか述べる。\nグローバル変数の使用 グローバル変数にアクセスするような関数はイケてない。\nこの値を把握しなければ戻り値を予測できない グローバル変数の値を追うにはコード全体を確認しなければならない これではローカルスコープが台無しだ。 引数として値を渡すように修正しよう。\n引数だけで戻り値が決定されるようにすることで関数のテストが容易になる。\n多すぎる引数 グローバル変数を使いたくなるのは、\n複数の関数間で引数が共通していて、いちいちそれを引数で与えるのが面倒 引数を減らすため などの動機があるかもしれない。 繰り返すが、グローバル変数は使わないで済むならその方が良い。 それでもグローバル変数を使いたいような時は、\n引数を辞書や構造体のような、複数の値をまとめた変数を引数として与える クラスを導入する いくつかの引数を受け取る関数とその戻り値と残りの引数を受け取る関数に分割する 等の対策ができるかもしれない。\n長すぎる関数 ローカルスコープは影響範囲を\u0026quot;小さく\u0026quot;隔離することで処理を理解しやすくできる。 行数が多すぎる関数はこれに反している。\n目標を小目標に分割するのと同じように、中間結果を出力する関数などに分割できるはずだ。\nそうやって分割した関数を呼び出す関数に作り直すことで行数を減らすことができる。 そうやって1つの事をする関数に分割していけば30-50行を超えることを防ぐことができるはずだ。\n小さな部品に還元することでコードが大きくなっても理解しやすく保てる。\n関数の適切な使用方法 アンチパターンについて述べた。 要は関数が解決すべき問題を解決していれば良いという事だった。\n抽象的な話ばかりだった。 最後に、関数のお手本の書き方の具体例を1つリーダブルコード[2]から引用する。\n本書では、良い関数を作るコツとして「無関係の下位問題を抽出する」という考え方が挙げられている。\n関数の本当にやりたい目標とは直接関係ないが、 それを達成するための中間結果を作成する一連の処理を別の関数として分離することである。 アンチパターンで「関数を分割せよ」と述べたのをさらに具体的に言った感じだ。\nリーダブルコードの例 改善前 以下に例を添付する。 じっくり読まなくて良い。 「うわぁ」と思ったらすぐに改善後のコードを見れば良い。\n// 引数の経緯lat, 緯度lng と最も近いarrayの要素を返す // 球面上での2点間の距離で最小のものを返す var findClosestLocation = function(lat, lng, array) { var closest; var closest_dist = Number.MAX_VALUE; for (var i = 0; i \u0026lt; array.length; i++) { var lat_rad = radians(lat); var lng_rad = radians(lng); var lat2_rad = radians(array[i].latitude); var lng2_rad = radians(array[i].longitude); var dist = Math.acos( Math.sin(lat_rad) * Math.sin(lat2_rad) + Math.cos(lat_rad) * Math.cos(lat2_rad) * Math.cos(lng_rad - lng2_rad) ); if (dist \u0026lt; closest_dist) { closest = array[i]; closest_dist= dist; } } return closest; } リーダブルコードの例 改善後 球面上での2点の距離計算を分離した。 そうすることで元の関数から細かい計算が追い出され理解しやすくなった。 抽出した関数に適切な名前を付けているのも分かりやすい\n//元の関数 var findClosestLocation = function(lat, lng, array) { var closest; var closest_dist = Number.MAX_VALUE; for (var i = 0; i \u0026lt; array.length; i++) { var dist = spherical_distance(lat, lng, array[i].latitude, array[i].longitude); if (dist \u0026lt; closest_dist) { closest = array[i]; closest_dist= dist; } } return closest; } // 抽出された下位問題(球面上での2点間の距離計算) var spherical_distance = function(lat1, lng1, lat2, lng2) { var lat_rad = radians(lat1); var lng_rad = radians(lng1); var lat2_rad = radians(lat2); var lng2_rad = radians(lng2); return Math.acos( Math.sin(lat_rad) * Math.sin(lat2_rad) + Math.cos(lat_rad) * Math.cos(lat2_rad) * Math.cos(lng_rad - lng2_rad) ); } 結び 以上で関数の適切な使用方法について解説した。\n関数は処理を再利用のために出来た 関数はローカルスコープを持ち、処理を分割して理解しやすくする 一時的な変数はローカルスコープで捨てる 無関係の下位問題を抽出し、関数を適切に分割していく。 それらに適切な関数名を与える。 そうすることで処理の詳細に溺れるのではなく、 処理の目的・意図に目を向けることができるようになる。\nこうして抽象度を高めていくことがプログラミングのテクニックのエッセンスである (詳細はこちら)。\n参考 コーディングを支える技術 [西尾泰和] リーダブルコード [Dustin Boswell, Trevor Foucher] ","permalink":"https://gotoh-it-school.top/function-on-programming/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e理解しやすく保守しやすいコードを作りたい方\u003c/li\u003e\n\u003cli\u003eプログラミングの関数の「適切な」使い方を知りたい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e関数(function)はプログラミング学習の初級で登場する基本中の基本である。\u003c/p\u003e","title":"[プログラミング]関数とは なぜ重要?動機やメリットは？"},{"content":"背景 古代ギリシアの時代の話。 ある時刻に太陽が真上に来て影が完全になくなる井戸があったそうな。 それを用いて昔の人は地球の半径を概算したらしい。凄いよね。\n天動説のために昔の人は地球は平らだと思っていた、というイメージがあるかもしれない。 でもそれは宗教が支配的だった中世の話だ。 古代ギリシア時代では地球は丸いと考えられていた。\n地球の半径の測定方法 では地球の測定方法を述べる。\n井戸の影がなくなる時、太陽と井戸と地球の中心が一直線になる。\nこのとき、その井戸から距離\\(d\\)の適当な場所に棒を立てて、 棒と太陽光が成す角\\(\\theta\\)を測る。\n太陽光は放射状に出ているのが平行だと近似できる。 なので、井戸を貫く太陽光と棒の影を作る太陽光は平行。 そして井戸と棒から地球の中心に伸ばした線が成す角は錯角であり等しくなる。\n井戸と棒の距離\\(d\\)は\\(\\theta\\)は弧度法によって、 $$ d = r\\theta $$\nと表せる。 \\(r\\)は地球の半径とする。\nなので、\\(r = d / \\theta \\) を計算すれば地球の半径が求まる。\n参考 地球の大きさどう測るの？\n地球の大きさの測定について知ったのは読書していた時だったが、どんな本だったか忘れたので、ネット上の記事を参考にした。\n","permalink":"https://gotoh-it-school.top/how-to-measure-earth/","summary":"\u003ch2 id=\"背景\"\u003e背景\u003c/h2\u003e\n\u003cp\u003e古代ギリシアの時代の話。\nある時刻に太陽が真上に来て影が完全になくなる井戸があったそうな。\nそれを用いて昔の人は地球の半径を概算したらしい。凄いよね。\u003c/p\u003e","title":"地球の半径の測り方"},{"content":"対象読者 数学の「論理と集合」が分かる方 結論 本記事では、\n自然数と偶数の数は同じ 自然数と奇数の数は同じ であることをそれぞれ示す。 偶数と奇数と自然数が同じ要素数というのは、「部分と全体と同じサイズ」という直感に反する異常事態である。 例えば、人口を男性と女性に分けたとき、男性と女性は全人口よりも少なくなるのが当たり前の感覚だ。\n自然数の分類では、男性・女性・全人口の数が等しくなるような怪奇現象が起きる。 この違いは、人口は有限であるのに対して、自然数は無限であるという点にある。\nしかし、無限集合の要素数を比較するなんてどうすればいいのか。 無限の要素を持つ集合はいつまでも数え終わらない。\nこれを理解するためにはまず、\n関数のより厳密なイメージ 「要素数が同じである」の定義 を押さえる必要がある。\n関数とは２つの値の対応関係 高校数学までは関数を把握するためにグラフを多用してきた。 だから、関数とグラフの絵と同じものだと誤解しがちだ。\n関数の定義は以下だ。 $$ \\forall x \\in X, \\exists! y \\in Y, f(x) = y $$\n「\\(\\forall\\)」は「全ての(All)」、 「\\(\\exists\\)」は「存在する(Exist)」を意味する記号である。 「\\(\\exists!\\)」は「ただ1つ存在する(Exist)」という意味だ。\n日本語で言うと、関数とは「どの入力に対してもただ1つの出力が対応する」ということである。 入力1つに対して複数の出力を対応づけることは許されない。\n例えば、関数 \\( f(x) = x^2 \\) は以下のような対応関係を表している。\n入力が1の時、出力は1 (\\(f(1) = 1\\)) 入力が2の時、出力は4 (\\(f(2) = 4\\)) 入力が3の時、出力は9 (\\(f(3) = 9\\)) \u0026hellip; 図1．関数のイメージ 関数は「グラフの絵」というより「入力の集合と出力の集合の対応関係」とイメージできる。 グラフの絵は「入力と出力の座標の集合」である。 入力の集合を定義域、出力の集合を値域と呼ぶ。\n関数 \\(f\\) は以下のように定義域 \\(X\\)、値域 \\(Y\\) を明示して書くことができる。\n$$f: X \\rightarrow Y, f(x) = y$$\n定義域と値域の区別は関数をイメージする上で重要だ。 定義域と値域は別物である例を次に示す。\n定義域と値域が異なる例 関数 \\(f(x) = x^2\\) の定義域を実数全体とする。\nこのとき、負の入力は、2乗によって正として出力される。 つまり、定義域は実数全体なのに対して、値域は非負の実数となる。\n図2．定義域と値域が異なる例 「全単射」とは２つの集合の要素数が同じであること さて、どうすれば無限集合の要素数の大小を比較できるのだろうか。\n定義域と値域のそれぞれの要素が1対1対応しているとする。 このとき、定義域と値域は同じ要素数であると直感的に分かる。 この対応が1つでも見つけられれば、無限回の比較を回避しつつ２つの集合の要素数が同じだと示せる。\n関数の1対1対応は「全単射」と呼ばれている。 全単射とは「単射」かつ「全射」のことである。\n以下で単射と全射について書く。\n「単射」とは出力が重ならないこと 単射を数式で表すと以下になる。 $$ \\forall x_1, x_2 \\in X, x_1 \\neq x_2 \\Rightarrow f(x_1)\\neq f(x_2) $$\n日本語で言うと 「定義域の適当な2要素\\(x_1\\)と\\(x_2\\)が異なるならば、 それに対応する出力\\(f(x_1)\\)と\\(f(x_2)\\)も異なる」 という感じである。\n「ならば(\\(\\Rightarrow\\))」は対偶によって、 $$ (P \\Rightarrow Q) \\Leftrightarrow (\\lnot Q \\Rightarrow \\lnot P) $$ と書き換えられる。 \\(P\\)と\\(Q\\)は命題、「\\(\\lnot\\)」は否定とする。\nよって、単射の定義を対偶で書き換えると以下となる。\n$$ \\forall x_1, x_2 \\in X, f(x_1 ) = f(x_2) \\Rightarrow x_1 = x_2 $$\n「2つの出力が等しいならば、それに対応する入力も等しい」という意味だ。\n例えば、\\(f(x) = x^2\\)は単射ではない。 なぜなら、\\(f(1) = f(-1)=1\\)なのに入力が\\(x_1 = 1\\)と\\(x_2 = -1\\)で異なるからだ。\nまあ要は、単射とはそれぞれ入力が重ならずに出力されるということだ。 そのためには入力の数以上の出力が必要である。 なので、単射 \\(X \\leq Y\\) とも表される。 おぉ、大小関係の比較の不等号みたいだ。\nいや逆に、値域よりも定義域の方が要素数が多いと考えてみよう。 このとき、出力を重複させて圧縮しないと値域を定義域よりも小さく収める事ができないとイメージできるだろうか。 だが、これは単射の定義に反する。\nまたまた逆に、\\(X \\leq Y\\) の通り定義域より大きな値域を考えてみよう。 このとき、定義域と同じ数だけの出力を割り当ててもまだ値域の要素が余る(図3)。 単射はデブな値域というイメージになる。\n図3.デブな値域の単射 「全射」とは余分な値域の要素がないこと OKOK。単射は分かった。次に全射について述べる。 全射を数式で表すと以下。 $$ \\forall y \\in Y, \\exists x \\in X, f(x) = y $$\n日本語で言うと「値域のあらゆる要素には対応する入力が存在する」という感じだ。\n入力と対応しない出力はない(全射) 入力１つに対して唯一の出力がある(関数の定義) 単射とは違って、出力が重複し得る よって、全射のイメージは図4のような感じで、定義域の要素数は値域と同じまたは大きくなる。\n図4．全射とはスリムな値域 自然数と偶数と奇数が同じ要素数である証明 以上より、単射かつ全射の「全単射」は1対1対応に他ならないと分かる。 余分な値域がなく、それぞれの入力が重複せずに出力されるからだ。\n全単射な関数を見つけられれば、数え上げられない無限集合同士でも要素数が同じだと示せる。\nこれで証明を始める準備が整ったので、自然数と偶数が同じ要素数である事を示す。\n自然数\\(\\mathbb{N}\\)から偶数\\(E\\)への全単射な関数があるか考える。\n$$ f: \\mathbb{N} \\rightarrow E, f(n) = 2n $$ とおく。\n\\(f\\)が単射であることを示す。 ２つの入力を\\(n_1, n_2 \\in \\mathbb{N}\\)とする。\n$$ \\begin{aligned} \u0026amp; f(n_1) = f(n_2) \\\\ \u0026amp; \\Rightarrow 2n_1 = 2n_2 \\\\ \u0026amp; \\Rightarrow n_1 = n_2 \\end{aligned} $$\nよって、単射である。\n次は全射であることを示す。 適当な出力を\\( e \\in E \\)とおく。 \\(e\\)は偶数であるため２で割り切れる。 つまり、\\(e / 2 \\in \\mathbb{N}\\)であり、これが入力に対応する。 よって、全射である。\n以上より、自然数と偶数は1対1に対応(全単射)していることが分かる。\n同様に自然数と奇数も同じ要素数であることが証明できる。 以下のような関数を定義して、こいつが全単射であることを示すだけだ。\n$$ f: \\mathbb{N} \\rightarrow O, f(n) = 2n + 1 $$\n結び:無限集合では部分と全体が同じ要素数になり得る 人口ような有限集合ではありえない事が自然数の分類では起きることが分かった。 そもそも無限集合を有限集合と同じ感覚で考える事自体がおかしかったのだ。 だって、無限の中から無限を取り出すのは普通にできそうなである。\nそれにしても、無限な要素数を1対1対応のような切り口で飼い慣らす数学ってすんごいいいい。\n","permalink":"https://gotoh-it-school.top/wonder-infinite/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e数学の「論理と集合」が分かる方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e本記事では、\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e自然数と偶数の数は同じ\u003c/li\u003e\n\u003cli\u003e自然数と奇数の数は同じ\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eであることをそれぞれ示す。\n\u003cimg loading=\"lazy\" src=\"/wonder-infinite/NEO.png\"\u003e\u003c/p\u003e\n\u003cp\u003e偶数と奇数と自然数が同じ要素数というのは、「部分と全体と同じサイズ」という直感に反する異常事態である。\n例えば、人口を男性と女性に分けたとき、男性と女性は全人口よりも少なくなるのが当たり前の感覚だ。\u003c/p\u003e","title":"無限集合の不思議：偶数・奇数・自然数の要素数がすべて同じ理由"},{"content":"対象読者 高校数学で挫折する理由を知りたい方 数学の勉強へのヒントを得たい方 結論 算数は得意だったのに数学で挫折する人は多い。 進級・進学に伴い、どんどん難しくなっていく数学。あぁ、算数は簡単だったのに。。。\nしかし、本記事では一般的な見解とは逆のことを述べる。 すなわち、算数が難しいから数学が難しいんじゃないか、と。\n数学では何らかの前提を組み合わせて結論に至る。 その組み合わせを発想した上で使いこなすことは確かに難しい。\nでも、その前提を腹落ちして納得するという数学の入り口の部分が難しいから躓いてしまうのではないか。 その入り口を支えるイメージを培うのが算数ではないか、という話をする。\nということで、まずは算数と数学の違いを説明する。\n数学と算数の違い 数学は前提を定義し、そこから証明を積み重ねる。 なんちゃらの法則や定理という武器を蓄えてそれを使って問題を解いていく。 その武器をうまく使いこなすためには証明を理解する必要がある。\n対して、算数とは、数学の初歩的な部分に関する科目である。 故に算数は数学の一部分である。 中国や台湾や韓国、北朝鮮では算数は「小学数学」と呼ばれているようだ1。\n算数では具体的操作や式と場面の対応付けや計算の反復によって式のイメージを理解し、その扱いに慣れていくことが重視される。\nつまり、まとめると以下となる。\n数学は証明を重視 算数は直感・イメージを重視 次は数学の証明を支える前提について深堀りする。\nこれ以上遡れない議論の出発点「公理」 数学は常に正しい。 その前提ならこう言えるよね、と言ってるだけだからだ。\nしかし、前提の前提\u0026hellip;のようにもっと遡ることができる。 以下の会話を見て欲しい。\n「Aなのはなぜだろう？」\n「それはBだからよ。」\n「では、なぜBなのだろう？」\n「それはCだからよ。」\nこのように物事の説明には限りがない。 そこで、「と、とにかく、この主張は正しい！根拠はないけど！」と遡りを区切って定義する必要がある。 これ以上遡れない出発点となる前提を「公理」と呼ぶ。\n公理は根拠なく決められるが、無茶苦茶に決められている訳ではない。 ヒトが持つ基本イメージと照らし合わせた結果、説明も保証もできないけど直観的にどう考えても正しいと思われるものが公理として採用されたりする。\nその出発点に対して「まあそうだよね」と合意できれば話が進められる。 逆に言うと、ここで納得できなければ先に進めない。\n算数という土台が難しいから数学も難しいのでは？ 証明を理解するためにはその根幹たる公理をイメージできることが重要だ。 公理や定義を直観的に理解できるようにする土台が算数だと思う。\n公理や定義に対してイメージが湧かない状態で三角関数などの内容を理解できるわけがない。 これに納得し理解する土台となるイメージは算数にある。\n例えば、三角関数は一見難しい。 でも、単位円は小学生でも理解できるはずだ。 算数で習う数直線で原点や座標を理解できる。 \\(\\cos\\theta\\)は、原点を中心とする単位円上のある角度に対応する点のx座標を示しているだけだ。\nこのように、数学の難しい内容は算数で習った基礎的なイメージにブレークダウンすることで納得できるはずだ。\n「いや、算数より数学の方が難しいんだけど。。。」と聞こえてきそうだ。\nまあそれはその通りなんだけど、それは算数的なイメージと数学の接続に躓いているだけなんじゃないかと。 つまり、数学が難しいのは算数という土台が難しいからではないのかと思うわけだ。\n数学を教えるのは簡単 私は塾講師アルバイトなどで算数や数学を教えていた経験がある。\n数学を教えるのは簡単だ。 生徒が躓いた問題に対して以下のようなことを伝えればいい。\nどの定理(公式)を当てはめればよいか 式変形や計算の進め方 これで生徒は「なるほど」とか言って、とりあえず指導を進めることができる。 しかし、類題でまた躓いたりする。\nこういう子は解法をどう当てはめればいいかというブラックボックス的な考え方をしていて、 だからそれがさっき解いた問題の類題であることに気づかないのだと思う。\n本来ならば算数まで遡って復習する時間を設けなければならない。 でも学校は待ってくれない。 だから、算数的な直感・イメージと数学の接続がどの段階かで切れたまま数学の学習に進めてしまっているのだと思う。\nこういう土台まで遡ることをせずに表面的に数学を教えるのは割と簡単である。\n直感的イメージまで遡る算数を教えるのは激ムズ 対して、算数を教えるのは鬼ムズい。 以下の質問にどう答えればよいのだろうか。\nなぜ 1 + 1 = 2 なの？ マイナスにマイナスを掛けると、なぜプラスになるの？ 「なぜって当たり前じゃん」としか言えない。 これは日常生活の中で身体的に理解するような直感・常識であり、口で説明することは困難である。\n故に算数では、おはじきなどの半具体物の操作やそれを式で表現することを通して数への理解を深める。\n負の数に関する質問も難しい。 「決まり事だから」とか「敵(マイナス)の敵(マイナス)は味方(プラス)でしょ」とか言ってお茶を濁すしかない。 まあ後者はいい感じの説明だと思うけど。\nこれは数を単なる大きさではなく、数直線上の向きを持ったものだとイメージを拡張できれば何となく納得できそうではある。\n数学は算数の絵の代わりに記号を多用する。 そのため、両者とも根本は同じなのに別物に見えてしまうのだろう。\n算数の基礎のゼロや位取り表記自体が歴史的には難しかった2 以上で数学よりも算数の方が教えることが難しい理由を述べた。\n数学記号の背後に算数的なイメージを感じられることが数学を記号遊びではなく納得して理解していくために重要なのだと思う。 しかし、そのイメージを支える算数の基礎自体が歴史的には難しいことを示す。\n算数の初期で普通に教わる位取りの数。 当たり前だと思っていないだろうか。\n12世紀初頭にアラブからヨーロッパにゼロが持ち込まれた。 そこから位取りが定着し、筆算が普及するのに数世紀を要した。\n位取りを表すためにはゼロが欠かせない。 ゼロは「何もないがある」を表しており、よく考えたら奇妙である。 これを発明できたのは世界の中でインド人だけだった。 ゼロは当たり前に算数で習う内容だが革命的であった。\nゼロによって位取りの考え方が生まれ、数をよりスマートに表現できるようになった。 そして筆算が発明され、ソロバンは駆逐された。\n算数の当たり前の表記が当たり前になるのは簡単ではなかった。\n位取りの数がまだないとき、乗法や除法が完璧にできる人は町に数える程しかいなかったらしい。 乗除法ができるだけで大した学者であり尊敬されたという。 たしかに、ローマ数字みたいなものしかない世界を考えれば難しさが分かる。\n分数の割り算が難しかった 算数が難しいのは当たり前だと思えていただけただろうか。\n次は、私が小学生の頃「分数の割り算」を理解するのに苦労した話をする。 私は後に数学が得意になったにも関わらずこんな基礎で躓いた。 いや、だからこそ数学が好きになって得意になれたのかもしれない。\n私は、分数の割り算にて、分子・分母を入れ替えて掛けるルールが理解できなかった。 例えば、\n$$5\\div\\frac{3}{4}$$\nを解け、という問題があるとする。\n数値だけ与えられてもイメージできないので何か具体的なものを当てはめてみる。 例えば、５個のリンゴを\\(3/4\\)人で分ける、と具体的に考えてみるが、\n??\nイメージできない。\\(3/4\\)人というのが自然数でないからだ。\n悩んだ末に私は「分子分母を同じ数で掛けても値は変化しない」という性質に気づいた。 10個を2人で分けても、20個を4人で分けても、１人あたりの数は変わらない。 これは計算で確かめられるしイメージもできる。\nということで、分子、分母に4を掛けて、不自然な割る値をイメージできるよう読み替えることにした。\n$$5\\div\\frac{3}{4}=\\frac{5}{\\frac{3}{4}}=\\frac{5\\times4}{\\frac{3}{4}\\times{4}}=\\frac{20}{3}$$\nなるほど、20個のリンゴを３人で分けるのか、これならイメージできるぞ。\nむ？\nこれは分数の分子分母を逆にした\\(4/3\\)を掛けた結果と同じじゃないか！ 分数による割り算のルールを理解した瞬間だった。\n算数という土台は自分で考えて理解するしかない 仮に、私が分数の割り算について他人から教えてもらったとしても理解できたかどうか怪しい。 基礎的すぎる話をいかに他人から教えられても、腹の底には響いてこない。 自分が持つ数学的直観(イメージ)との対話を通じて納得しなければならない。\n数学では「このように公式を使おう」で済ませてしまえるけど、算数にはそれができない。 この意味において、算数は数学よりも難しい。\n土台となる算数自体が難しいし、その上そこからイメージを丁寧に積み上げて数学を理解しなければならない。 数学に王道なし。\nこんな偉そうに講釈垂れているが、わたくし、大学数学で挫折しました（笑）。\n参考 算数[wikipedia] 零の発見 数学の生い立ち(吉田洋一) ","permalink":"https://gotoh-it-school.top/arithmetic-is-more-difficult-than-mathematics/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e高校数学で挫折する理由を知りたい方\u003c/li\u003e\n\u003cli\u003e数学の勉強へのヒントを得たい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e算数は得意だったのに数学で挫折する人は多い。\n進級・進学に伴い、どんどん難しくなっていく数学。あぁ、算数は簡単だったのに。。。\u003c/p\u003e","title":"[直観と論理の違い]なぜ算数は数学より難しいのか"},{"content":"対象読者 数学王ガウスの逸話を知りたい方 等差数列の和の公式の視覚的イメージを理解したい方 結論 本記事ではガウスの逸話を紹介し、それが実は高校数学で習う等差数列の和の公式を利用した解き方であることを説明する。 等差数列の和について、\n視覚的なイメージ ガウスの方法に倣った、公式の導出 を順に見ていく。\n小学生の頃のエピソード ガウスは後に数学王と呼ばれた男である。\n小学校の担任の先生が忙しかったので、解くのに時間がかかる問題を出して、その隙に仕事を処理しようと考えた。\nしかし、その問題をガウス君は一瞬で解いてしまった。\n問題の内容 1 + 2 + \u0026hellip; + 100を求めよ。\nガウス君の解答 ガウス君は即答した、5050であると。101が50個あるからだ。\n1,2,..,100を以下のように並べると、\n1 + 100 2 + 99 3 + 98 \u0026hellip; 50 + 51 確かに101が50個ある。\nこのような並び替えを即座に思いつくとは\u0026hellip;。これが天才か！\nこの問題を等差数列として捉える 実は、ガウス君のやったことは等差数列の和の公式を適用することと同じだ。\n等差数列とは、\\(i\\)番目と\\(i+1\\)番目の差が常に同じ数列のことだ。 つまり、\\(a_i\\)を数列、\\(c\\)を定数とおくと、等差数列は以下を満たす。\n$$ a_{i+1} - a_i = c $$\nこれは、両辺を\\(1\\)番目から\\(n-1\\)番目まで足し合わせることで以下のように書き換えられる(※)。\n$$ \\begin{aligned} \u0026amp; \\sum_{i=1}^{n-1} (a_{i+1} - a_i) = \\sum_{i=1}^{n-1} c \\\\ \u0026amp; \\Leftrightarrow a_n - a_1 = c(n-1) \\\\ \u0026amp; \\Leftrightarrow a_n = c(n-1) + a_1 \\tag{1} \\end{aligned} $$\n式(1)は等差数列の一般式であり、\\(a_1\\)を初項、\\(c\\)を公差と呼ぶ。\nガウス君が与えられた問題は、\\(c=1, a_1 = 1\\)の時、つまり\\(a_n = n\\)という等差数列を1番目から100番目まで合計せよ、というものだったのだ。\n※総和\\(\\sum\\)について 数学では、総和をギリシア文字\\(\\sum\\)で表す。\n例えば、\\( 1 + 2 + 3 + \\dots\\ + 100\\)は総和の記号で書き直すと\\(\\sum_{i=1}^{100}i\\)となる。\n式(1)の式変形\\(\\sum_{i=1}^{n-1} (a_{i+1} - a_i) = a_n - a_1\\)を丁寧に書くと、以下のようになる。\n$$ \\begin{aligned} \\sum_{i=1}^{n-1} (a_{i+1} - a_i) \u0026amp;= (\\cancel{a_2} - a_1) \\\\ \u0026amp;\\quad + (\\cancel{a_3} - \\cancel{a_2}) \\\\ \u0026amp;\\quad + \\dots \\\\ \u0026amp;\\quad + (\\cancel{a_{n-1}} - \\cancel{a_{n-2}}) \\\\ \u0026amp;\\quad + (a_n - \\cancel{a_{n-1}}) \\\\ \u0026amp;= a_n - a_1 \\end{aligned} $$\n等差数列の和の公式 等差数列の和\\(S_n = \\sum_{i=1}^{n}a_i\\)は以下のように書き換えられる。\n$$S_n=\\frac{1}{2}n(a_1 + a_n) \\tag{2}$$\nこれが等差数列の和の公式だ。\nガウス君の問題だと、\\(n=100, a_1=1, a_{100} = 100\\)なので、\n$$ \\begin{aligned} S_{100} \u0026amp;= \\frac{1}{2} \\cdot 100 \\times (1 + 100) \\\\ \u0026amp;= 5050 \\end{aligned} $$\nというように、公式(2)を使えば、この問題は瞬殺できる。 天才ガウス君は前提知識なしでこの公式を瞬時にイメージすることができたのだ。 末恐ろしいガキよ\u0026hellip;。\n等差数列の和の視覚的なイメージ この公式はビジュアルで考えると分かりやすい。\n図１．ガウス君による数列の並び替え ガウス君の問題の数列(\\(a_i = i)\\)をイメージしていただきたい。\n数列のそれぞれの値を長方形として捉える。すなわち、\\(幅=1、高さ=数列の値\\)とする。\n一定の長さずつ高くなっていく長方形(等差数列)を並べると三角形みたいになる(図１.左)。\nこれをガウス君がやったように並べ直すと、\n幅は数列の個数nの半分、 高さは初項\\(a_1\\) + 末項\\(a_n\\) の長方形になる(図１.右)。\n$$ \\begin{aligned} \\text{この長方形の面積} \u0026amp;= \\frac{n}{2} \\times (a_1 + a_n) \\\\ \u0026amp;= \\frac{100}{2} \\times (1 + 100) \\\\ \u0026amp;= 5050 \\end{aligned} $$\nとなり、ガウス君の解答と一致する。\nこのように、等差数列の和の公式はこの長方形の面積を求めているのだ。\nより一般には台形の面積を求めることになる というか、折り返して長方形に変形せずとも、直接面積を求めても良い。 すなわち、変形前の数列を台形として扱えば良い。台形の面積の求め方は以下だ。\n$$台形の面積 = (上辺 + 下辺) \\times 高さ \\div 2$$\nこれは等差数列の和の公式(2)と似ていないだろうか。 そう、\\(上辺 = a_1、下辺 = a_n、高さ = n\\)とみなせば、台形の面積と等差数列の和は一致する。 一般的には、台形の面積を求めることが、等差数列の和を求めることに対応する。\n図２．台形の面積と等差数列の和の対応 等差数列の和の公式の導出 上で見たように、一般の等差数列\\(a_i\\)は式(1)のように書くことができた。 これをガウス君の考え方を元に、公式(2)を導出する。\n等差数列\\(a_i\\)をガウス君と同様に並び替える。 すなわち、\\(a_i\\)のアタマとケツを順々に足し合わせるような数列\\(b_i\\)を考える。 式変形の途中で、等差数列の一般式(1)を用いる。\n$$ \\begin{aligned} b_1 \u0026amp;= a_1 + a_n \\\\ b_2 \u0026amp;= a_2 + a_{n-1} \\\\ \u0026amp;= (c(2 - 1) + a_1 ) + (c((n - 1) - 1) + a_1) \\\\ \u0026amp;= c(n-1) + 2a_1 \\\\ \u0026amp;= a_1 + ( c(n-1) + a_1) \\\\ \u0026amp;= a_1 + a_n \\\\ \u0026amp;\\dots \\\\ b_i \u0026amp;= a_i + a_{n - (i - 1)} \\\\ \u0026amp;= (c(i - 1) + a_1) + (c(n - (i - 1) - 1) + a_1) \\\\ \u0026amp;= c(n - 1) + 2a_1 \\\\ \u0026amp;= a_1 + a_n \\end{aligned} $$\n以上より、\\(b_i\\)は番号\\(i\\)に依らず常に同じ値になることが分かった。 視覚的イメージで述べたように、長方形の高さは一定であるのと同じだ。 ガウス君の時は常に\\(b_i = 101\\)だった。これをカッコよく一般に書くと、\\(b_i=a_1 + a_n\\)となる。 よって、以下のように計算できる。\n$$ \\begin{aligned} 2S_n \u0026amp;= 2\\sum_{i=1}^{n} a_i \\\\ \u0026amp;= \\sum_{i=1}^{n} (a_i + a_{n - (i - 1)}) \\tag{3} \\\\ \\end{aligned} $$\n$$ \\begin{aligned} \u0026amp;= \\sum_{i=1}^{n} b_i \\\\ \u0026amp;= \\sum_{i=1}^{n} (a_1 + a_n) \\\\ \u0026amp;= (a_1 + a_n) \\sum_{i=1}^{n} 1 \\tag{4} \\\\ \u0026amp;= (a_1 + a_n) \\times n \\\\ \\Leftrightarrow S_n \u0026amp;= \\frac{1}{2}n(a_1 + a_n) \\end{aligned} $$\nよって、公式(2)を導けた！\n(3)では、ガウス君の並べ替えを行った。 (4)では、\\(a_1+ a_n\\)は添え字\\(i\\)によっては変化しないので定数と見做すことができ、総和\\(\\sum\\)の外に出した。\n等差数列の和の公式はガウス君の計算方法を一般の変数として表し直したものに過ぎないのだ。\n","permalink":"https://gotoh-it-school.top/genius-boy-gauss/","summary":"\u003ch2 id=\"対象読者\"\u003e対象読者\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e数学王ガウスの逸話を知りたい方\u003c/li\u003e\n\u003cli\u003e等差数列の和の公式の視覚的イメージを理解したい方\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"結論\"\u003e結論\u003c/h2\u003e\n\u003cp\u003e本記事ではガウスの逸話を紹介し、それが実は高校数学で習う等差数列の和の公式を利用した解き方であることを説明する。\n等差数列の和について、\u003c/p\u003e","title":"数学の天才！ ガウス少年 ~等差数列の和の公式の考え方~"},{"content":"宇宙が始まったときに運命は決まっている？ ラプラスの悪魔 高校で習うニュートン力学(古典力学とも呼ぶ)は、質点の運動は初期位置と初速度という初期条件と受ける力によって完全に決定される、と主張している。\nこの世の物質は質点が集まってできたものだと考えることができる。\n全ての質点の初期値と宇宙の始まりにおける神の一撃(力)を知ることができ、 それらの運動方程式を全て解くことができる 仮にこれら２つが可能な者は過去から未来永劫、全ての運動を予測することができる。 そいつはラプラスの悪魔と呼ばれている。\nラプラスの悪魔は空想上の存在である。 しかし、原理的にニュートン力学は僕らの運命は宇宙が始まったときから決まっているし変えることもできないことを示している。\n「自分の意思や行動によって未来を変えることができるはずだろ！」と反論が聞こえてきそうだ。 しかし、君がどう考えてどう行動するのかも宇宙が始まるタイミングで既に決まっていたのだ。 運命は変えられないのね\u0026hellip;。\n初期値の少しのずれが未来を大きく変える 初期値鋭敏性 計算能力や測定技術の向上。 科学技術が進歩していけば人間はラプラスの悪魔になれそうに感じないだろうか？ しかし、それは原理的にあり得ない。\n「バタフライ・エフェクト」という言葉を聞いたことがあるだろうか。 これはブラジルの蝶の羽ばたきというクソショボい力がアメリカで竜巻を引き起こし得る、という話である。 複雑系の科学の初期値のちょっとした違いが大きく結果を左右するという「初期値鋭敏性」に対する分かりやすい例え話だ。\n空間は実数として表現できる。 厳密に測定しようとするのなら、質点１つの位置でさえ無限桁が必要となる。 つまり、いくら科学技術が向上しても測定誤差を完全に排除することはできない。 このちょっとした誤差によって、シミュレーションの結果は大きく変わってしまう。 人間がラプラスの悪魔になれる日は来ない。\n位置と速度を同時に確定できない 不確定性原理 ニュートン力学が完全に予測可能な世界を説く一方で、ミクロな世界を支配するのは量子力学である。\n量子力学によれば、原子のようなミクロな物体は同時に波でもある。 したがって原子は揺らいでいて、位置と速度（運動量）を同時に知ることは原理的に不可能だ。これを「不確定性原理」という。\nつまり、初期値は確定できない。 量子力学の登場で「ラプラスの悪魔」は完全に死んだ 「全ての質点の初期値」そのものが定まっておらず、質点の運動は確率によって変わる。 ラプラスの悪魔になる条件の１つ目は達成し得ないのだ。 私たちの運命は不確定で揺らいでいる！未来は変えられる？！\n神がデタラメな確率的世界を創るわけがない！ 初期値が揺らいでいる？ 未来は未確定？ そんなバカな。 相対性理論を創始した天才アインシュタインは「神はサイコロを振らない」と言ったらしい。 アインシュタインはユダヤ教徒であり、理性的な神が世界を創ったと信じていた。 理性的な神が確率に支配されるデタラメな世界を創るはずがない。 こうしてアインシュタインは最後まで量子力学を信じることができなかった。\nちなみに、ニュートンも神の意思を知りたいと願っていた。 地球は宇宙の中心であり特別な場所のはずだ。 それを物理学で裏付けられるのではないかと考えていたそうな。 しかし、絶対座標系なるものは存在せず、宇宙はどこも平等であり地球が特別ではなかった。\nこのように物理学の研究とは理性的な創造主たる神の意思を知ろうとする宗教行為でもあった。 確率は信じるにはデタラメ過ぎたのだ。\n人間の認知的限界 確率は理解できない アインシュタインに限らず量子力学を理解(納得)できる人類は存在しない。 なぜなら、人間は因果関係しか理解できないからだ。\n原始の生物の脳はある刺激Aに対してBという反応をするだけの単純なものだった。 これは「AならばB」でありに因果関係である。\n人間は複雑な思考ができるように進化したが、脳のベースの部分は相変わらず因果関係しか理解することができない。 確率は数字としては理解できても腹落ちしないのはことためだ。\nだから、多くの人が宝くじを買ってみたり単なる事故に対して運命や呪いなどの理由をこじつけてみたりするのだ。\nヒトが未来が見通せるほどこの世界は単純にできていないようだ。\n","permalink":"https://gotoh-it-school.top/destiny-by-physics/","summary":"\u003ch2 id=\"宇宙が始まったときに運命は決まっている-ラプラスの悪魔\"\u003e宇宙が始まったときに運命は決まっている？ \u003cdel\u003eラプラスの悪魔\u003c/del\u003e\u003c/h2\u003e\n\u003cp\u003e高校で習うニュートン力学(古典力学とも呼ぶ)は、質点の運動は初期位置と初速度という初期条件と受ける力によって完全に決定される、と主張している。\u003c/p\u003e","title":"[ラプラスの悪魔]物理学による運命論 ~未来は宇宙の始まりから決まっている？！"}]