はてなキーワード: Scratchとは
これ
「推論する生成AI」は事前学習されていない課題を正しく推論することができない(共変量シフトに弱い)
https://tjo.hatenablog.com/entry/2025/08/27/173000
ChatGPT5-Thinking
まとめ
論文の核は「CoTは“訓練分布”の帰納バイアスに依存し、分布ズレで壊れる」という丁寧な定式化。ここからブログの「CoT=単なるパターンマッチング/未知問題を解く推論はしていない」まで一気に飛ぶのは、実験カバレッジの観点でやや言い過ぎ――というのが私の見立てです(知らんけど)。
俺も同意見だったのでよかった。
「学習済みデータから外れた話題(つまり非常識とか仮定の話)はLLMは苦手」はそうだけど
「全く推論しておらずパターンマッチしかしていない」は言いすぎだし、論文もそんなこと言っていない
「推論か、パターンマッチか」の話って、例えるなら「計算してるのか、計算結果を暗記しているのか」みたいな話だよね
人間だって1+1=2だったり、4x8=32であることは暗記で覚えてるだけで、数学的に計算してるかと言われれば微妙な話で
じゃあそれは間違ってるかと言われれば間違っていない、暗記だけでも割とどうにかなる
でも、じゃあ例えば「今から×の意味を変えますね」と言われれば確かに回答精度は落ちるわけで、それは人間もLLMも苦手なのは変わらない
じゃあ、「きみ、×の意味をかけたら点数落ちたね、つまり、きみは全部の計算を丸暗記してるってことだ」って言われてるのが今回のブログ主の主張なわけで、それは違うでしょう
「まったく解けなくなった」と「点数が落ちた」はぜんぜん違う
実際、推論の話に戻すと、簡単な推論はできてると経験則で感じている
ただ正直人間のほうがまだ推論は得意なんだと思う
ChatGPT5の意見
1. LLMはどの程度「推論」できているのか
• できること
• 与えられた前提から、既知のパターンを組み合わせて「もっともらしい」結論を導く。
• 簡単な論理パズル、数学の基礎問題、文脈依存の推測(例:「太郎は次郎より年上です。次郎は花子より年上です。誰が一番年下?」)などは成功率が高い。
• これは統計的予測という枠を超え、有限の「形式的な推論」能力を備えていると考えられる。
• 苦手なこと
• 訓練分布から大きく外れた未知の課題(非常識な仮定や新しいルールの即時理解)。
• 長期的・多段階的な論理チェーン(例:複雑な数学証明や未踏の論理課題)。
だから、推論すらパターンマッチしてるわけなんだよね、推論を丸暗記してるってことで、結果を丸暗記してるわけではない
いうて人間だってそうだからね?論理学の勉強の最初の段階までは丸暗記だ
________
以下、ChatGPT5-Thinkingのブログへの反応
DataAlchemy は人工ルール(文字列変換など)で “分布のズレ” を厳密に制御できるのが売りですが、ここで得た性質を「CoT一般」へ広げるには前提が強い。論文のコアは「CoTの有効性は訓練分布との乖離度に本質的に縛られる」という枠組みの提示で、外界の多様な現実課題まで即断するトーンではない(抽象は “inductive bias learned from in-distribution data” と表現)。ブログ側の「単なるパターンマッチングに過ぎない」への言い切りは半歩強い。  
ブログは「温度やモデルサイズを変えても効かなかった(図10)」と書くが、論文は “from scratch での統制実験” がポイント。巨大モデル+多様な前学習・手法(tool use、program-of-thought、process supervision 等)までカバーした結果ではない。ここから「LLM一般でサイズ・設定に依らずダメ」と読み替えるのは飛躍。  
論文は「CoTは訓練分布で形成された帰納バイアスに基づく生成」と述べるに留まる。一方ブログは「未知の問題を解く推論などしておらず単なるパターンマッチング」と断定的。分布依存である=“推論がゼロ” とまでは論文自体は言っていない。  
ブログは「人ならルールが分かればこなせるはず」を前提にするが、実際に人間の学習曲線や誤り傾向と並置した比較は記事の説明範囲では示されていない。そこから「人のような推論はしていない」へ飛ぶのは論証として弱い。 
5. “丸暗記” 論文の持ち込みの直結
Zhang+ (2017/2021) は「DLはノイズにも完全フィットできる=表現力が高い」ことを示した古典だが、これは CoT の機構を直接に否定する証拠ではない。補助的根拠としては理解できるが、「だからCoT=暗記」と結論づけるには橋渡しが不足。  
一方で、筋の良いポイントもある:
• 共変量シフト下で性能が落ちるのは機械学習の一般的な性質で、CoTも例外ではない――という整理自体は妥当。今回の価値は、その“脆さ”を三次元(タスク種、長さ、フォーマット)で定量化するための統制環境を用意したところにある。
ここで言う「プログラミング初級者」とはプログラミングの記述が上から下へ向かって順番に処理されること、条件分岐やループという概念があることを理解しており、RPGゲームが作れる「RPGツクール(現RPG Maker)」や学童向けプログラミング環境「Scratch」、「ナビつき! つくってわかる はじめてゲームプログラミング(ナビつく)」、ADVゲームが作れる「吉里吉里(もしくは吉里吉里2)」、過去にBASICやC、HSP、Javascriptあたりでプログラミングへ挑戦し挫折したなどなど、ある程度の「プログラマブルなロジック」構築の経験がある者を指します。
ある時、筆者はふと思いました。「生成AIはなんだかんだで膨大なテキスト情報を処理している事がキモだよなぁ」とありきたりなことを。
そして、同時にプログラミング初級者の弱点として「現在記述されているコードの管理においてテキストと実際の処理フローが脳内で一致しない」「プログラミング言語ごとに定められているルールや関数予約語の把握が困難」なのが問題とも考えました。
前述したプログラミング初級者の弱点の考え自体は車輪の再発明であり、「Scratch」や、より高度な「UML」が既に存在しており、特筆すべきことは何もありません。
しかし、「Scratch」や「UML」、なんなら「RPGツクール」や「吉里吉里」などに無い点として、現代では自然言語処理が大幅に向上した生成AIが実用の域にまで到達しつつあるのが従来とは異なる点でした。
つまり、自然言語を混ぜ込みやすいテキストベースの言語、かつ、処理を記述するとフローが視覚的に理解しやすい言語、可能であれば情報量が多くて一部の界隈で広く使われている言語があればプログラミング初級者も気軽にプログラミングできるのではないか?と発想しました。
コンピュータ(コンパイラやインタプリタなどソフトウェアを含む)が解することができる言語にはプログラミング言語以外にも様々あり、今回取り上げるのは「データ記述言語」と呼ばれるものです。
データ記述言語の中でもグラフ作成へ特化しており、特にフローチャート作成で真価を発揮する「DOT言語」というものがあります。
早速ですが、実際に手を動かしてみましょう。ちなみにDOT言語はGraphviz OnlineというWebツールがあるため別途に何かしらをインストールして環境構築する必要はありません。便利な世の中ですね。
上記のGraphviz Onlineを開くと、既に左側のDOT言語で記述された内容が、右側で作図されています。DOT言語はこのような図を作図するためのデータ記述言語です。
一旦、左側の記述をCtrl+Aで全選択をしDeleteなどで全削除し、下記の内容をコピペしてみましょう。
digraph graphname {
A -> B;
}
DOT言語の詳細な使い方は様々なWebサイトやブログ記事、Qiitaなどへ譲るとして、A - > Bの見た目から発想の転換をしてみると処理Aから処理Bという流れに見えませんか?
DOT言語は生成AIを利用する上で有利なテキストベースでありながらグラフを作成できるのがキモであり、例えばこのA -> BがA「Webページを開いたら」 → B「Hello, Worldと表示する」という風にできるのであれば処理のフローが可視化されており本当に素晴らしいことです。
ここでプログラミングの有識者は「DOT言語をUMLなどに見立てて処理を記述するのは良いが、プログラミング初心者は求めた結果を出力するロジックやアルゴリズムを発想する知見や経験値が圧倒的に足りていないのが問題ではないか?」と至極真っ当かつ反論の余地がない問題点の指摘をすると思いますが、そこで活きるのが生成AIです。
生成AIは初級者プログラマ個人のロジックやアルゴリズムの作成能力へ無関係にロジックやアルゴリズムを生成できる(可能性が少なくともある)ので、処理のフローをDOT言語で記述することにより処理フローから初級者プログラマが求めるプログラムを生成AIへ推論させ生成させるというのが狙いです。実際に試してみましょう。
digraph graphname {
A[
label = "Webページを表示する"
];
B[
label = "Webページを表示したらHello, worldとテキストを表示する"
];
A -> B;
}
プログラミングの有識者はこの時点で「なるほど、自然言語の記述をそのままDOT言語に入れ込んでしまうのか」と気付いたのではないかと思います。
このDOT言語をGoogle Gemini 2.5 Flashへ「下記のデータ記述言語のDOT言語で記述された処理フローをJavascript言語へ変換をしWebページ上へ「Hello,world」を表示したいので変換をお願いします。」と命令すると以下のコードが生成されました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World Page</title>
</head>
<body>
<div id="output"></div>
<script>
// Webページが表示されたら(DOMが完全に読み込まれたら)実行される
document.addEventListener('DOMContentLoaded', function() {
// "Webページを表示する" ステップは、このHTMLファイル自体が表示されることで達成されます。
// "Webページを表示したらHello, worldとテキストを表示する" ステップ
const outputDiv = document.getElementById('output');
outputDiv.textContent = 'Hello, world';
});
</script>
</body>
</html>
フローを記述する利点は、ロジックやアルゴリズムを発想する知見や経験値が足りなくとも、フローのステップが明確に分かれているので生成AIが処理を切り分けて推論してくれることであり、そしてプログラミング初心者自身がフローチャートを視覚で確認できるので「Aを処理したらBを処理する」と切り分けて考えやすいことです。
また、求めている結果ではなく誤った結果が生成されても、A - > B - > Cとフローを細分化していくことで生成AIの推論精度を高めていくことができるのも利点です。
より生成AIへ精度の高い推論をしてもらうために補足情報を付加するのも有用です。
digraph graphname {
A[
label = "Webページを表示する"
];
B[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];
A -> B;
}
labelの記述内容もcommentの記述内容も生成AIが推論のための情報として利用するので誤った結果が生成されてもA - > B - > Cとフローを細分化しなくとも良い場合があります。
DOT言語を知るプログラミング有識者が「DOT言語の仕様を考えれば確かにそうだが、その発想はなかった」と言っていただけるであろうDOT言語コード例だとこういう記述方法もアリです。
digraph 増田コード {
最初の処理[
label = "Webページを表示する"
];
次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];
最初の処理 -> 次の処理;
}
ノードの名称へ自然言語を採用することにより、例えばゲームプログラミング時に「キャラクターがジャンプする」という読んだそのままな処理のためのノード、というか一般的に言うオブジェクトを作成することが可能で、後は->で繋げて処理をさせられます。
ちなみに別のノードを作成する際に「"キャラクターがジャンプする"から継承する」の様なことをcommentなどへ記述しておくと生成AIが推論して継承します。なんならcommentなどへ「キャラクター画像にimage.gifを使用」などと記述しておくとファイルの読み込みもします。
更にDOT言語にはカスタム要素という仕様が存在しており、DOT言語の仕様で定められた予約語以外も使用が可能です。
digraph 増田コード {
最初の処理[
label = "Webページを表示する"
];
次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機",
font_style = "フォントを太字のボールド体、色を赤(#FF0000)とする"
];
最初の処理 -> 次の処理;
}
生成AIはカスタム要素の名称からも推論を発揮し、上記の場合であればフォントスタイルを指定していると推論をするので生成AIの推論精度を高める補足情報として機能します。
つまりこれはカスタム要素の名称として"Action"などの名称を採用すると"動作"として推論をし、"decision"ならば"条件分岐"ですし、"input"ならば"入力"ですし、"loop"ならば"繰り返し"ですし、"Type"ならば"種別"です。
より詳細に process[type="Action"] などのノードを作成してどんどん生成AIの推論精度を高めていくことが可能であり、そろそろ察してきているかと思いますが 処理[種別="動作"] と自然言語で記述しても機能します。
プログラミング有識者は更に「プログラム言語自体の予約語、例えばJavascriptを生成する事を前提にlengthを名称にすると配列を使おうとするのか?」と疑問に感じるでしょうがお察しの通りで生成AIは配列を使おうとするので、敢えて使いたいプログラム言語の機能や外部ライブラリなどがある場合は補足情報として機能する形で記述しておくと生成AIは推論へ利用します(まぁそこまで知識ある方なら該当のプログラム言語使ったほうが手っ取り早いと思いますが)。
以上をもって「生成AIを利用したプログラミング初級者向けの温故知新な提案」を終えたいと思います。
色々とツッコミどころには筆者自身が気付いていて。例えば「結局はDOT言語の仕様を覚えないといけないのでは?」とか「プログラミング初級者に任せると生成前のソースであるDOT言語コードがスパゲッティになりそうだよな」とか「面倒くせぇから普通にプログラミング覚えろや」とか理解してますし至極真っ当かつ反論の余地がないと思ってます。
今回の提案のプログラミング有識者向けの本質は「生成AIへ向いた中間言語の発掘」であり、「DOT言語ならそこそこ普及してるしプログラミング初級者でも扱えるんじゃね?」と業務中に発想したものを書き留め公開いたしました。
"現状"とはつまり2025年5月時点の話であり、動向が非常に変わりやすいIT業界の風土を考えると将来的にどのようになるかは予測が非常に難しい。
しかし、数年でこの"現状"が変化するとは考えにくく、今現在の学生が10年以内に社会人となったとき今現在の"現状"を基礎に情報技術を学んでいる可能性が高く、このエントリでは"現状"を周知する為に書かれた。
集計した時期や団体で数値の変動はあるが、日本国内で現状のICT教育でのOSシェアはChromeOSがおおむね30〜40%というシェアを獲得しており、IT大国と知られているアメリカでは日本と同様に集計した時期や団体で数値の変動はあるがおおむね50〜60%というシェアであり、ICT教育のOSとしてChromeOSがデファクトスタンダードとなっている。
これは、テックファンがよく語るように「ChromeOS端末が安価で導入できる」という意見が理由として挙げられがちで、実際に導入コストを抑えられるメリットというのは大きいものの、逆に言うとそれ以外の理由があまり語られることが少ない。
流石にこの意見は、IT業界のプロの現場で多用されるMicrosoftやAppleを抱えるIT先進国である米国がただ安価であるからという理由だけでGoogleのChromeOSを採用するにしてはあまりにも弱すぎる理由ではないだろうか?
そこで「何故ChromeOSを教育現場は採用するのか?」を紐解きたい。
長々と引っ張るのも億劫になってしまうので結論から言えば「Google ClassroomとGoogle Family Linkの出来が非常に良い」からである。
Google ClassroomとはまさにICT教育向けにGoogleから提供されているグループウェアで、生徒へ対して課題の作成と配布、進捗、採点、評価の管理が可能で、それらにはGoogleドキュメントやGoogleスプレッドシート、Googleスライド、Googleカレンダーが利用でき、教師生徒間オンラインコミュニケーションとしてGmailやGoogle Chatを用いることができる。
つまり教育現場からするとChromeOS端末を導入したらGoogle謹製のオールインワンICT教育グループウェアが瞬時に入手可能であり、更に言えば現状では既にデファクトスタンダード化しており膨大な導入事例によって困りごとの解決が非常に容易であることがあまりにも大きなメリットとなっている。
なにせICT教育端末の2台におおよそ1台はChromeOS端末であり、例えばSNSなどで流れてくる「ChromeOSでこんな酷い目に遭った」は導入数が多いが故にであり、逆にiPadOSを支持する人でも「Apple Classroom」というアプリが存在することを知らない場合が多い。何故知らないのか?と言えば導入数が少なく話題にまったく挙がってこないからである。
なお、Apple ClassroomとGoogle Classroomを比較するとGoogle Classroomの方が高機能である。AppleもICT教育OSシェアを上げようとApple Classroomの改善に努めてはいるもののGoogle Classroomへ追いつくまでには至っていない。
Google謹製のペアレンタルコントロールアプリで、子供のGoogleアカウントに紐づけられたChromeOSおよびAndroidOS、それらがインストールされる端末などを管理できるサービス。
端末自体の使用時間上限を定めたり、端末の使用時間上限を定めずアプリ毎の使用時間上限を定められ、つまりゲームやYoutubeやTiktok、Webブラウザアプリなどは1日1時間に制限しつつ、学習アプリは使用時間無制限にでき、そのほかWebフィルタリングやYoutubeフィルタリング、アプリインストール、課金管理も可能で、しかも就寝時間や登校時間には使わせないようにできるなど親にとっては至れり尽くせり子供にとっては非常にお節介なサービスである。
ペアレンタルコントロールの自由度も実はAppleの方が乏しく、Apple製端末を子供に与えている親は親自身が設定したペアレンタルコントロールに親自身が巻き込まれたりして四苦八苦するシーンがある(実体験)が、Google Family LinkのあるChromeOSおよびAndroidOSはApple製端末ほど困ることが少ない。
Google ClassroomとGoogle Family LinkだけではIT大国であるアメリカが何故ChromeOSをICT教育OSとしてデファクトスタンダードとしてしまったのか?の納得感としては薄い。
最終的な決め手は「一般的な使い方ではセキュアなサンドボックス上でタブレットOSやスマホOSのように容易に利用でき、高度なプログラミングを学ぼうとするときプロとほぼ同じ環境を利用できる」ことにあるだろう。
もちろんiPadOSには「Swift Playgrounds」があり高度なプログラミングを体験できるが、ChromeOSやAndroidOSではPlaygroundsどころかLXC/LXD仮想環境上に構築されたLinuxディストリビューションのDebianを扱える。
いやそもそもDebianを導入しなくてもGoogle Play Storeには小学生向けプログラミング環境のScratchからインスパイアされたポケットコード、非常に本格的なゲームプログラミングIDEのGDevelop、UnityやUnreal Engineに次いで業界3位のシェアを持ちプロ現場でも採用される2D/3DゲームプログラミングIDEのGodot Engineなどがある。
そして当たり前のようにGoogleはChrome OS向けAndroid Studioを用意しており、ChromeOSさえあればAndroidOSアプリをGoogle謹製のプログラミング環境で開発することができる(実際のところAndoridOSはAndroidOSだけでアプリをコンパイル&ビルドできるが割愛)。
これMacとiPhoneやiPadしか触ってこなかった人間からするとどういうことかと言えばChromeOSにはAppleで言うところのXcodeがあることを意味し、何ならDebian上でWeb版みたいに機能制限されていないフル機能のMicrosoft Visual Studio Codeが利用でき、理解できる人は驚いただろうが前述の通りGodot Engineがあるわけだ。RubyやPythonだって動くし、Bashもfishもzshも選び放題、Vim vs. Emacs論争へも参戦できる。
しかも昨今、WindowsのWSL2でLinuxディストリビューションが導入できるようになってしまった影響で、一部の情報技術者の間では「開発環境は仮想上のLinux、サービス動いてるサーバーもLinux、じゃあWindowsとかmacOSとか使わずに最初から無理せずLinuxディストリビューションを端末へインストールして開発したら良いんじゃねーの?」という動きが活発化しており、そこへ表面上は日常利用でスマホやタブレットOSのように扱えて開発はしっかりLinuxディストリビューションであるChromeOSが「あれ?意外とChromeOS良いんじゃね?」という評価が始まっているのだ。
それでも「ICT教育は性能やランニングコスト的にiPadが優れてるんだ!」というAppleファンの熱い想いは否定しない。
しかし、しかしだ、当の多くのプログラマがiPadでプログラミングしてないんだ!!!開発するときにiPadのセキュアすぎるサンドボックスがマジで邪魔だと思っちゃってるんだ!!!!!
前述までの話を聞いて「iPadとChromeOS、仕事でどちらかしか使えません。どっちを選びますか?」と言われたらLXC/LXD仮想環境のあるChromeOSじゃん!!!IT大国のアメリカ様もそりゃChromeOS選ぶよ!!!!!だってプロの現場で使われてるんだもんLinuxがッッッ!!!!!!!
「どっちかしか選べないて?じゃあ俺は普通にMacbookにするわ」だって?えっそれ10年後ChromeOS(Linuxディストリビューション)でICT教育受けてきた新社会人に言えんの?サバンナで生きていけないよ?2人に1人は「学生のときChromeOSでしたぁ」って悪気なくピュアな瞳で言ってくる時代が直ぐそこだよ?
Windowsですら無いんだぞ?隔世の感どころの騒ぎじゃねーぞ?「当時ChromeOSでヴァンパイアサバイバーズやってましたね」とか新社会人が言うんだぞ?iPadかChromeOSかって言われてんのにMacbookって返すのはギャグの段階に触れさえしてねぇよ?まぁMacbookはタッチスクリーンディスプレイじゃないから触れられないんだけどさ。
Apple信者が声を大にして言わなきゃいけないことは「Appleさん、iPadもうちょっと何とかならないっすか?」だろ!!!!!
正論言ってんじゃねーよ!!!今更Appleのエコシステムから抜け出せねぇんだよ!!!!!ちょっと気になってGoogle側の事を調べてみたらめちゃくちゃ進んでんじゃねーか!!!!!!!
えっなにマジで?今のAndroidOSは純正でDebian動くの???アプリストアにGodotあるってどういうこと?????
でもなんだろう、当時マイコンBASICマガジンやMSX FANなんかで
まぁ一部の界隈ではあるんだけど、とても盛り上がってた記憶があって、
PCのリースなら許可いらない。けど古物商は取っといて損しない
https://kyoninka-support.net/43/
子供向けについて
案外、エクセルのショートカットを壁に貼って覚えましょうねみたいなのもウケるかも?
最近だと情報の授業で基礎=低レイヤのことも学ばせるみたいな話がある。勉強し直さなきゃ
大人向けについて
PythonとJavaScriptでいいだろ
既に動く環境を貸出PCに作っちゃって、講師の助けいらなくなったら貸出料だけもらって…みたいにしちゃえば解決すると思った
最近はスマホ持ってるけどPC無いみたいな人も多いしいけると考えてる(個人で細々やる分には)
----
自分の中の知識を外の人に伝えて、知識の希少価値を下げ、自身を希薄化させたいのかもしれない
身内に不幸があった2日後に泣きながら講師労働をした経験があり、自分に向いていると感じている
----
あとで考えとく
JavaScript/TypeScript だけ出来ても仕方がないんだけど、全くのプログラミング初心者がプログラミングというものをかじるための入り口として勧める人は割と居るように思う。SCRATCH的な意味でのプログラミング入門用として。
まあ、俺は勧めないけどね (^^;
最近、東方アレンジの「インターネットサバイバー」や、くそみそテクニックアニメ化、あるいは「NEEDY GIRL OVERDOSE」など
「インターネット老人会」的なものを想起させるコンテンツが多く世に出てるけど
これらのメインターゲットが、作中で使われているようなネタをリアルタイムで体験しただろう世代(20後半〜30)と考えるのは間違いだと思う
これを書いている自分は小五の頃、ニコニコ動画の古いネタにハマってた
当時でも十分古かったし、リアルタイムで立ち会えてたらなあと思っていた
その熱が冷めてしばらく後、自分はScratch(子供向けプログラミングツール&投稿サイト 小中学生の独自の文化がある)をやっていた
そこで見つけた作品で、逆転裁判のキャラがニコニコの昔のネタを明らかに子供が描いた文章で言いまくるというものがあった
これを見て、自分がやってたことは平凡だったと落胆し、あれは誰もが通る道だったんだなと納得した
当時の自分そのままでなくても、単純にネットネイティブで当時からネット見てたとか、今の自分みたいに時期がズレたノスタルジーを感じてるような子供は間違いなく存在する
YouTubeで子供が見るような動画を見ると、普通に阿部さんアイコンがいる
高学年の息子は最近全然手がかからなくなった。昔からScratchは好きだったけど、今では
youtube等でいろんなゲームの作り方を調べる→自分なりにゲームを作ってみる
が、できるようになった。
もう私には分からないくらい複雑なゲームを作ってて感心する。子供のうちからインプットとアウトプットをセットで自発的にできるのは偉い。あと、何年も飽きずに続けたのも偉い。自分が作ったゲームを妹に「つまらない」と言われても「自分で作ったことないやつは平気ですぐに批判するよな!じゃあ自分で作ってみろって感じ!」と怒ったりしてる。元バンドマンの夫がすごい勢いで同意してて笑った
下の子は保育園の頃から登校拒否が酷かったけど、小学生になっても引き続き朝はグズる日が多い。理由はママと離れたくないから。私は娘と接する時間を増やすためフルリモートの仕事に就いた。それなのに、放課後も土曜も毎日近所の子と遊びに行ってしまう。あと最近同じクラスに彼氏までできたらしい。
そんなにリア充なら学校も笑顔で行ってくれよとも思うが、なんだかんだで登校できてるしまぁいいや。
今日は時間があったので、育児が一番しんどかった頃書いた増田を読み返していた(https://anond.hatelabo.jp/20191211101840)
笑ってしまうくらい地獄で、そのころと比べてマシになったことも諦めたことも沢山あるけれど、まぁ成長してる部分も確かにあるよなと
3年経っても上の子はScratchばかりで宿題は夜中にならないとしない、下の子は登校拒否をしてるし、私は増田を書いている
まぁでもなんとかなっている
若手から中堅、シニアに至るまでみんな「プログラマーになりたい」と言っているのだが
現実問題としてそんなに簡単になれるものではない、というのを知っておいて欲しい
算数や国語は長い歴史の中で様々な試行錯誤が行われ、どのように教えれば大半の人が知識獲得できるかという方法論が確立されてきている
もちろんまだまだ改善の余地はあるが「こういう教え方が良い」というのがちゃんとある
ところがプログラミングに関してはまだまだ歴史が浅く、どのように教育すればプログラマーになれるかが分かっていない
幼少期からC言語を教えるのか、Scratchでいいのか、Pythonがいいのか、何も分かっていない
今のプログラマー達は生存者バイアスでしかないので体験談は全然アテにならない
何かしらそれっぽい理論が発表されてたりもするがエビデンスに欠けるモノが多くてまだまだ研究中という感じだ
そんな感じなので「実際に書いてみるのがいい」「業務で使いながら覚える」「写経するのが良い」などなどいろんな方法論が乱立している
あなたがプログラミングを勉強し始めると「教え方が良くない」「本が役に立たない」となることを覚悟してほしいし
勉強法をトライアンドエラーで繰り返していくことになるので技能獲得には相当な時間がかかる
PythonでもJavaScriptでもメモリのアロケーションのような計算機的知識が必要とされる
みたいに言われることも多いが実際にはそんなことはなく、ちょっとしたバグを引いたときにでもその手の知識が必要になる
もちろん昔に比べれば非常に楽になったが全くゼロでいい訳では無い
同様にクラウドリソースを使うときにTCP/IPを全く知らなくて良いか、と言われるとそうでもない
GraphQL使うときにHTTPの知識が全くいらないわけではないように
プログラミングでは下手するとWiFiやLTE/5Gの知識まで必要とされる
これは例えば建築関係においても同様で、家を建てる人にはコンクリートの基礎知識が必要だったり木材に関する基礎知識が必要だったりするのだが
歴史が古い分野では教育法が確立されているので建築学科なりに行けばキッチリ教えてくれる
同様に情報系の学部に行けば教えてくれるが、大学による差がかなり大きいし、体系化されているわけではない
Word, Excelの使い方を中心に教えるような大学もあれば情報理論から教えるような大学もあるし
それのどちらが良いかは誰も分かっていない
オンラインビデオで有名大学の授業を見ることもできるが、質問はできないので分からないところがあれば終わりだ
なので大学に行ったとしてもいろんな授業を受けてトライアンドエラーで長い時間をかけて技能獲得する必要がある
「Python検定1級」みたいなのが乱立しているがはっきり言って役に立たない
しかも「Python検定1級取得のための集中研修」みたいなのもあって地獄みがある
問題を解くための知識だけを得たところで前述した前提知識がないと実務で役に立たない
プログラマーを雇う側はその手のことをよく知っているので、こういった資格は全く考慮に入れていない
TOEICや英検のように「実務ではあんまり役に立たないんだけどな」と思われてる資格であっても社会的にコンセンサスが取れていればそれなりに役に立つが
プログラミングに関してはそういった資格がない状態である(IPAはそれなりに信頼されているが、取って無いから落とすようなことはない)
この英語における「TOEICがない」状態で困るのは効果測定である
プログラミングを勉強しても自分が成長しているのかどうかを客観的に知る方法が無いので独学で学んでも役に立つかどうか分からない
オープンソースに携わったり業務経験などを経て長い時間をかけて「プログラミングができるようになってきた」となるので1,2年でさっさとプログラマーになることはできない
一番の近道は旧帝大の院に入学して2年間キッチリ勉強すればそれなりのプログラマーになれる
もちろんスタートラインなのでそこから業務経験を身につける必要がある
なので旧帝大の院に入れないような人はプログラマーとしての前提知識を得るための前提知識がそもそも足りていない
独学でやるなら近道は一切無いので5年ぐらいは覚悟した方が良いと思う
Ichigojam もあれば Raspberry Pi もあれば Scratch も有れば….
はてなー歴はwindows vistaの頃からなんだけど、仕事はエンジニアではなく、ITのこと全然わからない。
息子氏小学校高学年は、発達障害で運動はからっきしダメ。頭脳も明晰とは言い難いかな。平均よりは良さそうだけど。
Scratchは何かいじってる。マイクラでは遊んでるけど、switchのプログラミング のゲームは全くやらない。
ピアノとか水泳とかそういう習い事的な感じで、人生の選択肢を増やす一つとしてプログラミングスクールに通わせたい。本人もやってみたいとは言う。
関東だが郊外すぎて自宅から通える範囲に全国展開しているような教室はない。オンライン学習のやつがいいんだけど、息子氏のテンションがそこまで高くないので、初期投資が高いのは辛い。
https://crefus.com/e-crefus/digest/
をやってみたいっていうので調べたら、最初に6.5万円のロボットキットを買わなきゃならんらしい。息子氏のテンションにそこまで投資できない。
サイバーエージェントのやつが高いけど良さそうかなとも思ったけど、まず無料相談の予約が取れねーじゃねーか。
Switchのソフトで『はじめてゲームプログラミング』ってあるじゃん
子どもに買い与えたら一時期狂ったようにやってたんだけど
あれってあくまで簡易な感じの「開発ゲーム」だから、設置できるオブジェクト?とかに限りがあるらしくて
「もっと大ボリュームのゲームを作ってみたい」「将来ゲーム作る人になりたい」みたいなこと言い出したんだよね
scratchってのがいいって聞いたけど、ちょっと調べたらなんか『はじプロ』とそんなに変わらんような気もしている
かと言ってなんかガチな開発環境みたいのを揃えても難易度高すぎて飽きたりしそうだし
そもそもガチな開発環境ってゼニかかるやん…ゼニはあんまり出せへんねん…
PCは何とかメモリ16GBのを貸してやれるけど、グラフィック処理がいいやつとかでは全然ないし、そんなガチガチな開発環境はとても揃えられん
でも子どもが目ェキラキラさしてテンションブチ上がってるの見たら、挫折に終わるとしてもできるだけやりたい放題させてやりたいじゃん…「将来の夢」とまで言い出すんなら尚更…
つーわけで、似たようなご家庭各位、『はじプロ』の次、ってどんなのやらせてます?
なんか良いのあったら教えてほしい
最近scratchというビジュアルプログラミング言語を子供達と一緒に遊ぶ機会があったのだが、そのScratchで作られたゲームをよく見てみると、マリオだったり、世に出回っているゲームのコピーのようなものであったりと、著作権的に問題ありありの内容を子どもたちが平然と遊んでいるのを見てて、うーん..と少し感じる。
Scratchは教育用としての側面が強く、学校現場でも非常によく使われているらしいのだが、その教育という面を盾にして、何でもやっても良い、著作権無法地帯みたいなことが起きていると思う。
学校現場でまず著作権から教えれば、とも思うが、著作権に対しての考えが緩い先生方に、この著作権について教えるというハードルは中々に高い。この辺りは、学校が〜、いや保護者が〜、いや外部の人が〜、とかで結局、著作権についてはたらい回しにされそう。
Scratchの明らかに著作権違反のものを楽しく遊んでいる子どもたちを見ていると、少し前の共有ソフトで違法ダウンロードしたゲームを、俺たち遊んでいるぜ‼️ヒャッハー‼️みたいな状況と少し似てなくもない。