[{"data":1,"prerenderedAt":7815},["ShallowReactive",2],{"\u002Ftag\u002Fbeginner-programming":3},[4,1525,3988,5237,5737,6122,7313],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"category":11,"tag":13,"thumbnail":19,"createdAt":20,"updatedAt":21,"body":22,"_type":1519,"_id":1520,"_source":1521,"_file":1522,"_stem":1523,"_extension":1524},"\u002Farticles\u002Fhacker-2","articles",false,"","ちょっとだけハッカー2","エクセルマクロ作成にAIエージェントを使ってみた",[12],"programming",[14,15,16,17,18],"ai","beginner-programming","information-ed","management","dx","hacker-2.jpg","2026\u002F4\u002F13","2026\u002F5\u002F5",{"type":23,"children":24,"toc":1510},"root",[25,33,48,53,57,63,68,76,81,86,89,96,125,136,164,169,172,178,240,453,465,477,480,486,605,610,640,663,705,710,715,718,724,748,759,792,797,804,811,850,856,895,900,933,939,944,949,962,967,972,991,994,1000,1029,1034,1039,1062,1067,1072,1091,1094,1099,1105,1118,1123,1128,1141,1146,1149,1154,1165,1168,1174,1187,1200,1204,1312,1316,1399,1403,1496,1499,1502],{"type":26,"tag":27,"props":28,"children":29},"element","p",{},[30],{"type":31,"value":32},"text","　現役教員時代、「ハダノ先生はハッカーみたいなことできるんでしょ」と生徒たちに言われていました。",{"type":26,"tag":34,"props":35,"children":36},"ul",{},[37],{"type":26,"tag":38,"props":39,"children":40},"li",{},[41],{"type":26,"tag":42,"props":43,"children":45},"a",{"href":44},"\u002Farticles\u002Fhacker-1",[46],{"type":31,"value":47},"🔗AIエージェントで「ちょっとだけハッカー」になれ、アプリを改造できた",{"type":26,"tag":27,"props":49,"children":50},{},[51],{"type":31,"value":52},"の要領で、エクセルマクロが作れるかもと思いました。",{"type":26,"tag":54,"props":55,"children":56},"br",{},[],{"type":26,"tag":58,"props":59,"children":61},"h2",{"id":60},"エクセルマクロ作成にaiエージェントを使ってみた",[62],{"type":31,"value":10},{"type":26,"tag":27,"props":64,"children":65},{},[66],{"type":31,"value":67},"　今年度から自治会の役員になり、Windowsタブレットで表計算ソフトを使うことにしました。「エクセル互換ソフトでいけるだろう」と思っていたのですが、自分がよく使っていた機能がないことに気づき、やむなくエクセルをインストールしました。",{"type":26,"tag":69,"props":70,"children":75},"img",{"src":71,"alt":72,"className":73},"\u002Fimg\u002Flaptopexcel.jpg","Windowsタブレットでエクセル",[74],"imghc",[],{"type":26,"tag":27,"props":77,"children":78},{},[79],{"type":31,"value":80},"　教頭としてPTA事務局・会計をしていたころと違って、伝票処理のデジタル化が進んでいました。",{"type":26,"tag":27,"props":82,"children":83},{},[84],{"type":31,"value":85},"　銀行の入出金は、「QR伝票作成サービス」を使えば手書き不要です。通帳摘要など全角入力できるのですが、なぜか半角も必要でした。Webで禁止の半角カタカナを久しぶりに扱います。そこで、この作業をエクセルで効率化してみることにしました。",{"type":26,"tag":54,"props":87,"children":88},{},[],{"type":26,"tag":90,"props":91,"children":93},"h3",{"id":92},"qr伝票入力をどうやって効率化するか",[94],{"type":31,"value":95},"QR伝票入力をどうやって効率化するか？",{"type":26,"tag":97,"props":98,"children":99},"ol",{},[100,105,110,115,120],{"type":26,"tag":38,"props":101,"children":102},{},[103],{"type":31,"value":104},"入力は1度だけにしたい",{"type":26,"tag":38,"props":106,"children":107},{},[108],{"type":31,"value":109},"全角入力したら、自動的に半角に変換してほしい",{"type":26,"tag":38,"props":111,"children":112},{},[113],{"type":31,"value":114},"「半角〇字以内」「全角〇字以内」の指定字数で切り出してほしい",{"type":26,"tag":38,"props":116,"children":117},{},[118],{"type":31,"value":119},"切り出したものを訂正・変更できるようにしたい（フリガナ違いへの対応）",{"type":26,"tag":38,"props":121,"children":122},{},[123],{"type":31,"value":124},"指定字数の異なる場面ごとにシートを分けたい",{"type":26,"tag":27,"props":126,"children":127},{},[128,130,133],{"type":31,"value":129},"、、、という要求をかなえるためには、",{"type":26,"tag":54,"props":131,"children":132},{},[],{"type":26,"tag":54,"props":134,"children":135},{},[],{"type":26,"tag":97,"props":137,"children":138},{},[139,144,149,154,159],{"type":26,"tag":38,"props":140,"children":141},{},[142],{"type":31,"value":143},"D列を入力用とし、日本語入力（ひらがな）を強制する",{"type":26,"tag":38,"props":145,"children":146},{},[147],{"type":31,"value":148},"E列を半角フリガナ用とし、PHONETIC関数（LibreCalcやGoogleスプレッドシートには存在しない）で左のセルのフリガナを抽出し、ASC関数で半角に変換する",{"type":26,"tag":38,"props":150,"children":151},{},[152],{"type":31,"value":153},"LEFT関数で指定字数分、左から切り出す",{"type":26,"tag":38,"props":155,"children":156},{},[157],{"type":31,"value":158},"値を複写するマクロが必要だが、マクロ記録で作ると選択されっぱなしになるので、Cells().Valueを使う",{"type":26,"tag":38,"props":160,"children":161},{},[162],{"type":31,"value":163},"一行目（絶対参照）の数字を読み取って指定字数とするために、MID関数で3,4文字目を切り出したあと、VALUE関数で数値に変換する。",{"type":26,"tag":27,"props":165,"children":166},{},[167],{"type":31,"value":168},"、、、という設定・式・マクロが必要になりそうです。",{"type":26,"tag":54,"props":170,"children":171},{},[],{"type":26,"tag":90,"props":173,"children":175},{"id":174},"qr伝票入力支援マクロをaiエージェントに頼むと",[176],{"type":31,"value":177},"QR伝票入力支援マクロをAIエージェントに頼むと……",{"type":26,"tag":179,"props":180,"children":183},"div",{"className":181},[182],"balloon2",[184,186,200,202,205,207,210,212,215,217,220,222,225,227,230,232,235,237],{"type":31,"value":185},"\n  ",{"type":26,"tag":179,"props":187,"children":190},{"className":188},[189],"icon",[191,193,199],{"type":31,"value":192}," ",{"type":26,"tag":69,"props":194,"children":198},{"src":195,"alt":196,"width":197},"\u002Fimg\u002Fhadano80.png","ハダノ",80,[],{"type":31,"value":192},{"type":31,"value":201},"\n銀行のQR伝票作成サービスを使うときに、「半角〇字以内」と「全角〇字以内」の両方を入力する必要がありますが、これをエクセル2019で効率化しようとしています。",{"type":26,"tag":54,"props":203,"children":204},{},[],{"type":31,"value":206},"\n1行目のタイトル行を",{"type":26,"tag":54,"props":208,"children":209},{},[],{"type":31,"value":211},"\nA1セル：№、B1セル：半角、C1セル：全角、D1セル：入力（その後Ctrl+J）、E1セル：半角14字以内、F1セル：全角07字以内",{"type":26,"tag":54,"props":213,"children":214},{},[],{"type":31,"value":216},"\nなどとし、",{"type":26,"tag":54,"props":218,"children":219},{},[],{"type":31,"value":221},"\nD列に全角で入力した文字列の半角フリガナをPHONETIC関数・ASC関数、VALUE関数、MID関数、LEFT関数などを使った式によって同じ行のE列に指定字数で切り出し、全角をVALUE関数、MID関数、LEFT関数などを使った式によって同じ行のF列に指定字数で切り出します。",{"type":26,"tag":54,"props":223,"children":224},{},[],{"type":31,"value":226},"\nその行にカーソルがある状態で、Ctrl+Jというショートカットでマクロを実行して、E列・F列のセルの値をB列・C列にコピーします。コピーしたものを訂正・変更することがあるためです。",{"type":26,"tag":54,"props":228,"children":229},{},[],{"type":31,"value":231},"\nそこで、E2セルの式、F2セルの式、マクロ Sub Phonetic1() の３つを提案してください。",{"type":26,"tag":54,"props":233,"children":234},{},[],{"type":31,"value":236},"\nちなみに、文字数は場面によって変わるので、シートを場面数分コピーして、E1セル・F1セルの数字2桁で指定することとします。",{"type":26,"tag":54,"props":238,"children":239},{},[],{"type":26,"tag":179,"props":241,"children":244},{"className":242},[243],"balloon1",[245,246,257,259,262,265,273,281,290,318,322,331,336,344,357,360,369,374,384,417],{"type":31,"value":185},{"type":26,"tag":179,"props":247,"children":249},{"className":248},[189],[250,251,256],{"type":31,"value":192},{"type":26,"tag":69,"props":252,"children":255},{"src":253,"alt":254,"width":197},"\u002Fimg\u002Faiagent.png","Gemini CLI",[],{"type":31,"value":192},{"type":31,"value":258},"\n✦ ご要望に合わせて、Excel 2019で効率的に銀行のQR伝票用データを作成するための数式とマクロを提案します。",{"type":26,"tag":54,"props":260,"children":261},{},[],{"type":26,"tag":54,"props":263,"children":264},{},[],{"type":26,"tag":97,"props":266,"children":267},{},[268],{"type":26,"tag":38,"props":269,"children":270},{},[271],{"type":31,"value":272},"E2セルの数式（半角フリガナ切り出し）",{"type":26,"tag":27,"props":274,"children":275},{},[276,278],{"type":31,"value":277},"D列の入力からフリガナを取得し、半角に変換した上で、E1セルの3〜4文字目にある数字の文字数分だけ左から取り出します。",{"type":26,"tag":54,"props":279,"children":280},{},[],{"type":26,"tag":27,"props":282,"children":283},{},[284],{"type":26,"tag":285,"props":286,"children":287},"strong",{},[288],{"type":31,"value":289},"=LEFT(ASC(PHONETIC(D2)), VALUE(MID(E$1, 3, 2)))",{"type":26,"tag":34,"props":291,"children":292},{},[293,298,303,308,313],{"type":26,"tag":38,"props":294,"children":295},{},[296],{"type":31,"value":297},"PHONETIC(D2): D2セルのフリガナを取得します。",{"type":26,"tag":38,"props":299,"children":300},{},[301],{"type":31,"value":302},"ASC(...): 全角文字を半角に変換します（カタカナも半角になります）。",{"type":26,"tag":38,"props":304,"children":305},{},[306],{"type":31,"value":307},"MID(E$1, 3, 2): E1セルの「半角14字以内」から「14」という文字列を取り出します。",{"type":26,"tag":38,"props":309,"children":310},{},[311],{"type":31,"value":312},"VALUE(...): 文字列を数値に変換します。",{"type":26,"tag":38,"props":314,"children":315},{},[316],{"type":31,"value":317},"LEFT(..., ...): 指定された文字数分、左から切り出します。",{"type":26,"tag":319,"props":320,"children":321},"hr",{},[],{"type":26,"tag":97,"props":323,"children":325},{"start":324},2,[326],{"type":26,"tag":38,"props":327,"children":328},{},[329],{"type":31,"value":330},"F2セルの数式（全角文字切り出し）",{"type":26,"tag":27,"props":332,"children":333},{},[334],{"type":31,"value":335},"D列の入力をそのまま、F1セルの3〜4文字目にある数字の文字数分だけ左から取り出します。",{"type":26,"tag":27,"props":337,"children":338},{},[339],{"type":26,"tag":285,"props":340,"children":341},{},[342],{"type":31,"value":343},"=LEFT(D2, VALUE(MID(F$1, 3, 2)))",{"type":26,"tag":34,"props":345,"children":346},{},[347,352],{"type":26,"tag":38,"props":348,"children":349},{},[350],{"type":31,"value":351},"LEFT(D2, ...): D2の文字列を左から指定数切り出します。",{"type":26,"tag":38,"props":353,"children":354},{},[355],{"type":31,"value":356},"VALUE(MID(F$1, 3, 2)): F1セルの「全角07字以内」から「07」を取り出し、数値の7として扱います。",{"type":26,"tag":319,"props":358,"children":359},{},[],{"type":26,"tag":97,"props":361,"children":363},{"start":362},3,[364],{"type":26,"tag":38,"props":365,"children":366},{},[367],{"type":31,"value":368},"マクロ Sub Phonetic1()",{"type":26,"tag":27,"props":370,"children":371},{},[372],{"type":31,"value":373},"現在選択されているセルがある行のE列・F列の値を、B列・C列に「値として」貼り付けます。これにより、貼り付けた後にB列・C列で個別に修正が可能になります。",{"type":26,"tag":375,"props":376,"children":378},"pre",{"code":377},"1 Sub Phonetic1()  \n2     Dim r As Long  \n3     r = ActiveCell.Row  \n4  \n5     ' 1行目（見出し）の場合は実行しない  \n6     If r \u003C 2 Then Exit Sub  \n7  \n8     ' E列の値をB列に、F列の値をC列に「値のみ」コピー  \n9     Cells(r, \"B\").Value = Cells(r, \"E\").Value  \n",[379],{"type":26,"tag":380,"props":381,"children":382},"code",{"__ignoreMap":8},[383],{"type":31,"value":377},{"type":26,"tag":27,"props":385,"children":386},{},[387,389,392,394,397,399,402,404,407,409,412,415],{"type":31,"value":388},"10　　Cells(r, \"C\").Value = Cells(r, \"F\").Value",{"type":26,"tag":54,"props":390,"children":391},{},[],{"type":31,"value":393},"\n11",{"type":26,"tag":54,"props":395,"children":396},{},[],{"type":31,"value":398},"\n12　　' 完了を通知したい場合は以下を有効にしてください（任意）",{"type":26,"tag":54,"props":400,"children":401},{},[],{"type":31,"value":403},"\n13　　' Application.StatusBar = r & \"行目のコピーが完了しました\"",{"type":26,"tag":54,"props":405,"children":406},{},[],{"type":31,"value":408},"\n14 End Sub",{"type":26,"tag":54,"props":410,"children":411},{},[],{"type":26,"tag":54,"props":413,"children":414},{},[],{"type":31,"value":416},"\n設定手順：",{"type":26,"tag":97,"props":418,"children":419},{},[420,425,430,435,440],{"type":26,"tag":38,"props":421,"children":422},{},[423],{"type":31,"value":424},"Excelで Alt + F11 を押してVBAエディタを開きます。",{"type":26,"tag":38,"props":426,"children":427},{},[428],{"type":31,"value":429},"「挿入」→「標準モジュール」を選択し、上記コードを貼り付けます。",{"type":26,"tag":38,"props":431,"children":432},{},[433],{"type":31,"value":434},"エディタを閉じ、Excel画面で Alt + F8 を押します。",{"type":26,"tag":38,"props":436,"children":437},{},[438],{"type":31,"value":439},"Phonetic1 を選択して「オプション」をクリックします。",{"type":26,"tag":38,"props":441,"children":442},{},[443,445,448,451],{"type":31,"value":444},"ショートカットキーの欄に j （または J）を入力して「OK」を押します。\n",{"type":26,"tag":54,"props":446,"children":447},{},[],{"type":26,"tag":54,"props":449,"children":450},{},[],{"type":31,"value":452},"\nこれで、D列に入力した後、その行のどこかにカーソルを置いて Ctrl + J を押すと、B列とC列に変換済みの値が入力されます。シートをコピーしてE1やF1の数字（14や07など）を書き換えるだけで、異なる文字数制限にも対応可能です。",{"type":26,"tag":27,"props":454,"children":455},{},[456,458,463],{"type":31,"value":457},"　さすがは ",{"type":26,"tag":285,"props":459,"children":460},{},[461],{"type":31,"value":462},"Gemini CLI 最新版",{"type":31,"value":464},"、一発でパーフェクトな提案です。これで行くことにします。",{"type":26,"tag":27,"props":466,"children":467},{},[468,474],{"type":26,"tag":69,"props":469,"children":473},{"src":470,"alt":471,"width":472},"\u002Fimg\u002Fphonetic1.jpg","値を複写するマクロPhonetic1","100%",[],{"type":26,"tag":54,"props":475,"children":476},{},[],{"type":26,"tag":54,"props":478,"children":479},{},[],{"type":26,"tag":90,"props":481,"children":483},{"id":482},"もしも-copilot-に頼んだらどうなるか",[484],{"type":31,"value":485},"もしも Copilot に頼んだらどうなるか？",{"type":26,"tag":179,"props":487,"children":489},{"className":488},[243],[490,491,502,504,517,529,534,544,554,564,575,590,600],{"type":31,"value":185},{"type":26,"tag":179,"props":492,"children":494},{"className":493},[189],[495,496,501],{"type":31,"value":192},{"type":26,"tag":69,"props":497,"children":500},{"src":498,"alt":499,"width":197},"\u002Fimg\u002Fgenai.png","ChatGPT",[],{"type":31,"value":192},{"type":31,"value":503},"\n　　　：：：：： \n",{"type":26,"tag":27,"props":505,"children":506},{},[507,512,515],{"type":26,"tag":285,"props":508,"children":509},{},[510],{"type":31,"value":511},"=LEFT(ASC(PHONETIC(D2)),14)",{"type":26,"tag":54,"props":513,"children":514},{},[],{"type":31,"value":516},"\n　　　：：：：：",{"type":26,"tag":27,"props":518,"children":519},{},[520,525,528],{"type":26,"tag":285,"props":521,"children":522},{},[523],{"type":31,"value":524},"=LEFT(D2,7)",{"type":26,"tag":54,"props":526,"children":527},{},[],{"type":31,"value":516},{"type":26,"tag":27,"props":530,"children":531},{},[532],{"type":31,"value":533},"Sub Phonetic1()",{"type":26,"tag":27,"props":535,"children":536},{},[537,539,542],{"type":31,"value":538},"　　Dim r As Long",{"type":26,"tag":54,"props":540,"children":541},{},[],{"type":31,"value":543},"\n　　r = ActiveCell.Row",{"type":26,"tag":27,"props":545,"children":546},{},[547,549,552],{"type":31,"value":548},"　　'E列 → B列（半角）",{"type":26,"tag":54,"props":550,"children":551},{},[],{"type":31,"value":553},"\n　　Range(\"B\" & r).Value = Range(\"E\" & r).Value",{"type":26,"tag":27,"props":555,"children":556},{},[557,559,562],{"type":31,"value":558},"　　'F列 → C列（全角）",{"type":26,"tag":54,"props":560,"children":561},{},[],{"type":31,"value":563},"\n　　Range(\"C\" & r).Value = Range(\"F\" & r).Value",{"type":26,"tag":27,"props":565,"children":566},{},[567,569,572],{"type":31,"value":568},"End Sub  ",{"type":26,"tag":54,"props":570,"children":571},{},[],{"type":26,"tag":54,"props":573,"children":574},{},[],{"type":26,"tag":27,"props":576,"children":577},{},[578,580,583,585,588],{"type":31,"value":579},"✨ 次の一手（あなたに確認したいこと）",{"type":26,"tag":54,"props":581,"children":582},{},[],{"type":31,"value":584},"\n半角14字・全角7字という字数は固定ですか？",{"type":26,"tag":54,"props":586,"children":587},{},[],{"type":31,"value":589},"\nそれとも行ごとに変わる可能性がありますか？",{"type":26,"tag":27,"props":591,"children":592},{},[593,595,598],{"type":31,"value":594},"可変なら、A列に「14」「7」などの数字を入れて、",{"type":26,"tag":54,"props":596,"children":597},{},[],{"type":31,"value":599},"\n式を動的にするバージョンも作れます。",{"type":26,"tag":27,"props":601,"children":602},{},[603],{"type":31,"value":604},"必要ならすぐ作りますよ。",{"type":26,"tag":27,"props":606,"children":607},{},[608],{"type":31,"value":609},"　なぜ「字数が行ごとに変わる可能性がある」と考えてしまうのか、理解に苦しみます。『シートを場面数分コピーして一行目を打ち換えればそのまま動くようになることを想定しています。』と念を押すと、、、",{"type":26,"tag":179,"props":611,"children":613},{"className":612},[243],[614,615,624,632],{"type":31,"value":185},{"type":26,"tag":179,"props":616,"children":618},{"className":617},[189],[619,620,623],{"type":31,"value":192},{"type":26,"tag":69,"props":621,"children":622},{"src":498,"alt":499,"width":197},[],{"type":31,"value":192},{"type":26,"tag":27,"props":625,"children":626},{},[627],{"type":26,"tag":285,"props":628,"children":629},{},[630],{"type":31,"value":631},"=LEFT(ASC(PHONETIC(D2)), VALUE(MID(E1, FIND(\"半角\", E1) + 2, 10)))",{"type":26,"tag":27,"props":633,"children":634},{},[635],{"type":26,"tag":285,"props":636,"children":637},{},[638],{"type":31,"value":639},"=LEFT(D2, VALUE(MID(F1, FIND(\"全角\", F1) + 2, 10)))",{"type":26,"tag":27,"props":641,"children":642},{},[643,645,648,653,656,658,661],{"type":31,"value":644},"かなり近づきましたが、",{"type":26,"tag":54,"props":646,"children":647},{},[],{"type":26,"tag":285,"props":649,"children":650},{},[651],{"type":31,"value":652},"=LEFT(ASC(PHONETIC(D2)),VALUE(MID(E$1,3,2)))",{"type":26,"tag":54,"props":654,"children":655},{},[],{"type":31,"value":657},"\nのように、行を絶対参照しないと式をコピーした時に破綻します。",{"type":26,"tag":54,"props":659,"children":660},{},[],{"type":31,"value":662},"\nまた、VALUE関数は、数字以外の文字が入っているとエラーになるので、2桁と決め打ちする必要があります。",{"type":26,"tag":179,"props":664,"children":666},{"className":665},[243],[667,668,677,682,700],{"type":31,"value":185},{"type":26,"tag":179,"props":669,"children":671},{"className":670},[189],[672,673,676],{"type":31,"value":192},{"type":26,"tag":69,"props":674,"children":675},{"src":498,"alt":499,"width":197},[],{"type":31,"value":192},{"type":26,"tag":27,"props":678,"children":679},{},[680],{"type":31,"value":681},"了解です、あなたの指摘は完全に正しいです。",{"type":26,"tag":34,"props":683,"children":684},{},[685,690,695],{"type":26,"tag":38,"props":686,"children":687},{},[688],{"type":31,"value":689},"行番号は絶対参照（E$1 \u002F F$1）にしないとコピー時に壊れる",{"type":26,"tag":38,"props":691,"children":692},{},[693],{"type":31,"value":694},"VALUE は数字以外が混ざるとエラーになるので、数字部分だけを確実に抽出する必要がある",{"type":26,"tag":38,"props":696,"children":697},{},[698],{"type":31,"value":699},"数字は 2 桁固定（例：14、07）と割り切るのが安全",{"type":26,"tag":27,"props":701,"children":702},{},[703],{"type":31,"value":704},"この条件をすべて満たす 堅牢で壊れない式 を作り直します。",{"type":26,"tag":27,"props":706,"children":707},{},[708],{"type":31,"value":709},"、、、結局、こちらの言う通りになりました。",{"type":26,"tag":27,"props":711,"children":712},{},[713],{"type":31,"value":714},"　マクロの質も良いわけではなく、「いろいろごたくを並べる割に使えないなぁ」といった感じです。使う人がエクセルに精通していないと、おかしな部分に気づかないでしょう。このあたりが、普通の生成AIの限界と思われます。",{"type":26,"tag":54,"props":716,"children":717},{},[],{"type":26,"tag":90,"props":719,"children":721},{"id":720},"ai時代に息を吹き返すエクセルマクロ",[722],{"type":31,"value":723},"AI時代に息を吹き返すエクセルマクロ",{"type":26,"tag":34,"props":725,"children":726},{},[727,738],{"type":26,"tag":38,"props":728,"children":729},{},[730],{"type":26,"tag":42,"props":731,"children":735},{"href":732,"rel":733},"https:\u002F\u002Fnote.com\u002Fe2ruda\u002Fn\u002Fn6f8295b9e0ee",[734],"nofollow",[736],{"type":31,"value":737},"🔗ノーコードの終焉？とVibe Coding：AI時代のEUCを再定義する",{"type":26,"tag":38,"props":739,"children":740},{},[741],{"type":26,"tag":42,"props":742,"children":745},{"href":743,"rel":744},"https:\u002F\u002Fnote.com\u002Fkmds_bpmg\u002Fn\u002Fn042b0454208a",[734],[746],{"type":31,"value":747},"🔗ローコードからAIコーディングへ",{"type":26,"tag":27,"props":749,"children":750},{},[751,753,756],{"type":31,"value":752},"、、、を読むと、いろいろ考えさせられます。",{"type":26,"tag":54,"props":754,"children":755},{},[],{"type":26,"tag":54,"props":757,"children":758},{},[],{"type":26,"tag":97,"props":760,"children":761},{},[762,767,772,777,782,787],{"type":26,"tag":38,"props":763,"children":764},{},[765],{"type":31,"value":766},"マイコン（パソコン）の黎明期は、ソフトはユーザーが作っていた",{"type":26,"tag":38,"props":768,"children":769},{},[770],{"type":31,"value":771},"ソフトの高度化・複雑化に伴い、与えられたものを使うことが中心になった",{"type":26,"tag":38,"props":773,"children":774},{},[775],{"type":31,"value":776},"ユーザーにプログラムさせるマクロ機能を備えたエクセルなどが人気に",{"type":26,"tag":38,"props":778,"children":779},{},[780],{"type":31,"value":781},"ネットワークの発展によって、データ・コードが組織的に管理・共有されるように",{"type":26,"tag":38,"props":783,"children":784},{},[785],{"type":31,"value":786},"ローコード・RPAによって増殖したソフトが組織上の問題を起こすようになった",{"type":26,"tag":38,"props":788,"children":789},{},[790],{"type":31,"value":791},"AIコーディングも同じ問題を起こすのではないか？",{"type":26,"tag":27,"props":793,"children":794},{},[795],{"type":31,"value":796},"、、、という流れを整理していきたいものです。",{"type":26,"tag":69,"props":798,"children":803},{"src":799,"alt":800,"className":801},"\u002Fimg\u002Fbithacker.jpg","ちょっとだけハッカー",[802],"imghr",[],{"type":26,"tag":805,"props":806,"children":808},"h4",{"id":807},"従来のeucローコードrpavba等の課題",[809],{"type":31,"value":810},"従来のEUC（ローコード・RPA・VBA等）の課題",{"type":26,"tag":34,"props":812,"children":813},{},[814,824,834],{"type":26,"tag":38,"props":815,"children":816},{},[817,822],{"type":26,"tag":285,"props":818,"children":819},{},[820],{"type":31,"value":821},"属人化とブラックボックス化",{"type":31,"value":823},": 作成者以外には中身が不明な「秘伝のタレ」となりやすく、異動・退職に伴い「野良アプリ・ロボット」として負債化する。",{"type":26,"tag":38,"props":825,"children":826},{},[827,832],{"type":26,"tag":285,"props":828,"children":829},{},[830],{"type":31,"value":831},"「箱」の制約と部分最適",{"type":31,"value":833},": ツールの機能（箱）の範囲内でしか開発できず、複雑な業務に対応しきれない。また、現場レベルの「安さ・速さ」が優先され、全社的なデータ連携（全体最適）が損なわれる。",{"type":26,"tag":38,"props":835,"children":836},{},[837,842,844,847],{"type":26,"tag":285,"props":838,"children":839},{},[840],{"type":31,"value":841},"ベンダーロックイン",{"type":31,"value":843},": 特定のプラットフォームに依存するため、移行コストやライセンス費が障壁となり、データの主権を失いやすい。",{"type":26,"tag":54,"props":845,"children":846},{},[],{"type":26,"tag":54,"props":848,"children":849},{},[],{"type":26,"tag":805,"props":851,"children":853},{"id":852},"aiコーディングによって改善されること",[854],{"type":31,"value":855},"AIコーディングによって改善されること",{"type":26,"tag":34,"props":857,"children":858},{},[859,869,879],{"type":26,"tag":38,"props":860,"children":861},{},[862,867],{"type":26,"tag":285,"props":863,"children":864},{},[865],{"type":31,"value":866},"開発の自由度と柔軟性（Vibe Coding）",{"type":31,"value":868},": ツール側の制約を超え、対話（Vibe）を通じて標準的なコードを生成できるため、外部API連携などの高度な実装が容易になる。",{"type":26,"tag":38,"props":870,"children":871},{},[872,877],{"type":26,"tag":285,"props":873,"children":874},{},[875],{"type":31,"value":876},"汎用スキル（VBA\u002FGAS等）の再評価",{"type":31,"value":878},": 習得が難しかったプログラミング言語も、AIが解説・デバッグを代行することで再び強力な武器となり、特定のツールに縛られない開発が可能になる。",{"type":26,"tag":38,"props":880,"children":881},{},[882,887,889,892],{"type":26,"tag":285,"props":883,"children":884},{},[885],{"type":31,"value":886},"コストの劇的低下",{"type":31,"value":888},": パズルを組み合わせるようなローコード操作すら不要になり、ビジネスの意図を直接コード化できるため、開発スピードが飛躍的に向上する。",{"type":26,"tag":54,"props":890,"children":891},{},[],{"type":26,"tag":54,"props":893,"children":894},{},[],{"type":26,"tag":805,"props":896,"children":898},{"id":897},"注意しなければならないこと",[899],{"type":31,"value":897},{"type":26,"tag":34,"props":901,"children":902},{},[903,913,923],{"type":26,"tag":38,"props":904,"children":905},{},[906,911],{"type":26,"tag":285,"props":907,"children":908},{},[909],{"type":31,"value":910},"「もっともらしい誤り」の量産",{"type":31,"value":912},": 素人がAIで低品質な成果物を量産し、その不備を専門家が事後処理する「後始末地獄」が生じるリスクがある。",{"type":26,"tag":38,"props":914,"children":915},{},[916,921],{"type":26,"tag":285,"props":917,"children":918},{},[919],{"type":31,"value":920},"管理不能なスパゲッティコード",{"type":31,"value":922},": 構造を理解せずに生成を繰り返すと、修正不可能な「ゴミ」が高速で蓄積される。",{"type":26,"tag":38,"props":924,"children":925},{},[926,931],{"type":26,"tag":285,"props":927,"children":928},{},[929],{"type":31,"value":930},"「設計」と「責任」の重要性",{"type":31,"value":932},": AIはコードを書くが、データの置き場所やガバナンス（データアーキテクチャ）までは管理してくれない。利用者には、ツールを操るスキル以上に「正しく設計し、結果に責任を持つ」マネジメント能力が不可欠となる。",{"type":26,"tag":69,"props":934,"children":938},{"src":935,"alt":936,"className":937},"\u002Fimg\u002Fhellish.jpg","素人がAIで誤りを量産し、プロが後始末する地獄絵図",[802],[],{"type":26,"tag":27,"props":940,"children":941},{},[942],{"type":31,"value":943},"　とりあえず、ローカルな業務効率化には、エクセルマクロ（VBA）はアリだと思います。これまでの膨大な蓄積があるので、AIにコーディング支援をしてもらいやすいと実感しました。",{"type":26,"tag":27,"props":945,"children":946},{},[947],{"type":31,"value":948},"　今回のマクロで特に感心したのは、",{"type":26,"tag":34,"props":950,"children":951},{},[952,957],{"type":26,"tag":38,"props":953,"children":954},{},[955],{"type":31,"value":956},"1行目（見出し）の場合は実行しない",{"type":26,"tag":38,"props":958,"children":959},{},[960],{"type":31,"value":961},"コピー完了をステータスバーで通知",{"type":26,"tag":27,"props":963,"children":964},{},[965],{"type":31,"value":966},"の２つです。",{"type":26,"tag":27,"props":968,"children":969},{},[970],{"type":31,"value":971},"　これに触発されて、「空白入力の場合は実行しない」も追加しました。データ処理の安全・効率を考えた「設計」について勉強になりました。",{"type":26,"tag":27,"props":973,"children":974},{},[975,977,982,984],{"type":31,"value":976},"　",{"type":26,"tag":285,"props":978,"children":979},{},[980],{"type":31,"value":981},"エクセルを壊さないDX",{"type":31,"value":983}," が理想です。　→ ",{"type":26,"tag":42,"props":985,"children":988},{"href":986,"rel":987},"https:\u002F\u002Fqiita.com\u002Fsatoru_higuchi\u002Fitems\u002Fa6aa0300c3a97648c65c",[734],[989],{"type":31,"value":990},"🔗Excel業務を壊さずAPI化する設計入門：現場を敵にしないDXの作り方",{"type":26,"tag":54,"props":992,"children":993},{},[],{"type":26,"tag":90,"props":995,"children":997},{"id":996},"まとめaiエージェントでqr伝票入力支援マクロが作れ効率化できた",[998],{"type":31,"value":999},"（まとめ）AIエージェントで「QR伝票入力支援マクロ」が作れ、効率化できた",{"type":26,"tag":27,"props":1001,"children":1002},{},[1003,1005,1011,1013,1019,1021,1027],{"type":31,"value":1004},"　WindowsタブレットのUSB端子は、Type-C 2つ なので、ふだん使い用として ",{"type":26,"tag":42,"props":1006,"children":1008},{"href":1007},"#lca64uac",[1009],{"type":31,"value":1010},"🔗小型USBメモリ Type-C Type-A 64GB",{"type":31,"value":1012}," を買いました。キャップをなくさぬように、",{"type":26,"tag":42,"props":1014,"children":1016},{"href":1015},"#netsuke",[1017],{"type":31,"value":1018},"🔗根付紐20個セット",{"type":31,"value":1020}," の中の1本を使って、USBメモリのストラップ穴と結びました。非常に小さいので、",{"type":26,"tag":42,"props":1022,"children":1024},{"href":1023},"\u002Farticles\u002Faimanga-10#mcdodo",[1025],{"type":31,"value":1026},"🔗USB-Cスマートケーブル",{"type":31,"value":1028}," と干渉することもなく快適に使えます。",{"type":26,"tag":69,"props":1030,"children":1033},{"src":1031,"alt":1032,"width":472},"\u002Fimg\u002Fusbmemory.jpg","小型USBメモリ",[],{"type":26,"tag":27,"props":1035,"children":1036},{},[1037],{"type":31,"value":1038},"　教頭時代、前任者から引き継いだファイルの手直しにいつも苦労しました。",{"type":26,"tag":34,"props":1040,"children":1041},{},[1042,1047,1052,1057],{"type":26,"tag":38,"props":1043,"children":1044},{},[1045],{"type":31,"value":1046},"一太郎文書 → ワード文書へ変換",{"type":26,"tag":38,"props":1048,"children":1049},{},[1050],{"type":31,"value":1051},"個別に作成された案内文書・宛名 → 差し込み印刷へ",{"type":26,"tag":38,"props":1053,"children":1054},{},[1055],{"type":31,"value":1056},"スペースでレイアウトされた文書 → 配置-中央揃え,インデントなどへ",{"type":26,"tag":38,"props":1058,"children":1059},{},[1060],{"type":31,"value":1061},"手書きで変更だらけの文書 → 校閲機能オンに",{"type":26,"tag":27,"props":1063,"children":1064},{},[1065],{"type":31,"value":1066},"、、、など、数え上げればきりがありません。",{"type":26,"tag":27,"props":1068,"children":1069},{},[1070],{"type":31,"value":1071},"　職員室にPCがはいったとき、ワード・エクセルの職員研修はありましたが、最低限の内容を1回だけ聞いても身に付きません。管理職試験にもPC実技試験はありません。自己流の使い方が氾濫してしまうわけです。",{"type":26,"tag":27,"props":1073,"children":1074},{},[1075,1077,1082,1084,1089],{"type":31,"value":1076},"　「ワードの表の中の文字を追加しても罫線がついてこないなぁ」と思ったら、「図形機能で線を引いてる！？」……なんてこともありました。「",{"type":26,"tag":285,"props":1078,"children":1079},{},[1080],{"type":31,"value":1081},"野良マクロ",{"type":31,"value":1083},"」どころか、「",{"type":26,"tag":285,"props":1085,"children":1086},{},[1087],{"type":31,"value":1088},"不良文書",{"type":31,"value":1090},"」という負の遺産がたまるのです。異動時の引継ぎはせいぜい半日なので、せっかく手直しした文書の扱い方を伝えきれずに「元の木阿弥」となることもあります。",{"type":26,"tag":54,"props":1092,"children":1093},{},[],{"type":26,"tag":27,"props":1095,"children":1096},{},[1097],{"type":31,"value":1098},"　個々のスキルがばらばらなうえに、引継ぎ・共有が不十分な組織では、効率化の前に解決しなければならない問題がいろいろあります。中でも「情報セキュリティ」は、待ったなしです。脅威はすぐそこまで迫っているかもしれません。",{"type":26,"tag":69,"props":1100,"children":1104},{"src":1101,"alt":1102,"className":1103},"\u002Fimg\u002Fpakkun.jpg","迫りくる脅威を必死に防いでいるホワイトハッカー",[74],[],{"type":26,"tag":34,"props":1106,"children":1107},{},[1108],{"type":26,"tag":38,"props":1109,"children":1110},{},[1111],{"type":26,"tag":42,"props":1112,"children":1115},{"href":1113,"rel":1114},"https:\u002F\u002Fjapan.zdnet.com\u002Farticle\u002F35246948\u002F",[734],[1116],{"type":31,"value":1117},"🔗サイバーセキュリティ専門家の約半分が転職を希望--その理由とは",{"type":26,"tag":27,"props":1119,"children":1120},{},[1121],{"type":31,"value":1122},"にあるように、「サイバーセキュリティは、成功は目に見えず、失敗は非常に目立つ」「経営幹部は自社が攻撃を受けていなければ、問題ないと思い込んでいる」ことから、正当な評価を受けていないようです。",{"type":26,"tag":27,"props":1124,"children":1125},{},[1126],{"type":31,"value":1127},"　サイバー攻撃は、大企業だけが標的になるものではありません。警視庁によると、むしろ中小企業の方がターゲットとなっています。",{"type":26,"tag":34,"props":1129,"children":1130},{},[1131],{"type":26,"tag":38,"props":1132,"children":1133},{},[1134],{"type":26,"tag":42,"props":1135,"children":1138},{"href":1136,"rel":1137},"https:\u002F\u002Fbusiness.ntt-east.co.jp\u002Fcolumn\u002Fbizdrive\u002Ftrain-white-hackers-in-house.html",[734],[1139],{"type":31,"value":1140},"🔗頼れる存在「ホワイトハッカー」を社内で育成する方法",{"type":26,"tag":27,"props":1142,"children":1143},{},[1144],{"type":31,"value":1145},"のように、セキュリティ対策の専門家であるホワイトハッカーを組織内に配置して備えたいものです。",{"type":26,"tag":54,"props":1147,"children":1148},{},[],{"type":26,"tag":27,"props":1150,"children":1151},{},[1152],{"type":31,"value":1153},"　目先の損得にとらわれず、長期的視点での人材育成に力を入れることが大切です。",{"type":26,"tag":27,"props":1155,"children":1156},{},[1157,1159,1163],{"type":31,"value":1158},"　AIエージェントで「",{"type":26,"tag":285,"props":1160,"children":1161},{},[1162],{"type":31,"value":800},{"type":31,"value":1164},"」になり、業務改善から始めましょう。",{"type":26,"tag":54,"props":1166,"children":1167},{},[],{"type":26,"tag":805,"props":1169,"children":1171},{"id":1170},"緊急プリンターを買い替え",[1172],{"type":31,"value":1173},"（緊急）プリンターを買い替え！",{"type":26,"tag":27,"props":1175,"children":1176},{},[1177,1179,1185],{"type":31,"value":1178},"　長年愛用してきた ",{"type":26,"tag":42,"props":1180,"children":1182},{"href":1181},"\u002Farticles\u002Fict-4#ep306",[1183],{"type":31,"value":1184},"🔗EP-306",{"type":31,"value":1186}," が、「廃インク吸収パッドエラー」で使えなくなりました。ユーザーがパッド交換できないので、メーカーへ修理に出す必要があります（このビジネスモデルはいかがなものか？）。",{"type":26,"tag":27,"props":1188,"children":1189},{},[1190,1192,1198],{"type":31,"value":1191},"　1万円＆2～3週間かかるというので、あきらめて買い替えることにしました。EP-306 の後継機種 ",{"type":26,"tag":42,"props":1193,"children":1195},{"href":1194},"#ep315",[1196],{"type":31,"value":1197},"🔗EP-315",{"type":31,"value":1199}," は、「廃インク吸収パッドエラー」が出てもフチあり印刷なら実行できるらしいので、迷わず決めました。見た目も使い方もインクも同じなので、即戦力になります。",{"type":26,"tag":54,"props":1201,"children":1203},{"id":1202},"lca64uac",[],{"type":26,"tag":179,"props":1205,"children":1208},{"className":1206},[1207],"kattene",[1209,1211,1227,1228],{"type":31,"value":1210},"\n    ",{"type":26,"tag":179,"props":1212,"children":1215},{"className":1213},[1214],"kattene__imgpart",[1216],{"type":26,"tag":42,"props":1217,"children":1222},{"target":1218,"rel":1219,"href":1221},"_blank",[1220],"noopener","https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F53732dca.d9b2508c.53732dcb.df291533\u002F_RTLink57026?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Flogitec%2Flmc-lca64uac%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9",[1223],{"type":26,"tag":69,"props":1224,"children":1226},{"src":1225},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Flogitec\u002Fcabinet\u002Fmemory\u002Flmc-lcauac\u002Flmc-lca64uac.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":1229,"children":1232},{"className":1230},[1231],"kattene__infopart",[1233,1235,1246,1247,1262,1263,1311],{"type":31,"value":1234},"\n      ",{"type":26,"tag":179,"props":1236,"children":1239},{"className":1237},[1238],"kattene__title",[1240],{"type":26,"tag":42,"props":1241,"children":1243},{"target":1218,"rel":1242,"href":1221},[1220],[1244],{"type":31,"value":1245},"ロジテックLMC-LCA64UAC 小型USBメモリ Type-C Type-A 64GB　挿しっぱなしOK",{"type":31,"value":1234},{"type":26,"tag":179,"props":1248,"children":1251},{"className":1249},[1250],"kattene__description",[1252,1255,1257,1260],{"type":26,"tag":54,"props":1253,"children":1254},{},[],{"type":31,"value":1256},"※ 自治会のデジタル化は、高齢者が多いこともあってなかなか進みません。前任者から引き継いだUSBメモリはType-Aの大きなものでした。",{"type":26,"tag":54,"props":1258,"children":1259},{},[],{"type":31,"value":1261},"このUSBメモリは、Type-AとType-C両用かつコンパクトで、ふだん使いにピッタリです。",{"type":31,"value":1234},{"type":26,"tag":179,"props":1264,"children":1268},{"className":1265},[1266,1267],"kattene__btns","__three",[1269,1271,1283,1285,1297,1298,1310],{"type":31,"value":1270},"\n      \t",{"type":26,"tag":179,"props":1272,"children":1273},{},[1274],{"type":26,"tag":42,"props":1275,"children":1280},{"className":1276,"target":1218,"rel":1279,"href":1221},[1277,1278],"kattene__btn","__red",[1220],[1281],{"type":31,"value":1282},"楽天",{"type":31,"value":1284},"\n        ",{"type":26,"tag":179,"props":1286,"children":1287},{},[1288],{"type":26,"tag":42,"props":1289,"children":1294},{"className":1290,"target":1218,"rel":1292,"href":1293},[1277,1291],"__orange",[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0CXSFFJFT",[1295],{"type":31,"value":1296},"Amazon",{"type":31,"value":1284},{"type":26,"tag":179,"props":1299,"children":1300},{},[1301],{"type":26,"tag":42,"props":1302,"children":1307},{"className":1303,"target":1218,"rel":1305,"href":1306},[1277,1304],"__green",[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Flogitec%2Flmc-lca64uac.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img",[1308],{"type":31,"value":1309},"Yahoo!",{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":1313,"children":1315},{"id":1314},"netsuke",[],{"type":26,"tag":179,"props":1317,"children":1319},{"className":1318},[1207],[1320,1321,1334,1335],{"type":31,"value":1210},{"type":26,"tag":179,"props":1322,"children":1324},{"className":1323},[1214],[1325],{"type":26,"tag":42,"props":1326,"children":1329},{"target":1218,"rel":1327,"href":1328},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F537628d7.39157b54.537628d9.e3340037\u002F_RTLink57026?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fyakinikuyutaka%2Fy0c584d4q4%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9",[1330],{"type":26,"tag":69,"props":1331,"children":1333},{"src":1332},"https:\u002F\u002Fimage.rakuten.co.jp\u002Fyakinikuyutaka\u002Fcabinet\u002Fgazou002pic\u002Fsystempic085\u002Fy0c584d4q42.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":1336,"children":1338},{"className":1337},[1231],[1339,1340,1350,1351,1370,1371,1398],{"type":31,"value":1234},{"type":26,"tag":179,"props":1341,"children":1343},{"className":1342},[1238],[1344],{"type":26,"tag":42,"props":1345,"children":1347},{"target":1218,"rel":1346,"href":1328},[1220],[1348],{"type":31,"value":1349},"サムコス 20個セット 根付紐 20色 ストラップ ハンドメイド素材",{"type":31,"value":1234},{"type":26,"tag":179,"props":1352,"children":1354},{"className":1353},[1250],[1355,1358,1360,1363,1365,1368],{"type":26,"tag":54,"props":1356,"children":1357},{},[],{"type":31,"value":1359},"※ ハダノは「USBメモリのキャップ紛失問題」に悩まされてきました。",{"type":26,"tag":54,"props":1361,"children":1362},{},[],{"type":31,"value":1364},"余っている携帯ストラップを付けようにも、大きくて大げさになりがちです。",{"type":26,"tag":54,"props":1366,"children":1367},{},[],{"type":31,"value":1369},"その点、この根付紐は金具さえついていないシンプルなもので、いろいろ使えそうです。",{"type":31,"value":1234},{"type":26,"tag":179,"props":1372,"children":1375},{"className":1373},[1266,1374],"__two",[1376,1377,1386,1387,1397],{"type":31,"value":1270},{"type":26,"tag":179,"props":1378,"children":1379},{},[1380],{"type":26,"tag":42,"props":1381,"children":1384},{"className":1382,"target":1218,"rel":1383,"href":1328},[1277,1278],[1220],[1385],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":1388,"children":1389},{},[1390],{"type":26,"tag":42,"props":1391,"children":1395},{"className":1392,"target":1218,"rel":1393,"href":1394},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0D92CR2SD",[1396],{"type":31,"value":1296},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":1400,"children":1402},{"id":1401},"ep315",[],{"type":26,"tag":179,"props":1404,"children":1406},{"className":1405},[1207],[1407,1408,1421,1422],{"type":31,"value":1210},{"type":26,"tag":179,"props":1409,"children":1411},{"className":1410},[1214],[1412],{"type":26,"tag":42,"props":1413,"children":1416},{"target":1218,"rel":1414,"href":1415},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F1c31a7e9.545b2c08.1c31a7ea.d83a8f7a\u002F_RTLink57026?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2F7a94b927eb0cdd33d62be5a6cccfaa4a%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjEsImFtcCI6ZmFsc2V9",[1417],{"type":26,"tag":69,"props":1418,"children":1420},{"src":1419},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fyamada-denki\u002Fcabinet\u002Fa07000291\u002F4790753016.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":1423,"children":1425},{"className":1424},[1231],[1426,1427,1437,1438,1457,1458,1495],{"type":31,"value":1234},{"type":26,"tag":179,"props":1428,"children":1430},{"className":1429},[1238],[1431],{"type":26,"tag":42,"props":1432,"children":1434},{"target":1218,"rel":1433,"href":1415},[1220],[1435],{"type":31,"value":1436},"EPSON EP-315 インクジェットプリンター 6色独立",{"type":31,"value":1234},{"type":26,"tag":179,"props":1439,"children":1441},{"className":1440},[1250],[1442,1445,1447,1450,1452,1455],{"type":26,"tag":54,"props":1443,"children":1444},{},[],{"type":31,"value":1446},"※ いろんなプリンター新製品が出ますが、6色インクで写真をきれいに印刷できる単機能機は限られています。",{"type":26,"tag":54,"props":1448,"children":1449},{},[],{"type":31,"value":1451},"そういうことで使い続けてきた EP-306 に、やっと後継機が出ました。",{"type":26,"tag":54,"props":1453,"children":1454},{},[],{"type":31,"value":1456},"細かい部分で改良されていると感じ、大満足です。",{"type":31,"value":1234},{"type":26,"tag":179,"props":1459,"children":1461},{"className":1460},[1266,1267],[1462,1463,1472,1473,1483,1484,1494],{"type":31,"value":1270},{"type":26,"tag":179,"props":1464,"children":1465},{},[1466],{"type":26,"tag":42,"props":1467,"children":1470},{"className":1468,"target":1218,"rel":1469,"href":1415},[1277,1278],[1220],[1471],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":1474,"children":1475},{},[1476],{"type":26,"tag":42,"props":1477,"children":1481},{"className":1478,"target":1218,"rel":1479,"href":1480},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0BTNGY4C6",[1482],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":1485,"children":1486},{},[1487],{"type":26,"tag":42,"props":1488,"children":1492},{"className":1489,"target":1218,"rel":1490,"href":1491},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fyamada-denki%2F4790753016.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img",[1493],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":1497,"children":1498},{},[],{"type":26,"tag":319,"props":1500,"children":1501},{},[],{"type":26,"tag":27,"props":1503,"children":1504},{},[1505],{"type":26,"tag":42,"props":1506,"children":1507},{"href":44},[1508],{"type":31,"value":1509},"←前へ　ちょっとだけハッカー",{"title":8,"searchDepth":324,"depth":324,"links":1511},[1512],{"id":60,"depth":324,"text":10,"children":1513},[1514,1515,1516,1517,1518],{"id":92,"depth":362,"text":95},{"id":174,"depth":362,"text":177},{"id":482,"depth":362,"text":485},{"id":720,"depth":362,"text":723},{"id":996,"depth":362,"text":999},"markdown","content:articles:hacker-2.md","content","articles\u002Fhacker-2.md","articles\u002Fhacker-2","md",{"_path":44,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":800,"description":1526,"category":1527,"tag":1528,"thumbnail":1532,"createdAt":1533,"updatedAt":1534,"body":1535,"_type":1519,"_id":3985,"_source":1521,"_file":3986,"_stem":3987,"_extension":1524},"ソックサーガ版学習アプリの改造にAIエージェントを使ってみた",[12],[14,15,1529,16,1530,1531],"socsaga","web-standards","vue","hacker-1.jpg","2025\u002F10\u002F26","2025\u002F11\u002F22",{"type":23,"children":1536,"toc":3972},[1537,1541,1553,1564,1576,1579,1584,1595,1607,1612,1617,1622,1633,1636,1642,1679,1927,1939,1944,1947,1953,1958,1987,2003,2014,2019,2024,2027,2033,2084,2113,2124,2172,2177,2188,2197,2209,2220,2241,2244,2249,2254,2257,2262,2305,2411,2450,2469,2472,2478,2483,2499,2508,2513,2518,2557,2588,2599,2612,2625,2628,2634,2639,2683,2688,2719,2724,2729,2765,2770,2773,2778,2783,2788,2800,2805,2810,2841,2854,2867,2888,2893,2913,2925,2931,2934,2939,2944,2965,2993,2998,3011,3016,3021,3026,3053,3058,3077,3082,3105,3121,3134,3139,3150,3153,3159,3180,3185,3214,3217,3229,3234,3247,3260,3265,3271,3283,3288,3291,3296,3331,3345,3352,3357,3370,3375,3409,3413,3416,3421,3434,3439,3444,3457,3462,3470,3483,3488,3501,3506,3515,3520,3525,3536,3541,3544,3549,3561,3566,3575,3579,3672,3676,3769,3773,3861,3865,3958,3961,3964],{"type":26,"tag":27,"props":1538,"children":1539},{},[1540],{"type":31,"value":32},{"type":26,"tag":34,"props":1542,"children":1543},{},[1544],{"type":26,"tag":38,"props":1545,"children":1546},{},[1547],{"type":26,"tag":42,"props":1548,"children":1550},{"href":1549},"\u002Farticles\u002Fblog-3",[1551],{"type":31,"value":1552},"🔗AIエージェントはWeb系プログラミングの役に立つか",{"type":26,"tag":27,"props":1554,"children":1555},{},[1556,1558,1562],{"type":31,"value":1557},"で、AIエージェントの支援があれば、「",{"type":26,"tag":285,"props":1559,"children":1560},{},[1561],{"type":31,"value":800},{"type":31,"value":1563},"」になれるかもと思いました。",{"type":26,"tag":27,"props":1565,"children":1567},{"style":1566},"text-align: right;",[1568,1570],{"type":31,"value":1569},"⇒",{"type":26,"tag":42,"props":1571,"children":1573},{"href":1572},"#spellquest",[1574],{"type":31,"value":1575}," お急ぎの方はこちらへ",{"type":26,"tag":54,"props":1577,"children":1578},{},[],{"type":26,"tag":58,"props":1580,"children":1582},{"id":1581},"ソックサーガ版学習アプリの改造にaiエージェントを使ってみた",[1583],{"type":31,"value":1526},{"type":26,"tag":27,"props":1585,"children":1586},{},[1587,1592],{"type":26,"tag":69,"props":1588,"children":1591},{"src":1589,"alt":1590,"width":472},"\u002Fimg\u002Fsocsaga01.jpg","ソックサーガ",[],{"type":26,"tag":54,"props":1593,"children":1594},{},[],{"type":26,"tag":34,"props":1596,"children":1597},{},[1598],{"type":26,"tag":38,"props":1599,"children":1600},{},[1601],{"type":26,"tag":42,"props":1602,"children":1604},{"href":1603},"\u002Ftag\u002Fsocsaga",[1605],{"type":31,"value":1606},"🔗ソックサーガ",{"type":26,"tag":27,"props":1608,"children":1609},{},[1610],{"type":31,"value":1611},"を中心に、中学生のプログラミング教育を後押ししてきたハダノですが、壁にぶつかっていました。",{"type":26,"tag":27,"props":1613,"children":1614},{},[1615],{"type":31,"value":1616},"　一般の中学校教員にとって、プログラミング環境構築はハードルが高いので、クラウド統合開発環境を推奨してきました。GlitchからReplitに乗り換え、自校運用できるように導いてきたつもりです。",{"type":26,"tag":27,"props":1618,"children":1619},{},[1620],{"type":31,"value":1621},"　ところが、2024年からReplitが使いづらくなりました。無料でできる範囲が小さくなってしまったのです。かといって、Glitchに戻る気にもなれません。",{"type":26,"tag":27,"props":1623,"children":1624},{},[1625,1630],{"type":26,"tag":69,"props":1626,"children":1629},{"src":1627,"alt":1628,"width":472},"\u002Fimg\u002Freplsoc.jpg","ReplitによるWebプログラミング",[],{"type":26,"tag":54,"props":1631,"children":1632},{},[],{"type":26,"tag":54,"props":1634,"children":1635},{},[],{"type":26,"tag":90,"props":1637,"children":1639},{"id":1638},"webアプリ開発環境のおすすめは",[1640],{"type":31,"value":1641},"Webアプリ開発環境のおすすめは？",{"type":26,"tag":179,"props":1643,"children":1645},{"className":1644},[182],[1646,1647,1656,1658,1661,1663,1666,1669,1671,1674,1676],{"type":31,"value":185},{"type":26,"tag":179,"props":1648,"children":1650},{"className":1649},[189],[1651,1652,1655],{"type":31,"value":192},{"type":26,"tag":69,"props":1653,"children":1654},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":1657},"\n2026年以降のことを考えた場合、Replitに代わるクラウド統合開発環境は何がよいでしょうか。",{"type":26,"tag":54,"props":1659,"children":1660},{},[],{"type":31,"value":1662},"\nおすすめの上位3つを理由付きで教えてください。",{"type":26,"tag":54,"props":1664,"children":1665},{},[],{"type":26,"tag":54,"props":1667,"children":1668},{},[],{"type":31,"value":1670},"\nまた、当面は（中学生が）ローカル（LANも含む）でWebアプリのコーディングをし、ローカルサーバーを利用して動作確認後、無料ホスティングサービス（Cloundflareなど）を利用して（教員が）デプロイすることになると思います。",{"type":26,"tag":54,"props":1672,"children":1673},{},[],{"type":31,"value":1675},"\nその際の手段としておすすめの上位3つを理由付きで教えてください。",{"type":26,"tag":54,"props":1677,"children":1678},{},[],{"type":26,"tag":179,"props":1680,"children":1682},{"className":1681},[243],[1683,1684,1693,1695,1698,1701,1709,1714,1813,1816,1824,1829,1922],{"type":31,"value":185},{"type":26,"tag":179,"props":1685,"children":1687},{"className":1686},[189],[1688,1689,1692],{"type":31,"value":192},{"type":26,"tag":69,"props":1690,"children":1691},{"src":253,"alt":254,"width":197},[],{"type":31,"value":192},{"type":31,"value":1694},"\n✦ 中学校での情報教育、特にWebアプリケーション開発の環境構築に関するご経験と課題、拝見いたしました。Replitの仕様変更は、教育現場にとって大きな課題かと存じます。2026年以降を見据えた上で、これまでのご経験と今後の運用形態を踏まえ、クラウドIDEとローカル開発＋ホスティングのそれぞれについて、おすすめの選択肢を提案させていただきます。",{"type":26,"tag":54,"props":1696,"children":1697},{},[],{"type":26,"tag":54,"props":1699,"children":1700},{},[],{"type":26,"tag":27,"props":1702,"children":1703},{},[1704],{"type":26,"tag":285,"props":1705,"children":1706},{},[1707],{"type":31,"value":1708},"Replitに代わるクラウド統合開発環境 おすすめ上位3選",{"type":26,"tag":27,"props":1710,"children":1711},{},[1712],{"type":31,"value":1713},"クラウドIDEは、生徒の環境差異をなくし、教員が管理しやすい点が最大のメリットです。Replitの代替としては、以下の3つが考えられます。",{"type":26,"tag":97,"props":1715,"children":1716},{},[1717,1751,1779],{"type":26,"tag":38,"props":1718,"children":1719},{},[1720,1725],{"type":26,"tag":285,"props":1721,"children":1722},{},[1723],{"type":31,"value":1724},"GitHub Codespaces",{"type":26,"tag":34,"props":1726,"children":1727},{},[1728],{"type":26,"tag":38,"props":1729,"children":1730},{},[1731,1733],{"type":31,"value":1732},"理由:\n",{"type":26,"tag":34,"props":1734,"children":1735},{},[1736,1741,1746],{"type":26,"tag":38,"props":1737,"children":1738},{},[1739],{"type":31,"value":1740},"教育現場への優遇: 「GitHub Education」に登録することで、教員は無料の利用枠を得られる可能性があります。生徒も同様の特典を受けられる場合があり、コスト面の課題を解決できる可能性が最も高いです.",{"type":26,"tag":38,"props":1742,"children":1743},{},[1744],{"type":31,"value":1745},"デファクトスタンダード: 中身は多くのプロが使用する「Visual Studio Code (VS Code)」そのものです。生徒は実践的な開発環境に早期から慣れ親しむことができ、将来的なステップアップにも繋がります。",{"type":26,"tag":38,"props":1747,"children":1748},{},[1749],{"type":31,"value":1750},"GitHub連携: ソースコード管理の学習と開発環境が一体化しており、バージョン管理の概念を自然に学べます。",{"type":26,"tag":38,"props":1752,"children":1753},{},[1754,1759],{"type":26,"tag":285,"props":1755,"children":1756},{},[1757],{"type":31,"value":1758},"CodeSandbox",{"type":26,"tag":34,"props":1760,"children":1761},{},[1762],{"type":26,"tag":38,"props":1763,"children":1764},{},[1765,1766],{"type":31,"value":1732},{"type":26,"tag":34,"props":1767,"children":1768},{},[1769,1774],{"type":26,"tag":38,"props":1770,"children":1771},{},[1772],{"type":31,"value":1773},"手軽さとコラボレーション: Webフロントエンド開発に特化しており、ReactやVue.jsといったモダンな技術のテンプレートが豊富です。ブラウザ上で非常に高速に動作し、複数人でのリアルタイム共同編集機能は、グループ学習に最適です。",{"type":26,"tag":38,"props":1775,"children":1776},{},[1777],{"type":31,"value":1778},"教育向け機能: 教室管理機能（CodeSandbox Classrooms）が提供されており、課題の配布や進捗管理が容易です。",{"type":26,"tag":38,"props":1780,"children":1781},{},[1782,1787],{"type":26,"tag":285,"props":1783,"children":1784},{},[1785],{"type":31,"value":1786},"StackBlitz",{"type":26,"tag":34,"props":1788,"children":1789},{},[1790],{"type":26,"tag":38,"props":1791,"children":1792},{},[1793,1794],{"type":31,"value":1732},{"type":26,"tag":34,"props":1795,"children":1796},{},[1797,1802],{"type":26,"tag":38,"props":1798,"children":1799},{},[1800],{"type":31,"value":1801},"圧倒的な速度: ブラウザ内でNode.js環境を直接実行する独自の「WebContainers」技術により、環境の起動や動作が非常に高速です。生徒を待たせることなく、すぐにコーディングを開始できます。",{"type":26,"tag":38,"props":1803,"children":1804},{},[1805,1807,1810],{"type":31,"value":1806},"オフライン動作: 一度プロジェクトを開けば、オフラインでも動作するPWA（プログレッシブウェブアプリ）として機能します。ネットワーク環境が不安定な場合でも、学習を継続できる可能性があります。",{"type":26,"tag":54,"props":1808,"children":1809},{},[],{"type":26,"tag":54,"props":1811,"children":1812},{},[],{"type":26,"tag":319,"props":1814,"children":1815},{},[],{"type":26,"tag":27,"props":1817,"children":1818},{},[1819],{"type":26,"tag":285,"props":1820,"children":1821},{},[1822],{"type":31,"value":1823},"ローカル開発＋無料ホスティング おすすめ上位3選",{"type":26,"tag":27,"props":1825,"children":1826},{},[1827],{"type":31,"value":1828},"ローカルでの開発は、ツールの仕組みをより深く理解することに繋がります。教員がデプロイを管理する現在の運用に最適な組み合わせは以下の通りです。",{"type":26,"tag":97,"props":1830,"children":1831},{},[1832,1860,1888],{"type":26,"tag":38,"props":1833,"children":1834},{},[1835,1840],{"type":26,"tag":285,"props":1836,"children":1837},{},[1838],{"type":31,"value":1839},"開発: VS Code + Live Server拡張機能 \u002F デプロイ: GitHub Pages",{"type":26,"tag":34,"props":1841,"children":1842},{},[1843],{"type":26,"tag":38,"props":1844,"children":1845},{},[1846,1847],{"type":31,"value":1732},{"type":26,"tag":34,"props":1848,"children":1849},{},[1850,1855],{"type":26,"tag":38,"props":1851,"children":1852},{},[1853],{"type":31,"value":1854},"開発の手軽さ: VS Codeは無料で高機能なエディタです。「Live Server」という拡張機能を追加すれば、HTMLファイルを右クリックするだけでローカルサーバーが起動し、コードの変更が即座にブラウザに反映されるため、生徒でも直感的に扱えます。",{"type":26,"tag":38,"props":1856,"children":1857},{},[1858],{"type":31,"value":1859},"デプロイの簡易性: GitHub\nPagesは、GitHubリポジトリにソースコードをアップロード（プッシュ）するだけでWebサイトとして公開できる、最も手軽なホスティングサービスの一つです。完全に無料で利用でき、バージョン管理と公開作業が一体化しているため、教育的価値も高いです。",{"type":26,"tag":38,"props":1861,"children":1862},{},[1863,1868],{"type":26,"tag":285,"props":1864,"children":1865},{},[1866],{"type":31,"value":1867},"開発: VS Code + Live Server拡張機能 \u002F デプロイ: Cloudflare Pages",{"type":26,"tag":34,"props":1869,"children":1870},{},[1871],{"type":26,"tag":38,"props":1872,"children":1873},{},[1874,1875],{"type":31,"value":1732},{"type":26,"tag":34,"props":1876,"children":1877},{},[1878,1883],{"type":26,"tag":38,"props":1879,"children":1880},{},[1881],{"type":31,"value":1882},"開発の容易さ: 開発環境は1位と同じく、最も手軽な組み合わせです。",{"type":26,"tag":38,"props":1884,"children":1885},{},[1886],{"type":31,"value":1887},"高機能なデプロイ: Cloudflare Pagesは、GitHub Pagesと同様にGitリポジトリと連携して自動でデプロイできます。それに加え、より高速な配信（CDN）、詳細なアクセス解析、共同作業者へのプレビューURL発行など、無料で使える機能が非常に豊富です。教員がデプ\nロイを管理・運用する上で、より柔軟で高度な対応が可能です。",{"type":26,"tag":38,"props":1889,"children":1890},{},[1891,1896],{"type":26,"tag":285,"props":1892,"children":1893},{},[1894],{"type":31,"value":1895},"開発: Node.js + live-server \u002F デプロイ: Vercel",{"type":26,"tag":34,"props":1897,"children":1898},{},[1899],{"type":26,"tag":38,"props":1900,"children":1901},{},[1902,1903],{"type":31,"value":1732},{"type":26,"tag":34,"props":1904,"children":1905},{},[1906,1911],{"type":26,"tag":38,"props":1907,"children":1908},{},[1909],{"type":31,"value":1910},"一歩進んだ開発体験: PCにNode.jsをインストールし、コマンドプロンプト（ターミナル）から npx live-server のようなコマンドでサーバーを起動する方法です。プログラミングのより実践的な側面に触れる良い機会になります。",{"type":26,"tag":38,"props":1912,"children":1913},{},[1914,1916,1919],{"type":31,"value":1915},"最先端のデプロイ先: Vercelは、特にReactなどのモダンなフレームワークを使ったWebアプリのホスティングに最適です。デプロイは非常に簡単かつ高速で、世界中の多くの開発者に利用されています。生徒が将来、より複雑なアプリケーション開発へ興味を持った際\nの、スムーズな移行先となります。",{"type":26,"tag":54,"props":1917,"children":1918},{},[],{"type":26,"tag":54,"props":1920,"children":1921},{},[],{"type":26,"tag":27,"props":1923,"children":1924},{},[1925],{"type":31,"value":1926},"ご自身のスキルや、生徒たちにどこまでの体験をさせたいかに合わせて、これらの選択肢を検討・試してみてはいかがでしょうか。",{"type":26,"tag":27,"props":1928,"children":1929},{},[1930,1932,1937],{"type":31,"value":1931},"　とても的確なアドバイスです。とりあえず、",{"type":26,"tag":285,"props":1933,"children":1934},{},[1935],{"type":31,"value":1936},"ローカル開発の2番",{"type":31,"value":1938},"で行くことにします。",{"type":26,"tag":27,"props":1940,"children":1941},{},[1942],{"type":31,"value":1943},"　しばらくお休みしていた「ソックサーガ」による開発を再開し、「英単語の発音チェックアプリ」をグレードアップしようとしたところで問題が発生しました。",{"type":26,"tag":54,"props":1945,"children":1946},{},[],{"type":26,"tag":90,"props":1948,"children":1950},{"id":1949},"英単語の発音チェックアプリが動かなくなった",[1951],{"type":31,"value":1952},"「英単語の発音チェック」アプリが動かなくなった！？",{"type":26,"tag":69,"props":1954,"children":1957},{"src":1955,"alt":1956,"width":472},"\u002Fimg\u002Fspeechrecognition.png","Web Speech APIによる発音チェック",[],{"type":26,"tag":179,"props":1959,"children":1961},{"className":1960},[182],[1962,1963,1972,1974,1977,1979,1982,1984],{"type":31,"value":185},{"type":26,"tag":179,"props":1964,"children":1966},{"className":1965},[189],[1967,1968,1971],{"type":31,"value":192},{"type":26,"tag":69,"props":1969,"children":1970},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":1973},"\n以前は正常に作動していた自作のWebアプリで「英単語の発音チェック」ができなくなりました。",{"type":26,"tag":54,"props":1975,"children":1976},{},[],{"type":31,"value":1978},"\n@C:\\nuxt●\\～～\\public\\jisshu\\tango.html",{"type":26,"tag":54,"props":1980,"children":1981},{},[],{"type":31,"value":1983},"\n原因を調査し、解決策を提案してください。",{"type":26,"tag":54,"props":1985,"children":1986},{},[],{"type":26,"tag":179,"props":1988,"children":1990},{"className":1989},[243],[1991,1992,2001],{"type":31,"value":185},{"type":26,"tag":179,"props":1993,"children":1995},{"className":1994},[189],[1996,1997,2000],{"type":31,"value":192},{"type":26,"tag":69,"props":1998,"children":1999},{"src":253,"alt":254,"width":197},[],{"type":31,"value":192},{"type":31,"value":2002},"\n✦ 承知いたしました。C:\\nuxt●\\～～\\jisshu\\tango.html\n  を調査し、英単語の発音チェックが機能しなくなった原因を特定し、解決策を提案します。\n",{"type":26,"tag":375,"props":2004,"children":2009},{"className":2005,"code":2007,"language":2008,"meta":8},[2006],"language-tango1.jps1","✦ ファイル tango.html の内容を確認しました。\n  このアプリはVue.jsを使用し、発音チェック機能は Web Speech API\n  を利用していると推測されます。\n  特に、xhear() という関数がその中核を担っているようです。\n\n  次に、xhear()関数が定義されていると思われる \n  C:\\nuxt●\\～～\\ssscript.js の内容を調査します。\n\n✦ ssscript.js の内容を確認しましたが、\n  xhear 関数の定義が見つかりませんでした。\n  tango.htmlから呼び出されているにもかかわらず、\n  関連ファイル内に見当たらないのは不可解です。\n\n  以前は動作していたという状況から、ssscript.js から\n  xhear 関数が誤って削除された可能性が最も高いと判断します。\n\n  そこで、Web Speech API を使用して音声認識を行う xhear 関数を\n  新たに作成し、ssscript.js のVueインスタンスの  methods \n  に追加することで、機能を復元します。\n\n  この新しい xhear 関数は、tango.html のロジックに合わせて、\n  発音が正しければ次のスライド（正解）に、\n  間違っていれば不正解のスライドに移動するように実装します。\n\n  以下の手順で C:\\nuxt●\\～～\\ssscript.js を修正します。\n","tango1.jps1",[2010],{"type":26,"tag":380,"props":2011,"children":2012},{"__ignoreMap":8},[2013],{"type":31,"value":2007},{"type":26,"tag":27,"props":2015,"children":2016},{},[2017],{"type":31,"value":2018},"　自分で確認したところ、確かにその通りだったので、修正実行を Gemini CLI にお願いしました。",{"type":26,"tag":27,"props":2020,"children":2021},{},[2022],{"type":31,"value":2023},"　ところが、どうも期待した動作をしません。結局、自力で修復しました。",{"type":26,"tag":54,"props":2025,"children":2026},{},[],{"type":26,"tag":90,"props":2028,"children":2030},{"id":2029},"aiエージェントがまちがえたわけ",[2031],{"type":31,"value":2032},"AIエージェントがまちがえたわけ",{"type":26,"tag":179,"props":2034,"children":2036},{"className":2035},[182],[2037,2038,2047,2049,2052,2054,2057,2059,2062,2064,2067,2069,2072,2074,2077,2079,2082],{"type":31,"value":185},{"type":26,"tag":179,"props":2039,"children":2041},{"className":2040},[189],[2042,2043,2046],{"type":31,"value":192},{"type":26,"tag":69,"props":2044,"children":2045},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2048},"\n……xhear 関数が誤って削除された可能性が最も高いと判断します。』",{"type":26,"tag":54,"props":2050,"children":2051},{},[],{"type":31,"value":2053},"\nというお答えでした。こちらで確認したところ、その通りでした。",{"type":26,"tag":54,"props":2055,"children":2056},{},[],{"type":31,"value":2058},"\nただ、そのあとに修正していただいた、",{"type":26,"tag":54,"props":2060,"children":2061},{},[],{"type":31,"value":2063},"\n@C:\\nuxt●\\～～\\ssscript_gemini.js",{"type":26,"tag":54,"props":2065,"children":2066},{},[],{"type":31,"value":2068},"\nは、動作しません。",{"type":26,"tag":54,"props":2070,"children":2071},{},[],{"type":31,"value":2073},"\n自力で修復した",{"type":26,"tag":54,"props":2075,"children":2076},{},[],{"type":31,"value":2078},"\n@C:\\nuxt●\\～～\\ssscript_original.js",{"type":26,"tag":54,"props":2080,"children":2081},{},[],{"type":31,"value":2083},"\nは動いたのですが、両者の違いは何だったと考えられますか。\n",{"type":26,"tag":179,"props":2085,"children":2087},{"className":2086},[243],[2088,2089,2098,2100],{"type":31,"value":185},{"type":26,"tag":179,"props":2090,"children":2092},{"className":2091},[189],[2093,2094,2097],{"type":31,"value":192},{"type":26,"tag":69,"props":2095,"children":2096},{"src":253,"alt":254,"width":197},[],{"type":31,"value":192},{"type":31,"value":2099},"\n✦ ファイルの内容を確認し、比較いたしました。ssscript_gemini.jsが動作しなかった原因をご説明します。\n",{"type":26,"tag":27,"props":2101,"children":2102},{},[2103,2105,2111],{"type":31,"value":2104},"結論から言うと、",{"type":26,"tag":380,"props":2106,"children":2108},{"className":2107},[],[2109],{"type":31,"value":2110},"xhear",{"type":31,"value":2112},"関数の引数（パラメータ）と、その後の処理の仕方に違いがありました。",{"type":26,"tag":375,"props":2114,"children":2119},{"className":2115,"code":2117,"language":2118,"meta":8},[2116],"language-ssscript.js","  1. 動作する ssscript_original.js の xhear 関数\n\n  ご自身で修復されたこちらのバージョンでは、\n  xhear関数は以下のように定義されています。\n\n   1 xhear: function(word='', go1=1, go2=2, langn=1) {\n   2   \u002F\u002F ...\n   3   \u002F\u002F ★判定後、引数で受け取った \n            go1 または go2 を使ってページを移動する\n   4   this.xgo(retval);\n   5 }\n\n  この関数は、照合する単語 word に加えて、\n  正解時の移動先 go1、不正解時の移動先 go2、言語 langn\n  を引数として受け取ります。\n  そして、音声認識の結果に応じて、xgo() 関数を呼び出して\n  指定されたページへ移動します。\n  これにより、tango.html側で柔軟に動作を制御できます。\n\n  2. 動作しなかった ssscript_gemini.js の xhear 関数\n\n  一方、私が以前作成したこちらのバージョンでは、\n  関数は以下のように定義されていました。\n\n   1 xhear: function(ans = \"\") {\n   2   \u002F\u002F ...\n   3   if (speechResult.includes(ans.toLowerCase())) {\n   4     this.evax('xgo(1)'); \u002F\u002F ★常に「1」に移動する\n   5   } else {\n   6     this.evax('xgo(2)'); \u002F\u002F ★常に「2」に移動する\n   7   }\n   8 }\n\n  この関数が受け取る引数は、照合する単語 ans のみです。\n  正解・不正解の移動先は、関数の中に xgo(1)、xgo(2)\n  と固定で書かれてしまっています。\n","ssscript.js",[2120],{"type":26,"tag":380,"props":2121,"children":2122},{"__ignoreMap":8},[2123],{"type":31,"value":2117},{"type":26,"tag":179,"props":2125,"children":2127},{"className":2126},[243],[2128,2129,2138,2146,2151,2156,2167],{"type":31,"value":185},{"type":26,"tag":179,"props":2130,"children":2132},{"className":2131},[189],[2133,2134,2137],{"type":31,"value":192},{"type":26,"tag":69,"props":2135,"children":2136},{"src":253,"alt":254,"width":197},[],{"type":31,"value":192},{"type":26,"tag":27,"props":2139,"children":2140},{},[2141],{"type":26,"tag":285,"props":2142,"children":2143},{},[2144],{"type":31,"value":2145},"なぜ動作しなかったか",{"type":26,"tag":27,"props":2147,"children":2148},{},[2149],{"type":31,"value":2150},"tango.htmlでは、xhear('apple', 5, 6)\nのように、正解なら5ページへ、不正解なら6ページへ、といった形でxhear関数を呼び出していたはずです。",{"type":26,"tag":27,"props":2152,"children":2153},{},[2154],{"type":31,"value":2155},"しかし、ssscript_gemini.jsのxhear関数は移動先の引数（5や6）を受け取る作りになっていなかったため、それらの指\n定が無視され、常に1か2へ移動しようとしてしまいました。これが、意図した通りに動作しなかった原因です。",{"type":26,"tag":27,"props":2157,"children":2158},{},[2159,2161,2164],{"type":31,"value":2160},"ご自身で修復されたssscript_original.jsは、tango.htmlからの引数を正しく受け取って処理するようになっていたため\n、正常に動作した、ということになります。",{"type":26,"tag":54,"props":2162,"children":2163},{},[],{"type":26,"tag":54,"props":2165,"children":2166},{},[],{"type":26,"tag":27,"props":2168,"children":2169},{},[2170],{"type":31,"value":2171},"私の修正が不十分で、ご不便をおかけし大変申し訳ありませんでした。",{"type":26,"tag":27,"props":2173,"children":2174},{},[2175],{"type":31,"value":2176},"、、、と、もっともらしい説明をしていますが、「じゃあ、なんで最初からそのように修正しなかったの？」と突っ込みたくなります。",{"type":26,"tag":27,"props":2178,"children":2179},{},[2180,2185],{"type":26,"tag":69,"props":2181,"children":2184},{"src":2182,"alt":2183,"width":472},"\u002Fimg\u002Faifailure.jpg","AIエージェントの失敗",[],{"type":26,"tag":54,"props":2186,"children":2187},{},[],{"type":26,"tag":27,"props":2189,"children":2190},{},[2191,2192],{"type":31,"value":976},{"type":26,"tag":285,"props":2193,"children":2194},{},[2195],{"type":31,"value":2196},"実は、Gemini CLI の説明は完全に間違っています。",{"type":26,"tag":27,"props":2198,"children":2199},{},[2200,2201,2207],{"type":31,"value":976},{"type":26,"tag":380,"props":2202,"children":2204},{"className":2203},[],[2205],{"type":31,"value":2206},"xgo()",{"type":31,"value":2208}," 関数などハダノが定義した関数への理解が足りないのがその原因です。ソックサーガは、「中学生にWebアプリを作らせるためのWebアプリ」なので、JavaScriptの命令も間接的に実行されるようにしています。",{"type":26,"tag":27,"props":2210,"children":2211},{},[2212,2213,2218],{"type":31,"value":976},{"type":26,"tag":380,"props":2214,"children":2216},{"className":2215},[],[2217],{"type":31,"value":2206},{"type":31,"value":2219}," 関数については、絶対ジャンプではなく相対ジャンプにしています。スライドの挿入・削除をしてもそのまま動くからです。",{"type":26,"tag":27,"props":2221,"children":2222},{},[2223,2225,2231,2233,2239],{"type":31,"value":2224},"　そもそもxhear関数を呼び出す側では、単語しか引数として指定していません。移動先や言語は規定値のままなわけですから、『移動先の引数（5や6）を受け取る作りになっていなかったため』というのは、理由になりません。",{"type":26,"tag":380,"props":2226,"children":2228},{"className":2227},[],[2229],{"type":31,"value":2230},"xgo(1)",{"type":31,"value":2232},"や",{"type":26,"tag":380,"props":2234,"children":2236},{"className":2235},[],[2237],{"type":31,"value":2238},"xgo(2)",{"type":31,"value":2240},"の呼び出し方を根本的に間違えていたのです。",{"type":26,"tag":54,"props":2242,"children":2243},{},[],{"type":26,"tag":27,"props":2245,"children":2246},{},[2247],{"type":31,"value":2248},"　やはり、今のAIエージェントは、一般的なプログラムはOKでも特殊なプログラムは苦手なようです。……惜しい！！",{"type":26,"tag":27,"props":2250,"children":2251},{},[2252],{"type":31,"value":2253},"　しかし、AIの助けがあれば、アプリの改造がスピードアップしそうです。",{"type":26,"tag":54,"props":2255,"children":2256},{},[],{"type":26,"tag":90,"props":2258,"children":2260},{"id":2259},"中学生に刺さる英単語ゲームに",[2261],{"type":31,"value":2259},{"type":26,"tag":179,"props":2263,"children":2265},{"className":2264},[182],[2266,2267,2276,2278,2281,2283,2286],{"type":31,"value":185},{"type":26,"tag":179,"props":2268,"children":2270},{"className":2269},[189],[2271,2272,2275],{"type":31,"value":192},{"type":26,"tag":69,"props":2273,"children":2274},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2277},"\n中学生用の英単語チェックアプリを作ろうとしています。",{"type":26,"tag":54,"props":2279,"children":2280},{},[],{"type":31,"value":2282},"\n普通の勉強だと敬遠されるのでゲーム感覚で楽しんでもらいたいのです。中学生の好きなゲームタイトルによく出てくる言葉をアプリタイトルに入れるとよいのではないかと思います。",{"type":26,"tag":54,"props":2284,"children":2285},{},[],{"type":26,"tag":27,"props":2287,"children":2288},{},[2289,2291,2300,2302],{"type":31,"value":2290},"中学生が興味を持ちそうなアプリタイトルの案を5つ、",{"type":26,"tag":2292,"props":2293,"children":2294},"em",{},[2295],{"type":26,"tag":285,"props":2296,"children":2297},{},[2298],{"type":31,"value":2299},"その確率とともに生成",{"type":31,"value":2301},"してください。",{"type":26,"tag":54,"props":2303,"children":2304},{},[],{"type":26,"tag":179,"props":2306,"children":2308},{"className":2307},[243],[2309,2310,2319,2327,2338,2351,2364,2377,2390,2403,2406],{"type":31,"value":185},{"type":26,"tag":179,"props":2311,"children":2313},{"className":2312},[189],[2314,2315,2318],{"type":31,"value":192},{"type":26,"tag":69,"props":2316,"children":2317},{"src":498,"alt":499,"width":197},[],{"type":31,"value":192},{"type":26,"tag":27,"props":2320,"children":2321},{},[2322],{"type":26,"tag":285,"props":2323,"children":2324},{},[2325],{"type":31,"value":2326},"おすすめタイトル案｛確率つき｝",{"type":26,"tag":27,"props":2328,"children":2329},{},[2330,2332,2335],{"type":31,"value":2331},"以下は、中学生に人気のゲームタイトル傾向（マインクラフト、ポケモン、スプラトゥーン、フォートナイト、どうぶつの森など）を参考にした、英単語チェックアプリのネーミング案です。｛中学生に刺さる確率｝",{"type":26,"tag":54,"props":2333,"children":2334},{},[],{"type":26,"tag":54,"props":2336,"children":2337},{},[],{"type":26,"tag":27,"props":2339,"children":2340},{},[2341,2346,2348],{"type":26,"tag":285,"props":2342,"children":2343},{},[2344],{"type":31,"value":2345},"Word Quest",{"type":31,"value":2347},"（ワードクエスト）：RPG風。「クエスト」という冒険感が人気ゲームに多く登場。｛ 85% ｝",{"type":26,"tag":54,"props":2349,"children":2350},{},[],{"type":26,"tag":27,"props":2352,"children":2353},{},[2354,2359,2361],{"type":26,"tag":285,"props":2355,"children":2356},{},[2357],{"type":31,"value":2358},"English Royale",{"type":31,"value":2360},"（イングリッシュ・ロワイヤル）：……｛ 80% ｝",{"type":26,"tag":54,"props":2362,"children":2363},{},[],{"type":26,"tag":27,"props":2365,"children":2366},{},[2367,2372,2374],{"type":26,"tag":285,"props":2368,"children":2369},{},[2370],{"type":31,"value":2371},"VocabCraft",{"type":31,"value":2373},"（ボキャブラクラフト）：……｛ 90% ｝",{"type":26,"tag":54,"props":2375,"children":2376},{},[],{"type":26,"tag":27,"props":2378,"children":2379},{},[2380,2385,2387],{"type":26,"tag":285,"props":2381,"children":2382},{},[2383],{"type":31,"value":2384},"Spellmon",{"type":31,"value":2386},"（スペルモン）：……｛ 75% ｝",{"type":26,"tag":54,"props":2388,"children":2389},{},[],{"type":26,"tag":27,"props":2391,"children":2392},{},[2393,2398,2400],{"type":26,"tag":285,"props":2394,"children":2395},{},[2396],{"type":31,"value":2397},"Word Splash",{"type":31,"value":2399},"（ワードスプラッシュ）：……｛ 70% ｝",{"type":26,"tag":54,"props":2401,"children":2402},{},[],{"type":26,"tag":319,"props":2404,"children":2405},{},[],{"type":26,"tag":27,"props":2407,"children":2408},{},[2409],{"type":31,"value":2410},"👉 興味があれば、これらのタイトルに合わせたUI演出やゲームシステムのアイデアも提案できます。見てみますか。",{"type":26,"tag":179,"props":2412,"children":2414},{"className":2413},[182],[2415,2416,2425,2427,2430,2432,2435],{"type":31,"value":185},{"type":26,"tag":179,"props":2417,"children":2419},{"className":2418},[189],[2420,2421,2424],{"type":31,"value":192},{"type":26,"tag":69,"props":2422,"children":2423},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2426},"\nありがとうございます。",{"type":26,"tag":54,"props":2428,"children":2429},{},[],{"type":31,"value":2431},"\nプレーヤーである魔法使いが、次々と現れる魔物（日本語訳）に対して呪文（英単語）を発音し、スペルが合っていれば呪いを解除して人間にもどし、報酬（得点）をゲットするというゲームがよさそうです。",{"type":26,"tag":54,"props":2433,"children":2434},{},[],{"type":26,"tag":27,"props":2436,"children":2437},{},[2438,2440,2445,2447],{"type":31,"value":2439},"spellには呪文という意味もあるので、「",{"type":26,"tag":285,"props":2441,"children":2442},{},[2443],{"type":31,"value":2444},"SPELL QUEST",{"type":31,"value":2446},"（スペルクエスト）」というタイトルにします。",{"type":26,"tag":54,"props":2448,"children":2449},{},[],{"type":26,"tag":27,"props":2451,"children":2452},{},[2453,2455,2460,2462],{"type":31,"value":2454},"　最近覚えたのが、「",{"type":26,"tag":285,"props":2456,"children":2457},{},[2458],{"type":31,"value":2459},"確率つき",{"type":31,"value":2461},"」のアイディア出しです。これは簡単なのに効果的でおすすめです。　→ ",{"type":26,"tag":42,"props":2463,"children":2466},{"href":2464,"rel":2465},"https:\u002F\u002Fnazology.kusuguru.co.jp\u002Farchives\u002F187383",[734],[2467],{"type":31,"value":2468},"🔗スタンフォード大学の研究から「その確率も教えて」でAIが覚醒すると判明",{"type":26,"tag":54,"props":2470,"children":2471},{},[],{"type":26,"tag":90,"props":2473,"children":2475},{"id":2474},"spell-quest-への改造開始",[2476],{"type":31,"value":2477},"SPELL QUEST への改造開始",{"type":26,"tag":27,"props":2479,"children":2480},{},[2481],{"type":31,"value":2482},"　何百語もの英単語＆日本語訳を読み込むとなると、HTML内に直書きして変数に代入するのは現実的ではありません。かといってバックエンドの知識が必要なデータベース構築もたいへんです。JSONファイルを読み込むのがよいでしょう。",{"type":26,"tag":179,"props":2484,"children":2486},{"className":2485},[182],[2487,2488,2497],{"type":31,"value":185},{"type":26,"tag":179,"props":2489,"children":2491},{"className":2490},[189],[2492,2493,2496],{"type":31,"value":192},{"type":26,"tag":69,"props":2494,"children":2495},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2498},"\n@C:\\nuxt●\\～～\\jisshu\\tango1.csv\nをもとにして、JavaScriptから読み込んで使うためのJSONファイルを作り、同じフォルダに保存してください。\n",{"type":26,"tag":27,"props":2500,"children":2501},{},[2502],{"type":26,"tag":380,"props":2503,"children":2505},{"className":2504},[],[2506],{"type":31,"value":2507},"[   {     \"en\": \"always\",     \"ja\": \"いつも\"   },   {     \"en\": \"breakfast\",     \"ja\": \"朝食\"   },       ：：：：：   {     \"en\": \"junior\",     \"ja\": \"年下の、下級の\"   } ]",{"type":26,"tag":27,"props":2509,"children":2510},{},[2511],{"type":31,"value":2512},"というJSONファイルが作られていましたが、ちょっと冗長で使いづらそうです。",{"type":26,"tag":27,"props":2514,"children":2515},{},[2516],{"type":31,"value":2517},"　やはり、ゴールから逆算してリクエストすべきでした。",{"type":26,"tag":179,"props":2519,"children":2521},{"className":2520},[182],[2522,2523,2532,2534,2537,2539,2542,2544,2547,2549,2552,2555],{"type":31,"value":185},{"type":26,"tag":179,"props":2524,"children":2526},{"className":2525},[189],[2527,2528,2531],{"type":31,"value":192},{"type":26,"tag":69,"props":2529,"children":2530},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2533},"\nfetch()でJSONを読み込んだあと、Object.entries()で\n[['always','いつも'],['breakfast','朝食'],…,['junior','年下の、下級の']]",{"type":26,"tag":54,"props":2535,"children":2536},{},[],{"type":31,"value":2538},"\nという二次元配列に変換して使う予定です。",{"type":26,"tag":54,"props":2540,"children":2541},{},[],{"type":31,"value":2543},"\nこのような処理をやりやすくするためのJSONファイルを作り、同じフォルダに保存してください。",{"type":26,"tag":54,"props":2545,"children":2546},{},[],{"type":31,"value":2548},"\nちなみに、英単語は同じものは二度と出てこないので、オブジェクトのキーに使えます。",{"type":26,"tag":54,"props":2550,"children":2551},{},[],{"type":26,"tag":54,"props":2553,"children":2554},{},[],{"type":31,"value":2556},"\nまた、このような処理をするためのJavaScriptコードのサンプルを示してください。\n",{"type":26,"tag":179,"props":2558,"children":2560},{"className":2559},[243],[2561,2562,2571,2573],{"type":31,"value":185},{"type":26,"tag":179,"props":2563,"children":2565},{"className":2564},[189],[2566,2567,2570],{"type":31,"value":192},{"type":26,"tag":69,"props":2568,"children":2569},{"src":253,"alt":254,"width":197},[],{"type":31,"value":192},{"type":31,"value":2572},"\n✦ 承知いたしました。ご要望の形式のJSONファイルを作成し、それを利用するJavaScriptのサンプルコードを提示します。\n",{"type":26,"tag":27,"props":2574,"children":2575},{},[2576,2578,2581,2583,2586],{"type":31,"value":2577},"英単語をキー、日本語訳を値とするオブジェクト形式のJSONファイルを作成し、",{"type":26,"tag":54,"props":2579,"children":2580},{},[],{"type":31,"value":2582},"\nC:\\nuxt●\\～～\\jisshu\\tango1.jsonとして保存します。",{"type":26,"tag":54,"props":2584,"children":2585},{},[],{"type":31,"value":2587},"\nこれにより、Object.entries() を使って効率的に二次元配列へ変換できます。",{"type":26,"tag":375,"props":2589,"children":2594},{"className":2590,"code":2592,"language":2593,"meta":8},[2591],"language-json.ps1","まず、JSONファイルを上書き保存します。\n│     1 {  \n│     2   \"always\": \"いつも\",  \n│     3   \"breakfast\": \"朝食\", \n            ：：：：：\n│    11   \"junior\": \"年下の、下級の\" \n│    12 } \n✦ 新しい形式で tango1.json を保存しました。\n\n  次に、このJSONファイルを読み込んで二次元配列に変換する\n  JavaScriptコードのサンプルを示します。\n\n  1 async function loadAndConvertWords() {\n  2   try {\n  3     \u002F\u002F 1. JSONファイルをfetchで読み込む\n  4     const response = await fetch('tango1.json');\n  5     if (!response.ok) {\n  6       throw new Error(`HTTP error! \n                          status: ${response.status}`);\n  7     }\n  8     const wordObject = await response.json();\n  9\n  10     \u002F\u002F 2. Object.entries()で二次元配列に変換\n  11     const wordPairs = Object.entries(wordObject);\n  12\n  13     \u002F\u002F 3. 結果をコンソールに出力して確認\n  14     console.log(wordPairs);\n  15\n  16     \u002F*\n  17     コンソールへの出力結果：\n  18     [\n  19       [\"always\", \"いつも\"],\n  20       [\"breakfast\", \"朝食\"],\n              ：：：：：\n  28       [\"junior\", \"年下の、下級の\"]\n  29     ]\n  30     *\u002F\n  31\n  32   } catch (error) {\n  33     console.error('データの読み込みまたは\n                          変換に失敗しました:', error);\n  34   }\n  35 }\n  36\n  37 \u002F\u002F 関数を実行\n  38 loadAndConvertWords();\n","json.ps1",[2595],{"type":26,"tag":380,"props":2596,"children":2597},{"__ignoreMap":8},[2598],{"type":31,"value":2592},{"type":26,"tag":27,"props":2600,"children":2601},{},[2602,2604,2610],{"type":31,"value":2603},"これをほとんどそのまま採用し、",{"type":26,"tag":380,"props":2605,"children":2607},{"className":2606},[],[2608],{"type":31,"value":2609},"xjson()",{"type":31,"value":2611}," 関数として組み込んだところ、期待通りに動きました。……感動！！",{"type":26,"tag":27,"props":2613,"children":2614},{},[2615,2617,2623],{"type":31,"value":2616},"　これで、英単語データをCSV形式で作れば、あとの作業（",{"type":26,"tag":380,"props":2618,"children":2620},{"className":2619},[],[2621],{"type":31,"value":2622},"CSV → JSON → 二次元配列",{"type":31,"value":2624},"）はAIに任せられます。",{"type":26,"tag":54,"props":2626,"children":2627},{},[],{"type":26,"tag":90,"props":2629,"children":2631},{"id":2630},"英単語データの作成もaiエージェントで",[2632],{"type":31,"value":2633},"英単語データの作成もAIエージェントで",{"type":26,"tag":27,"props":2635,"children":2636},{},[2637],{"type":31,"value":2638},"　そうなると、英単語データもAIで作れないかと考えてしまいます。",{"type":26,"tag":179,"props":2640,"children":2642},{"className":2641},[182],[2643,2644,2653,2655,2658,2660,2663,2665],{"type":31,"value":185},{"type":26,"tag":179,"props":2645,"children":2647},{"className":2646},[189],[2648,2649,2652],{"type":31,"value":192},{"type":26,"tag":69,"props":2650,"children":2651},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2654},"\n高校入試に挑戦する中学生がマスターすべき英単語を",{"type":26,"tag":54,"props":2656,"children":2657},{},[],{"type":31,"value":2659},"\ntango1.csv\nと同じ形式で作成してください。",{"type":26,"tag":54,"props":2661,"children":2662},{},[],{"type":31,"value":2664},"\nただし、以下のものは除外してください。\n",{"type":26,"tag":34,"props":2666,"children":2667},{},[2668,2673,2678],{"type":26,"tag":38,"props":2669,"children":2670},{},[2671],{"type":31,"value":2672},"冠詞、代名詞",{"type":26,"tag":38,"props":2674,"children":2675},{},[2676],{"type":31,"value":2677},"外来語として定着しているもの、固有名詞",{"type":26,"tag":38,"props":2679,"children":2680},{},[2681],{"type":31,"value":2682},"略語、スペースやハイフンが入ったもの（熟語）",{"type":26,"tag":27,"props":2684,"children":2685},{},[2686],{"type":31,"value":2687},"　指示が雑すぎたのか、動詞と形容詞だけで50語作ってくれました。初級・中級・上級のクエストに使えるように指示を追加します。",{"type":26,"tag":179,"props":2689,"children":2691},{"className":2690},[182],[2692,2693,2702,2704,2707,2709,2712,2714,2717],{"type":31,"value":185},{"type":26,"tag":179,"props":2694,"children":2696},{"className":2695},[189],[2697,2698,2701],{"type":31,"value":192},{"type":26,"tag":69,"props":2699,"children":2700},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2703},"\n同じような感じで日本の中学生がマスターすべき英単語を",{"type":26,"tag":54,"props":2705,"children":2706},{},[],{"type":31,"value":2708},"\n初級：words1.csv、中級：words2.csv、上級：words3.csv",{"type":26,"tag":54,"props":2710,"children":2711},{},[],{"type":31,"value":2713},"\nそれぞれ100語ずつ重なりなく作成してください。",{"type":26,"tag":54,"props":2715,"children":2716},{},[],{"type":31,"value":2718},"\n品詞については、動詞と形容詞だけでなく、固有名詞以外の名詞、副詞も含めてお願いします。\n",{"type":26,"tag":27,"props":2720,"children":2721},{},[2722],{"type":31,"value":2723},"　「100語ずつ」も勝手に「100語以上」と解釈したのか、級が上がるにつれ雪だるま式に増えています。",{"type":26,"tag":27,"props":2725,"children":2726},{},[2727],{"type":31,"value":2728},"　プロンプトをいじっても限界があると感じたので、作られたCSVファイルに対して操作を加えてもらうことにします。",{"type":26,"tag":179,"props":2730,"children":2732},{"className":2731},[182],[2733,2734,2743,2745,2748,2750,2753,2755,2758,2760,2763],{"type":31,"value":185},{"type":26,"tag":179,"props":2735,"children":2737},{"className":2736},[189],[2738,2739,2742],{"type":31,"value":192},{"type":26,"tag":69,"props":2740,"children":2741},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2744},"\nリストアップをありがとうございました。",{"type":26,"tag":54,"props":2746,"children":2747},{},[],{"type":31,"value":2749},"\n上級：words3.csv",{"type":26,"tag":54,"props":2751,"children":2752},{},[],{"type":31,"value":2754},"\nに、初級と中級のものが重なって含まれているので、それらを削除して真に「上級」のリストにし",{"type":26,"tag":54,"props":2756,"children":2757},{},[],{"type":31,"value":2759},"\n@C:\\nuxt●\\～～\\jisshu\\words3.csv",{"type":26,"tag":54,"props":2761,"children":2762},{},[],{"type":31,"value":2764},"\nに上書き保存してください。\n",{"type":26,"tag":27,"props":2766,"children":2767},{},[2768],{"type":31,"value":2769},"、、、どうするのか見ていたら、その場で文字列操作用のPythonプログラムを組んで実行していました。一応、できたようです。",{"type":26,"tag":54,"props":2771,"children":2772},{},[],{"type":26,"tag":90,"props":2774,"children":2776},{"id":2775},"英単語問題作りはけっこうたいへん",[2777],{"type":31,"value":2775},{"type":26,"tag":27,"props":2779,"children":2780},{},[2781],{"type":31,"value":2782},"　英単語と日本語訳が一対一対応していれば簡単なのですが、「多義語」「同義語」「同音異義語」の関係で非常にややこしくなっています。",{"type":26,"tag":27,"props":2784,"children":2785},{},[2786],{"type":31,"value":2787},"　特に、英語は同じ言葉の繰り返しを嫌い、言い換えのための「同義語」をたくさん持っているようです。",{"type":26,"tag":27,"props":2789,"children":2790},{},[2791,2793],{"type":31,"value":2792},"　また、バイ（by,bye,buy）のような「同音異義語」を音声認識させると、特定の一つしか認識されない（この場合はbye）ためゲームが成立しなくなります。　→ ",{"type":26,"tag":42,"props":2794,"children":2797},{"href":2795,"rel":2796},"https:\u002F\u002Fchugakueigo.itgakko.com\u002Fmatome\u002Fdouonigigo.html",[734],[2798],{"type":31,"value":2799},"🔗高校入試対策で覚えておきたい中学英語の同音異義語",{"type":26,"tag":27,"props":2801,"children":2802},{},[2803],{"type":31,"value":2804},"　文脈に依存せず、日本語訳を見て一つの英単語が思い浮かび、発音が認識される、、、そんな「英単語＆日本語訳（複数可）」のペアにしぼりたいものです。",{"type":26,"tag":27,"props":2806,"children":2807},{},[2808],{"type":31,"value":2809},"　もうこうなると今のAIには荷が重いので、手作業となります。CSVファイルはエクセルで読み書きできるので、ソート（並べ替え）を駆使し、Google翻訳で確認しながら、なんとか100語ずつにしぼり込みました。",{"type":26,"tag":179,"props":2811,"children":2813},{"className":2812},[182],[2814,2815,2824,2826,2829,2831,2834,2836,2839],{"type":31,"value":185},{"type":26,"tag":179,"props":2816,"children":2818},{"className":2817},[189],[2819,2820,2823],{"type":31,"value":192},{"type":26,"tag":69,"props":2821,"children":2822},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":31,"value":2825},"\nwords1.csv、words2.csv、words3.csvから100語ずつ抜粋して計300語のwordsq.csvを作りました。",{"type":26,"tag":54,"props":2827,"children":2828},{},[],{"type":31,"value":2830},"\nこれをもとにtango1.jsonと同じ形式のJSONファイルを作成し、",{"type":26,"tag":54,"props":2832,"children":2833},{},[],{"type":31,"value":2835},"\n@C:\\nuxt●\\～～\\jisshu\\wordsq.json",{"type":26,"tag":54,"props":2837,"children":2838},{},[],{"type":31,"value":2840},"\nとして保存してください。\n",{"type":26,"tag":27,"props":2842,"children":2843},{},[2844,2846,2852],{"type":31,"value":2845},"　クエストの級を選択したら、100語の中からランダムに10語を選び、アルファベット順に並べて出題する関数を ",{"type":26,"tag":380,"props":2847,"children":2849},{"className":2848},[],[2850],{"type":31,"value":2851},"xquest()",{"type":31,"value":2853}," として追加しました。",{"type":26,"tag":27,"props":2855,"children":2856},{},[2857,2859,2865],{"type":31,"value":2858},"　また、",{"type":26,"tag":380,"props":2860,"children":2862},{"className":2861},[],[2863],{"type":31,"value":2864},"xhear()",{"type":31,"value":2866}," 関数にも次のような改良を加えました。",{"type":26,"tag":34,"props":2868,"children":2869},{},[2870,2883],{"type":26,"tag":38,"props":2871,"children":2872},{},[2873,2875,2881],{"type":31,"value":2874},"発音した通りに認識されなかったら",{"type":26,"tag":380,"props":2876,"children":2878},{"className":2877},[],[2879],{"type":31,"value":2880},"[キャンセル]",{"type":31,"value":2882},"し、すぐに発音をやり直す。",{"type":26,"tag":38,"props":2884,"children":2885},{},[2886],{"type":31,"value":2887},"スペルが正しくないときの判定結果に、「どれくらい惜しいか」という類似度（%）を表示。",{"type":26,"tag":27,"props":2889,"children":2890},{},[2891],{"type":31,"value":2892},"　アルファベット順であることと類似度をヒントに「同義語」「類義語」の中から正解にたどりつきやすくなるでしょう。",{"type":26,"tag":27,"props":2894,"children":2895},{},[2896,2898,2904,2906],{"type":31,"value":2897},"　ちなみに、　類似度の計算手法は何種類もあり、自分で（AIで）JavaScriptで組んでもよかったのですが、公開されているライブラリ ",{"type":26,"tag":380,"props":2899,"children":2901},{"className":2900},[],[2902],{"type":31,"value":2903},"string-similarity",{"type":31,"value":2905}," を使うことにしました。 　→ ",{"type":26,"tag":42,"props":2907,"children":2910},{"href":2908,"rel":2909},"https:\u002F\u002Fqiita.com\u002Fkenny-m\u002Fitems\u002F7131669cd5f6f757dffc",[734],[2911],{"type":31,"value":2912},"🔗【JavaScript】文字列検索の手法",{"type":26,"tag":27,"props":2914,"children":2915},{},[2916,2918],{"type":31,"value":2917},"　プログラミングを料理に例えると、「めんつゆ」「顆粒だし」を使ったら手抜き料理になるからすべて手作りで……と考えるようなもので、現実的ではありません。　→ ",{"type":26,"tag":42,"props":2919,"children":2922},{"href":2920,"rel":2921},"https:\u002F\u002Fmagmix.jp\u002Fpost\u002F325864",[734],[2923],{"type":31,"value":2924},"🔗リアルで「じゃあ、あんたが作ってみろよ」と思った瞬間は？",{"type":26,"tag":69,"props":2926,"children":2930},{"src":2927,"alt":2928,"className":2929},"\u002Fimg\u002Fjatsuku.jpg","じゃあ、あんたが作ってみろよ",[802],[],{"type":26,"tag":54,"props":2932,"children":2933},{},[],{"type":26,"tag":90,"props":2935,"children":2937},{"id":2936},"ゲームっぽいデザインに",[2938],{"type":31,"value":2936},{"type":26,"tag":27,"props":2940,"children":2941},{},[2942],{"type":31,"value":2943},"　ゲームの雰囲気を盛り上げるといえば、美しいグラフィックスやサウンドです。学習用の場合、グラフィックスは低刺激に、サウンドはオフにする必要があります。",{"type":26,"tag":27,"props":2945,"children":2946},{},[2947,2948,2954,2956,2963],{"type":31,"value":976},{"type":26,"tag":42,"props":2949,"children":2951},{"href":2950},"\u002Farticles\u002Ftechnolojiya-10#mapcustom",[2952],{"type":31,"value":2953},"🔗(万博)つじさんマップを自分用にカスタマイズ",{"type":31,"value":2955}," で味をしめた",{"type":26,"tag":42,"props":2957,"children":2960},{"href":2958,"rel":2959},"https:\u002F\u002Flets-emoji.com\u002F",[734],[2961],{"type":31,"value":2962},"🔗絵文字",{"type":31,"value":2964}," を活用することにしました。",{"type":26,"tag":179,"props":2966,"children":2968},{"className":2967},[182],[2969,2970,2979],{"type":31,"value":185},{"type":26,"tag":179,"props":2971,"children":2973},{"className":2972},[189],[2974,2975,2978],{"type":31,"value":192},{"type":26,"tag":69,"props":2976,"children":2977},{"src":195,"alt":196,"width":197},[],{"type":31,"value":192},{"type":26,"tag":27,"props":2980,"children":2981},{},[2982,2984,2988,2990],{"type":31,"value":2983},"「",{"type":26,"tag":285,"props":2985,"children":2986},{},[2987],{"type":31,"value":2444},{"type":31,"value":2989},"（スペルクエスト）」に使えそうな絵文字を探しています。次のもののほかによさそうなもの（魔物・人間・魔法・報酬）があれば、教えてください……",{"type":26,"tag":54,"props":2991,"children":2992},{},[],{"type":26,"tag":27,"props":2994,"children":2995},{},[2996],{"type":31,"value":2997},"　報酬は、銅🥉・銀🥈・金🥇のメダルとし、",{"type":26,"tag":27,"props":2999,"children":3000},{},[3001,3003,3009],{"type":31,"value":3002},"魔物 → 人間 の変化は、",{"type":26,"tag":380,"props":3004,"children":3006},{"className":3005},[],[3007],{"type":31,"value":3008},"xkk=[['🐛','👶'],['🪰','👦'],['🕷️','👧'],……",{"type":31,"value":3010},"　という二次元配列としてクエスト分そろえました。画像ファイルでやるよりはるかに楽です。",{"type":26,"tag":27,"props":3012,"children":3013},{},[3014],{"type":31,"value":3015},"　オープニング画面も絵文字を並べて作りましたが、言いたいことは伝えられそうです。",{"type":26,"tag":27,"props":3017,"children":3018},{},[3019],{"type":31,"value":3020},"　あとは、「動き」がほしいところです。",{"type":26,"tag":27,"props":3022,"children":3023},{},[3024],{"type":31,"value":3025},"　アニメGIF でもよいのですが、調整のしやすさを考えて、",{"type":26,"tag":34,"props":3027,"children":3028},{},[3029,3048],{"type":26,"tag":38,"props":3030,"children":3031},{},[3032,3038,3040,3046],{"type":26,"tag":380,"props":3033,"children":3035},{"className":3034},[],[3036],{"type":31,"value":3037},"anime.js",{"type":31,"value":3039}," を呼び出す ",{"type":26,"tag":380,"props":3041,"children":3043},{"className":3042},[],[3044],{"type":31,"value":3045},"xanim(obj,ループ回数)",{"type":31,"value":3047}," 関数",{"type":26,"tag":38,"props":3049,"children":3050},{},[3051],{"type":31,"value":3052},"SVGアニメーション（SMIL）",{"type":26,"tag":27,"props":3054,"children":3055},{},[3056],{"type":31,"value":3057},"の二つを使いました。",{"type":26,"tag":27,"props":3059,"children":3060},{},[3061,3062,3067,3069,3075],{"type":31,"value":976},{"type":26,"tag":380,"props":3063,"children":3065},{"className":3064},[],[3066],{"type":31,"value":3037},{"type":31,"value":3068}," の ",{"type":26,"tag":380,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":31,"value":3074},"loop",{"type":31,"value":3076}," がうまく機能しないので、ループ回数を受け取るようにしました。",{"type":26,"tag":27,"props":3078,"children":3079},{},[3080],{"type":31,"value":3081},"　SVGは、HTML内に埋め込めるので便利です。中学生曰く、「魔法が放射されている」と見えるようです。",{"type":26,"tag":3083,"props":3084,"children":3088},"svg",{"xmlns":3085,"viewBox":3086,"preserveAspectRatio":3087},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","-11 0 90 7","none",[3089],{"type":26,"tag":3090,"props":3091,"children":3095},"path",{"fill":3092,"id":3093,"d":3094},"#ffff00","wave1","M100,10H0V9C49.83,9,50,2,100,2v8Z",[3096],{"type":26,"tag":3097,"props":3098,"children":3104},"animate",{"attributeType":3099,"attributeName":3100,"dur":3101,"repeatCount":3102,"values":3103},"XML","d","1s","indefinite","\n M100,10H0V9C49.83,9,50,2,100,2v8Z;\n M100,10H0V5.5C50,10,50,10,100,5.5V10Z;\n M100,10H0V2C49.83,2,50,9,100,9v1Z;\n M100,10H0V5.58C50.08,0,50.08,0,100,5.5V10Z;\n M100,10H0V9C49.83,9,50,2,100,2v8Z\n ",[],{"type":26,"tag":27,"props":3106,"children":3107},{},[3108,3110,3115,3117],{"type":31,"value":3109},"　ちなみに、プログラムというのは書いて終わりではありません。「推敲・校正」にあたる ",{"type":26,"tag":285,"props":3111,"children":3112},{},[3113],{"type":31,"value":3114},"デバッグ",{"type":31,"value":3116}," が延々と続くのです。",{"type":26,"tag":54,"props":3118,"children":3120},{"id":3119},"spellquest",[],{"type":26,"tag":34,"props":3122,"children":3123},{},[3124],{"type":26,"tag":38,"props":3125,"children":3126},{},[3127],{"type":26,"tag":42,"props":3128,"children":3131},{"href":3129,"rel":3130},"https:\u002F\u002Fics.media\u002Fentry\u002F190517\u002F",[734],[3132],{"type":31,"value":3133},"🔗ChromeのデベロッパーツールでJavaScriptをデバッグする方法",{"type":26,"tag":27,"props":3135,"children":3136},{},[3137],{"type":31,"value":3138},"にいつも助けられています。",{"type":26,"tag":27,"props":3140,"children":3141},{},[3142,3147],{"type":26,"tag":69,"props":3143,"children":3146},{"src":3144,"alt":3145,"width":472},"\u002Fimg\u002Fspellquestdev1.jpg","スペルクエスト開発中",[],{"type":26,"tag":54,"props":3148,"children":3149},{},[],{"type":26,"tag":54,"props":3151,"children":3152},{},[],{"type":26,"tag":90,"props":3154,"children":3156},{"id":3155},"まとめaiエージェントでちょっとだけハッカーになれアプリを改造できた",[3157],{"type":31,"value":3158},"（まとめ）AIエージェントで「ちょっとだけハッカー」になれ、アプリを改造できた",{"type":26,"tag":34,"props":3160,"children":3161},{},[3162],{"type":26,"tag":38,"props":3163,"children":3164},{},[3165,3167],{"type":31,"value":3166},"→ ",{"type":26,"tag":42,"props":3168,"children":3171},{"href":3169,"rel":3170},"https:\u002F\u002Fkyodx.com\u002Fjisshu\u002Fspellquest.html",[734],[3172,3174,3178],{"type":31,"value":3173},"🔗「英単語ゲーム ",{"type":26,"tag":285,"props":3175,"children":3176},{},[3177],{"type":31,"value":2444},{"type":31,"value":3179},"」",{"type":26,"tag":69,"props":3181,"children":3184},{"src":3182,"alt":3183,"width":472},"\u002Fimg\u002Fspellquest3.jpg","スペルクエストプレイ中",[],{"type":26,"tag":27,"props":3186,"children":3187},{},[3188,3190,3196,3198,3204,3206,3212],{"type":31,"value":3189},"※ 内蔵マイクだと音声認識が弱いときは、",{"type":26,"tag":42,"props":3191,"children":3193},{"href":3192},"#dungzduz",[3194],{"type":31,"value":3195},"🔗小型USBマイク",{"type":31,"value":3197}," ← ",{"type":26,"tag":42,"props":3199,"children":3201},{"href":3200},"#usbcadapter",[3202],{"type":31,"value":3203},"🔗USB-Cアダプター",{"type":31,"value":3205},"　← ",{"type":26,"tag":42,"props":3207,"children":3209},{"href":3208},"#lpoiejun",[3210],{"type":31,"value":3211},"🔗USB-C延長ケーブル",{"type":31,"value":3213}," ← タブレット のように接続",{"type":26,"tag":54,"props":3215,"children":3216},{},[],{"type":26,"tag":27,"props":3218,"children":3219},{},[3220,3222],{"type":31,"value":3221},"　「英単語の学習」については、さまざまな意見があるようです。　→ ",{"type":26,"tag":42,"props":3223,"children":3226},{"href":3224,"rel":3225},"https:\u002F\u002Fwww.asahi.com\u002Farticles\u002FASTC74J0JTC7OXIE002M.html#:~:text=%E5%8D%98%E8%AA%9E%E5%AD%A6%E7%BF%92%E3%82%92%E5%85%88%E8%A1%8C%E3%81%97%E3%81%9F,%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E3%80%82",[734],[3227],{"type":31,"value":3228},"🔗単語か会話か、英語学習どっちから？　富山大教授ら「効果に違い」",{"type":26,"tag":27,"props":3230,"children":3231},{},[3232],{"type":31,"value":3233},"　「このアプリはやさしすぎる」と思われる方も多いでしょう。しかし、ハダノが中学生と接してきた経験からすると、英語が苦手な生徒は高校受験直前であっても「初級クエスト」さえクリアできません。",{"type":26,"tag":27,"props":3235,"children":3236},{},[3237,3238,3245],{"type":31,"value":976},{"type":26,"tag":42,"props":3239,"children":3242},{"href":3240,"rel":3241},"https:\u002F\u002Fwww.uta-net.com\u002Fsong\u002F231967\u002F",[734],[3243],{"type":31,"value":3244},"🔗セカオワのRAIN",{"type":31,"value":3246}," は歌えるのに、「雨」の英単語が出てきません。「雨の日に着るのは、何コートかな？」と聞いてやっと出てきます。",{"type":26,"tag":27,"props":3248,"children":3249},{},[3250,3251,3258],{"type":31,"value":976},{"type":26,"tag":42,"props":3252,"children":3255},{"href":3253,"rel":3254},"https:\u002F\u002Fwww.uta-net.com\u002Fsong\u002F9951\u002F",[734],[3256],{"type":31,"value":3257},"🔗めざせポケモンマスター",{"type":31,"value":3259}," は歌えるのに、「町」の英単語が出てきません。「シティじゃない方だよ」と言ってもなかなか出ません。",{"type":26,"tag":27,"props":3261,"children":3262},{},[3263],{"type":31,"value":3264},"　生活の中に英語が浸透し、アニメやゲームの中でもたくさん使われているのに、まったく結びついていない生徒がいるのが実態です。「詰め込み教育はよくない」などという前に基礎基本について再考すべきかと思います。",{"type":26,"tag":69,"props":3266,"children":3270},{"src":3267,"alt":3268,"className":3269},"\u002Fimg\u002Ftangojhs.jpg","アニメやゲームなどでたくさんの英単語に囲まれている中学生たち",[74],[],{"type":26,"tag":27,"props":3272,"children":3273},{},[3274,3276],{"type":31,"value":3275},"　ハダノ自身は、小学校高学年のときにローマ字習得に苦労しました。当時の教科書が、「文の中で理解させる」方法をとっていたためです。あるとき、五十音表を目にして法則に気づいたら、簡単に読み書きできるようになりました。高校時代も英単語を語源に分解して覚えるようにしたら、たくさん覚えられました。　→ ",{"type":26,"tag":42,"props":3277,"children":3280},{"href":3278,"rel":3279},"https:\u002F\u002Fisseisuzuki.org\u002Fprejudice\u002F",[734],[3281],{"type":31,"value":3282},"🔗prejudiceの意味をわかりやすく説明　一夜漬け英単語記憶術　語源",{"type":26,"tag":27,"props":3284,"children":3285},{},[3286],{"type":31,"value":3287},"　学習者のレベルや学び方に対応した教育でありたいものです。そういう意味では、学習アプリの手作りも有効な手段と言えるでしょう。",{"type":26,"tag":54,"props":3289,"children":3290},{},[],{"type":26,"tag":27,"props":3292,"children":3293},{},[3294],{"type":31,"value":3295},"　「AIエージェントを使ったプログラミング」についても、さまざまな意見があります。",{"type":26,"tag":34,"props":3297,"children":3298},{},[3299,3309,3319],{"type":26,"tag":38,"props":3300,"children":3301},{},[3302],{"type":26,"tag":42,"props":3303,"children":3306},{"href":3304,"rel":3305},"https:\u002F\u002Fqiita.com\u002FmonsoonTropicalBird\u002Fitems\u002F1d5a6257808ff7871bf0",[734],[3307],{"type":31,"value":3308},"🔗AIがプログラマを滅ぼすというのは、幻想やったかもしれん",{"type":26,"tag":38,"props":3310,"children":3311},{},[3312],{"type":26,"tag":42,"props":3313,"children":3316},{"href":3314,"rel":3315},"https:\u002F\u002Fzenn.dev\u002Fsatto_workspace\u002Farticles\u002Fa12faf6131ac4e",[734],[3317],{"type":31,"value":3318},"🔗わいの生成AIがカスコードばっか出してくるんやが",{"type":26,"tag":38,"props":3320,"children":3321},{},[3322,3329],{"type":26,"tag":42,"props":3323,"children":3326},{"href":3324,"rel":3325},"https:\u002F\u002Fatmarkit.itmedia.co.jp\u002Fait\u002Farticles\u002F2510\u002F20\u002Fnews030.html",[734],[3327],{"type":31,"value":3328},"🔗世界の開発者に聞いた「AIに任せられるタスク、任せられないタスク」",{"type":31,"value":3330},"\n、、、要するに、「AIに丸投げはダメ」ということです。",{"type":26,"tag":27,"props":3332,"children":3333},{},[3334,3336,3343],{"type":31,"value":3335},"　さしずめ、Eカプセル を飲んで、",{"type":26,"tag":42,"props":3337,"children":3340},{"href":3338,"rel":3339},"https:\u002F\u002Fwww.tv-asahi.co.jp\u002Fchottodake_esper\u002F",[734],[3341],{"type":31,"value":3342},"🔗「ちょっとだけエスパー」",{"type":31,"value":3344}," になれるようなものです。",{"type":26,"tag":69,"props":3346,"children":3351},{"src":3347,"alt":3348,"className":3349},"\u002Fimg\u002Fbitesper.jpg","ちょっとだけエスパー",[3350],"imghl",[],{"type":26,"tag":27,"props":3353,"children":3354},{},[3355],{"type":31,"value":3356},"　AIエージェント を使って、「ちょっとだけハッカー」になれますが、学習は欠かせません。AIが進化してゆき、",{"type":26,"tag":34,"props":3358,"children":3359},{},[3360],{"type":26,"tag":38,"props":3361,"children":3362},{},[3363],{"type":26,"tag":42,"props":3364,"children":3367},{"href":3365,"rel":3366},"https:\u002F\u002Fnote.com\u002Fihayato\u002Fn\u002Fn7e3cb271f96c",[734],[3368],{"type":31,"value":3369},"🔗【業務命令】今すぐ「Antigravity」をインストールして、バイブコーディングを始めよ！",{"type":26,"tag":27,"props":3371,"children":3372},{},[3373],{"type":31,"value":3374},"　という風に開発スタイルは変わっていくでしょうが、プログラミング知識が完全に不要になることはないでしょう。",{"type":26,"tag":27,"props":3376,"children":3377},{},[3378,3380,3385,3387,3393,3395,3401,3403],{"type":31,"value":3379},"　そもそも、今回の ",{"type":26,"tag":380,"props":3381,"children":3383},{"className":3382},[],[3384],{"type":31,"value":2609},{"type":31,"value":3386}," 関数の『",{"type":26,"tag":380,"props":3388,"children":3390},{"className":3389},[],[3391],{"type":31,"value":3392},"fetch()",{"type":31,"value":3394},"でJSONを読み込んだあと、",{"type":26,"tag":380,"props":3396,"children":3398},{"className":3397},[],[3399],{"type":31,"value":3400},"Object.entries()",{"type":31,"value":3402},"で二次元配列に変換してください』などは、書籍で学んだからこそ出せた指示なのです。　→ ",{"type":26,"tag":42,"props":3404,"children":3406},{"href":3405},"\u002Farticles\u002Fsocsaga-1#js278",[3407],{"type":31,"value":3408},"🔗JavaScriptコードレシピ集 スグに使えるテクニック278",{"type":26,"tag":69,"props":3410,"children":3412},{"src":799,"alt":800,"className":3411},[802],[],{"type":26,"tag":54,"props":3414,"children":3415},{},[],{"type":26,"tag":27,"props":3417,"children":3418},{},[3419],{"type":31,"value":3420},"　また、今回の件で「分断」についても考えさせられました。",{"type":26,"tag":34,"props":3422,"children":3423},{},[3424],{"type":26,"tag":38,"props":3425,"children":3426},{},[3427],{"type":26,"tag":42,"props":3428,"children":3431},{"href":3429,"rel":3430},"https:\u002F\u002Fplay.rakuten.co.jp\u002Farticle\u002F1300",[734],[3432],{"type":31,"value":3433},"🔗話題作「じゃあ、あんたが作ってみろよ」から得た気づき",{"type":26,"tag":27,"props":3435,"children":3436},{},[3437],{"type":31,"value":3438},"で述べられているように、何かを生み出す「作り手」の苦悩と、それを安易に批判する「受け手」の無責任さ……これは、さまざまな分野で見られます。",{"type":26,"tag":27,"props":3440,"children":3441},{},[3442],{"type":31,"value":3443},"　総じて日本では、「現場で手を動かす人」が軽んじられているように感じます。",{"type":26,"tag":34,"props":3445,"children":3446},{},[3447],{"type":26,"tag":38,"props":3448,"children":3449},{},[3450],{"type":26,"tag":42,"props":3451,"children":3454},{"href":3452,"rel":3453},"https:\u002F\u002Fwww.karasawanouki.co.jp\u002Fblog\u002Fkk20251105\u002F",[734],[3455],{"type":31,"value":3456},"🔗アメリカ、ブルーカラービリオネアの時代に。日本企業も大卒者よりも工業高校卒に熱い視線！AI時代に選ぶべき職業とは？",{"type":26,"tag":27,"props":3458,"children":3459},{},[3460],{"type":31,"value":3461},"を読むと、なるほどと思います。しかし、日本独特の雇用スタイル（新卒一括採用・年功序列・配置転換・終身雇用・退職金）が変わらなければ、専門的スキル人材は非正規・下請けで低待遇のままでしょう。熊対策一つ見ても、長期的視点での人材育成ができていないのが日本です。",{"type":26,"tag":27,"props":3463,"children":3464},{},[3465,3467],{"type":31,"value":3466},"　「人事・予算をにぎっている既得権益層が、現場に無理難題を押し付ける」構図を変えるには、",{"type":26,"tag":54,"props":3468,"children":3469},{},[],{"type":26,"tag":179,"props":3471,"children":3473},{"style":3472},"text-align: center; font-size: larger;",[3474],{"type":26,"tag":27,"props":3475,"children":3476},{},[3477,3478,3482],{"type":31,"value":2983},{"type":26,"tag":285,"props":3479,"children":3480},{},[3481],{"type":31,"value":2928},{"type":31,"value":3179},{"type":26,"tag":69,"props":3484,"children":3487},{"src":3485,"alt":2928,"className":3486},"\u002Fimg\u002Fmakeityourself.jpg",[74],[],{"type":26,"tag":34,"props":3489,"children":3490},{},[3491],{"type":26,"tag":38,"props":3492,"children":3493},{},[3494],{"type":26,"tag":42,"props":3495,"children":3498},{"href":3496,"rel":3497},"https:\u002F\u002Fbiz.kddi.com\u002Fcontent\u002Fglossary\u002Fh\u002Fhacker\u002F",[734],[3499],{"type":31,"value":3500},"🔗ハッカーとは？意味・用語説明",{"type":26,"tag":27,"props":3502,"children":3503},{},[3504],{"type":31,"value":3505},"によれば、",{"type":26,"tag":27,"props":3507,"children":3508},{},[3509],{"type":26,"tag":380,"props":3510,"children":3512},{"className":3511},[],[3513],{"type":31,"value":3514},"ハッカーとは、コンピューターシステムやネットワークを探索し、操作する技術者のことを指します。ハッカーは、通常、高度なコンピューティングスキルを持ち、システムの動作を理解し、それを操作する能力を持っています。",{"type":26,"tag":27,"props":3516,"children":3517},{},[3518],{"type":31,"value":3519},"、、、ということですが、正しく理解されていません。",{"type":26,"tag":27,"props":3521,"children":3522},{},[3523],{"type":31,"value":3524},"　「天才ハッカー」を別にすると、「ハッカー＝悪人」と見なされています（本当はクラッカー＝破壊者）。",{"type":26,"tag":27,"props":3526,"children":3527},{},[3528,3530],{"type":31,"value":3529},"　発展形として「ライフハック（日常生活や仕事の効率化を図る工夫）」も広く使われるようになってきたのに残念です。 → ",{"type":26,"tag":42,"props":3531,"children":3533},{"href":3532},"#mindhacks",[3534],{"type":31,"value":3535},"🔗マインドハックス勉強法",{"type":26,"tag":27,"props":3537,"children":3538},{},[3539],{"type":31,"value":3540},"　コンピューターシステムに限らず、ハッキング（しくみを知って工夫すること）は、仕事や生活の質を向上させるのに役立ちます。",{"type":26,"tag":54,"props":3542,"children":3543},{},[],{"type":26,"tag":27,"props":3545,"children":3546},{},[3547],{"type":31,"value":3548},"　AIエージェントがプログラミングのハードルを下げ、システム技術者と利用者との「分断」を解消してゆくことを期待しつつ、",{"type":26,"tag":179,"props":3550,"children":3551},{"style":3472},[3552],{"type":26,"tag":27,"props":3553,"children":3554},{},[3555,3556,3560],{"type":31,"value":2983},{"type":26,"tag":285,"props":3557,"children":3558},{},[3559],{"type":31,"value":800},{"type":31,"value":3179},{"type":26,"tag":27,"props":3562,"children":3563},{},[3564],{"type":31,"value":3565},"になってみようと思います。",{"type":26,"tag":27,"props":3567,"children":3568},{},[3569,3572],{"type":26,"tag":69,"props":3570,"children":3571},{"src":799,"alt":800,"width":472},[],{"type":26,"tag":54,"props":3573,"children":3574},{},[],{"type":26,"tag":54,"props":3576,"children":3578},{"id":3577},"dungzduz",[],{"type":26,"tag":179,"props":3580,"children":3582},{"className":3581},[1207],[3583,3584,3597,3598],{"type":31,"value":1210},{"type":26,"tag":179,"props":3585,"children":3587},{"className":3586},[1214],[3588],{"type":26,"tag":42,"props":3589,"children":3592},{"target":1218,"rel":3590,"href":3591},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F4e6e3273.b9466c14.4e6e3274.9cb62d84\u002F_RTLink57026?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fnovolstore%2Fcfki6nxphbvaqxw74ucpw7rolq%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9",[3593],{"type":26,"tag":69,"props":3594,"children":3596},{"src":3595},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fnovolstore\u002Fcabinet\u002F11933359\u002F28295605_0.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":3599,"children":3601},{"className":3600},[1231],[3602,3603,3613,3614,3633,3634,3671],{"type":31,"value":1234},{"type":26,"tag":179,"props":3604,"children":3606},{"className":3605},[1238],[3607],{"type":26,"tag":42,"props":3608,"children":3610},{"target":1218,"rel":3609,"href":3591},[1220],[3611],{"type":31,"value":3612},"DUNGZDUZ USB Microphone 高ゲイン、コードレスミニサイズ、仕事や学習に最適",{"type":31,"value":1234},{"type":26,"tag":179,"props":3615,"children":3617},{"className":3616},[1250],[3618,3621,3623,3626,3628,3631],{"type":26,"tag":54,"props":3619,"children":3620},{},[],{"type":31,"value":3622},"※ 一般に内蔵マイクの性能は十分ではありません。",{"type":26,"tag":54,"props":3624,"children":3625},{},[],{"type":31,"value":3627},"ハダノはビデオ会議のときは、イヤホンに付属のマイクを使っていますが、マイクだけ使うときはじゃまです。",{"type":26,"tag":54,"props":3629,"children":3630},{},[],{"type":31,"value":3632},"この製品は、小型・高感度・高コスパで一つ持っておくと役に立ちます。",{"type":31,"value":1234},{"type":26,"tag":179,"props":3635,"children":3637},{"className":3636},[1266,1267],[3638,3639,3648,3649,3659,3660,3670],{"type":31,"value":1270},{"type":26,"tag":179,"props":3640,"children":3641},{},[3642],{"type":26,"tag":42,"props":3643,"children":3646},{"className":3644,"target":1218,"rel":3645,"href":3591},[1277,1278],[1220],[3647],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":3650,"children":3651},{},[3652],{"type":26,"tag":42,"props":3653,"children":3657},{"className":3654,"target":1218,"rel":3655,"href":3656},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0CNVZ27YH",[3658],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":3661,"children":3662},{},[3663],{"type":26,"tag":42,"props":3664,"children":3668},{"className":3665,"target":1218,"rel":3666,"href":3667},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fchansuaa%2F49077870589.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-title",[3669],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":3673,"children":3675},{"id":3674},"usbcadapter",[],{"type":26,"tag":179,"props":3677,"children":3679},{"className":3678},[1207],[3680,3681,3694,3695],{"type":31,"value":1210},{"type":26,"tag":179,"props":3682,"children":3684},{"className":3683},[1214],[3685],{"type":26,"tag":42,"props":3686,"children":3689},{"target":1218,"rel":3687,"href":3688},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F1c31a7e9.545b2c08.1c31a7ea.d83a8f7a\u002F_RTLink57026?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fe7699c2d6f58730632d3edbdfb0706fd%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjEsImFtcCI6ZmFsc2V9",[3690],{"type":26,"tag":69,"props":3691,"children":3693},{"src":3692},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fanker\u002Fcabinet\u002Famazon\u002Fb87310a1.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":3696,"children":3698},{"className":3697},[1231],[3699,3700,3710,3711,3730,3731,3768],{"type":31,"value":1234},{"type":26,"tag":179,"props":3701,"children":3703},{"className":3702},[1238],[3704],{"type":26,"tag":42,"props":3705,"children":3707},{"target":1218,"rel":3706,"href":3688},[1220],[3708],{"type":31,"value":3709},"Anker USB-C & USB 3.0 変換アダプタ 2個セット",{"type":31,"value":1234},{"type":26,"tag":179,"props":3712,"children":3714},{"className":3713},[1250],[3715,3718,3720,3723,3725,3728],{"type":26,"tag":54,"props":3716,"children":3717},{},[],{"type":31,"value":3719},"※ USBのType-CをType-Aに変換するアダプタの2個セットです。",{"type":26,"tag":54,"props":3721,"children":3722},{},[],{"type":31,"value":3724},"コネクタ部分は、抜き差しの繰り返しによってこわれやすいものですが、Ankerなら安心です。",{"type":26,"tag":54,"props":3726,"children":3727},{},[],{"type":31,"value":3729},"ランプで動作が確認できるのも気に入っています。",{"type":31,"value":1234},{"type":26,"tag":179,"props":3732,"children":3734},{"className":3733},[1266,1267],[3735,3736,3745,3746,3756,3757,3767],{"type":31,"value":1270},{"type":26,"tag":179,"props":3737,"children":3738},{},[3739],{"type":26,"tag":42,"props":3740,"children":3743},{"className":3741,"target":1218,"rel":3742,"href":3688},[1277,1278],[1220],[3744],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":3747,"children":3748},{},[3749],{"type":26,"tag":42,"props":3750,"children":3754},{"className":3751,"target":1218,"rel":3752,"href":3753},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB08JTMYPNW",[3755],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":3758,"children":3759},{},[3760],{"type":26,"tag":42,"props":3761,"children":3765},{"className":3762,"target":1218,"rel":3763,"href":3764},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fankerdirect%2Fb8731.html%3Fsc_i%3Dshopping-pc-web-result-item-brd_off-title",[3766],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":3770,"children":3772},{"id":3771},"lpoiejun",[],{"type":26,"tag":179,"props":3774,"children":3776},{"className":3775},[1207],[3777,3778,3791,3792],{"type":31,"value":1210},{"type":26,"tag":179,"props":3779,"children":3781},{"className":3780},[1214],[3782],{"type":26,"tag":42,"props":3783,"children":3786},{"target":1218,"rel":3784,"href":3785},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F4e6e58ec.dd593a7b.4e6e58ed.e4d95d7c\u002F_RTLink57026?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fplays23%2Fb0c7khm23c%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9",[3787],{"type":26,"tag":69,"props":3788,"children":3790},{"src":3789},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fplays23\u002Fcabinet\u002Fraku099_0304\u002Fb0c7khm23c00.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":3793,"children":3795},{"className":3794},[1231],[3796,3797,3807,3808,3822,3823,3860],{"type":31,"value":1234},{"type":26,"tag":179,"props":3798,"children":3800},{"className":3799},[1238],[3801],{"type":26,"tag":42,"props":3802,"children":3804},{"target":1218,"rel":3803,"href":3785},[1220],[3805],{"type":31,"value":3806},"USB type C 延長ケーブル 0.5m LpoieJun USB 3.2 Gen2(20Gbps) 高速データ通信",{"type":31,"value":1234},{"type":26,"tag":179,"props":3809,"children":3811},{"className":3810},[1250],[3812,3815,3817,3820],{"type":26,"tag":54,"props":3813,"children":3814},{},[],{"type":31,"value":3816},"※ Type-C延長ケーブルは、規格がシビアなようで、慎重に選ぶ必要があります。",{"type":26,"tag":54,"props":3818,"children":3819},{},[],{"type":31,"value":3821},"これは、太くてしっかりしているのにやわらかく、とても使いやすそうです。",{"type":31,"value":1234},{"type":26,"tag":179,"props":3824,"children":3826},{"className":3825},[1266,1267],[3827,3828,3837,3838,3848,3849,3859],{"type":31,"value":1270},{"type":26,"tag":179,"props":3829,"children":3830},{},[3831],{"type":26,"tag":42,"props":3832,"children":3835},{"className":3833,"target":1218,"rel":3834,"href":3785},[1277,1278],[1220],[3836],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":3839,"children":3840},{},[3841],{"type":26,"tag":42,"props":3842,"children":3846},{"className":3843,"target":1218,"rel":3844,"href":3845},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0DHSH2DM6",[3847],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":3850,"children":3851},{},[3852],{"type":26,"tag":42,"props":3853,"children":3857},{"className":3854,"target":1218,"rel":3855,"href":3856},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fshopeevergreen%2F11520240909200113.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-title",[3858],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":3862,"children":3864},{"id":3863},"mindhacks",[],{"type":26,"tag":179,"props":3866,"children":3868},{"className":3867},[1207],[3869,3870,3883,3884],{"type":31,"value":1210},{"type":26,"tag":179,"props":3871,"children":3873},{"className":3872},[1214],[3874],{"type":26,"tag":42,"props":3875,"children":3878},{"target":1218,"rel":3876,"href":3877},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F273236f4.d5f5314b.273236f5.ec66cf8e\u002F_RTLink50200?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F72f787bd5f0733efad7dbc6691edc4f7%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9",[3879],{"type":26,"tag":69,"props":3880,"children":3882},{"src":3881},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Frakutenkobo-ebooks\u002Fcabinet\u002F9750\u002F2000006139750.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":3885,"children":3887},{"className":3886},[1231],[3888,3889,3899,3900,3919,3920,3957],{"type":31,"value":1234},{"type":26,"tag":179,"props":3890,"children":3892},{"className":3891},[1238],[3893],{"type":26,"tag":42,"props":3894,"children":3896},{"target":1218,"rel":3895,"href":3877},[1220],[3897],{"type":31,"value":3898},"マインドハックス勉強法 脳と心を味方につける【電子書籍】[ 佐々木正悟 ]",{"type":31,"value":1234},{"type":26,"tag":179,"props":3901,"children":3903},{"className":3902},[1250],[3904,3907,3909,3912,3914,3917],{"type":26,"tag":54,"props":3905,"children":3906},{},[],{"type":31,"value":3908},"※ ハダノは、紙の本を2008年に買いました。",{"type":26,"tag":54,"props":3910,"children":3911},{},[],{"type":31,"value":3913},"機器の進歩に合わせて読み替えるべき点はありますが、基本的な考え方は現在でも通用すると思います。",{"type":26,"tag":54,"props":3915,"children":3916},{},[],{"type":31,"value":3918},"「ハック」という手法をなぜみんな使わないのか不思議です。",{"type":31,"value":1234},{"type":26,"tag":179,"props":3921,"children":3923},{"className":3922},[1266,1267],[3924,3925,3934,3935,3945,3946,3956],{"type":31,"value":1270},{"type":26,"tag":179,"props":3926,"children":3927},{},[3928],{"type":26,"tag":42,"props":3929,"children":3932},{"className":3930,"target":1218,"rel":3931,"href":3877},[1277,1278],[1220],[3933],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":3936,"children":3937},{},[3938],{"type":26,"tag":42,"props":3939,"children":3943},{"className":3940,"target":1218,"rel":3941,"href":3942},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB0195VHW64",[3944],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":3947,"children":3948},{},[3949],{"type":26,"tag":42,"props":3950,"children":3954},{"className":3951,"target":1218,"rel":3952,"href":3953},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fsoftya%2F9784775924204-pan.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img",[3955],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":3959,"children":3960},{},[],{"type":26,"tag":319,"props":3962,"children":3963},{},[],{"type":26,"tag":27,"props":3965,"children":3966},{},[3967],{"type":26,"tag":42,"props":3968,"children":3969},{"href":5},[3970],{"type":31,"value":3971},"次へ→　ちょっとだけハッカー2",{"title":8,"searchDepth":324,"depth":324,"links":3973},[3974],{"id":1581,"depth":324,"text":1526,"children":3975},[3976,3977,3978,3979,3980,3981,3982,3983,3984],{"id":1638,"depth":362,"text":1641},{"id":1949,"depth":362,"text":1952},{"id":2029,"depth":362,"text":2032},{"id":2259,"depth":362,"text":2259},{"id":2474,"depth":362,"text":2477},{"id":2630,"depth":362,"text":2633},{"id":2775,"depth":362,"text":2775},{"id":2936,"depth":362,"text":2936},{"id":3155,"depth":362,"text":3158},"content:articles:hacker-1.md","articles\u002Fhacker-1.md","articles\u002Fhacker-1",{"_path":3989,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3990,"description":3991,"category":3992,"tag":3994,"thumbnail":3997,"createdAt":3998,"updatedAt":3999,"body":4000,"_type":1519,"_id":5234,"_source":1521,"_file":5235,"_stem":5236,"_extension":1524},"\u002Farticles\u002Fai-keep2macro","AIツールでスイスイ仕事術【Keepとマクロでくじチェック】","Keepで読み取ったくじの当たり判定を表計算マクロを組んでやってみた",[3993],"work-system",[14,3995,18,15,1530,3996],"teachers-baton","rpa","keep2macro.jpg","2024\u002F1\u002F26","2024\u002F2\u002F6",{"type":23,"children":4001,"toc":5222},[4002,4007,4012,4017,4020,4025,4030,4033,4039,4044,4049,4061,4066,4069,4075,4080,4103,4109,4114,4117,4122,4127,4136,4141,4146,4152,4157,4162,4168,4173,4176,4181,4186,4219,4233,4236,4241,4246,4275,4278,4283,4288,4293,4298,4303,4308,4311,4317,4322,4327,4330,4357,4360,4365,4398,4403,4408,4429,4433,4438,4443,4447,4451,4454,4460,4465,4478,4483,4486,4491,4496,4501,4514,4519,4529,4534,4538,4543,4551,4564,4576,4581,4658,4663,4675,4678,4684,4689,4694,4717,4722,4727,4732,4737,4742,4747,4752,4757,4762,4767,4776,4781,4786,4791,4796,4801,4820,4823,4828,4839,4842,4848,4860,4873,4878,4883,4886,4891,4896,4901,4906,4919,4922,4927,4963,4968,4980,4983,4994,5000,5005,5010,5013,5017,5110,5114,5207,5210,5213],{"type":26,"tag":27,"props":4003,"children":4004},{},[4005],{"type":31,"value":4006},"　DX（データとデジタルによる変革）のうち特に重要なのは、AIによる意思決定・アクションです。ゆくゆくはAIによる業務自動化で人手不足が解消され、人はより本質的な仕事に集中できるでしょう。これこそが、真の働き方改革です。",{"type":26,"tag":27,"props":4008,"children":4009},{},[4010],{"type":31,"value":4011},"　「でも、AIなんて難しくて私には無理」とあきらめてはいませんか。どんな技術も「作る」のに比べて、「使う」だけならはるかに簡単です。高度なAI技術を手軽に使えるようにしたAIツールがたくさん出てきました。知らないうちに、手に届くところに来ているのです。",{"type":26,"tag":27,"props":4013,"children":4014},{},[4015],{"type":31,"value":4016},"　そんなAIツールを「ふだん使い」して、スイスイ仕事しましょう。",{"type":26,"tag":54,"props":4018,"children":4019},{},[],{"type":26,"tag":27,"props":4021,"children":4022},{},[4023],{"type":31,"value":4024},"　今回お届けするのは……",{"type":26,"tag":58,"props":4026,"children":4028},{"id":4027},"keepで読み取ったくじの当たり判定を表計算マクロを組んでやってみた",[4029],{"type":31,"value":3991},{"type":26,"tag":54,"props":4031,"children":4032},{},[],{"type":26,"tag":90,"props":4034,"children":4036},{"id":4035},"あーめんどくさいくじの当たり判定",[4037],{"type":31,"value":4038},"「あーめんどくさい」くじの当たり判定",{"type":26,"tag":27,"props":4040,"children":4041},{},[4042],{"type":31,"value":4043},"　くじは「もしかして当たるかな？」とわくわくします。しかし、鈴木アナでなくても「あーめんどくさい」となるのが当たり判定。当選番号が発表されても照合が面倒で、ついそのままにしがちです。",{"type":26,"tag":69,"props":4045,"children":4048},{"src":4046,"alt":4038,"className":4047},"\u002Fimg\u002Fmendokusai01.jpg",[802],[],{"type":26,"tag":27,"props":4050,"children":4051},{},[4052,4053,4059],{"type":31,"value":976},{"type":26,"tag":42,"props":4054,"children":4056},{"href":4055},"\u002Farticles\u002Fai-keep#extracttext",[4057],{"type":31,"value":4058},"🔗GoogleのAI技術は無料で使える",{"type":31,"value":4060}," でも紹介したように、Google Keep で「画像のテキストを抽出」ができます。",{"type":26,"tag":27,"props":4062,"children":4063},{},[4064],{"type":31,"value":4065},"　一つひとつ手で入力しなくてもくじ番号が手に入るので、あとは当選番号が含まれているか検索するだけです。表計算ソフトを使うといいでしょう。",{"type":26,"tag":54,"props":4067,"children":4068},{},[],{"type":26,"tag":90,"props":4070,"children":4072},{"id":4071},"くじの写真から-google-keep-で番号を抽出",[4073],{"type":31,"value":4074},"くじの写真から Google Keep で番号を抽出",{"type":26,"tag":27,"props":4076,"children":4077},{},[4078],{"type":31,"value":4079},"　まず、市商工会のドリームくじです。",{"type":26,"tag":34,"props":4081,"children":4082},{},[4083,4088,4093,4098],{"type":26,"tag":38,"props":4084,"children":4085},{},[4086],{"type":31,"value":4087},"くじ番号が一覧できるように重ねてスマホで撮影",{"type":26,"tag":38,"props":4089,"children":4090},{},[4091],{"type":31,"value":4092},"トリミングした画像をKeepのメモに追加",{"type":26,"tag":38,"props":4094,"children":4095},{},[4096],{"type":31,"value":4097},"「画像のテキストを抽出」し、くじ番号を縦一列に整える",{"type":26,"tag":38,"props":4099,"children":4100},{},[4101],{"type":31,"value":4102},"くじ番号をコピーし、表計算ソフトに貼り付ける",{"type":26,"tag":69,"props":4104,"children":4108},{"src":4105,"alt":4106,"className":4107},"\u002Fimg\u002Fdreamlotex.jpg","ドリームくじからKeepで番号を抽出",[74],[],{"type":26,"tag":27,"props":4110,"children":4111},{},[4112],{"type":31,"value":4113},"、、、これは、楽勝でした。",{"type":26,"tag":54,"props":4115,"children":4116},{},[],{"type":26,"tag":27,"props":4118,"children":4119},{},[4120],{"type":31,"value":4121},"　次は、お年玉付き年賀状です。",{"type":26,"tag":27,"props":4123,"children":4124},{},[4125],{"type":31,"value":4126},"　以前、スマホのカメラでスキャンし、テキストを抽出しようと試みましたが、",{"type":26,"tag":27,"props":4128,"children":4129},{},[4130],{"type":26,"tag":380,"props":4131,"children":4133},{"className":4132},[],[4134],{"type":31,"value":4135},"…　 217617 -2024 2019 361139 0628T6 069T28 403327 LT8898 906E18 　…",{"type":26,"tag":27,"props":4137,"children":4138},{},[4139],{"type":31,"value":4140},"、、、となってしまい、実用に耐えません。複製防止の網掛けに惑わされるようです。",{"type":26,"tag":27,"props":4142,"children":4143},{},[4144],{"type":31,"value":4145},"　フォトレタッチの「カラーチェンジャー」機能で網掛けを目立たなく加工したうえで、Keepで抽出すると、",{"type":26,"tag":69,"props":4147,"children":4151},{"src":4148,"alt":4149,"className":4150},"\u002Fimg\u002Fotoshidamayex.jpg","お年玉付き年賀状（黄変）からKeepで番号を抽出",[3350],[],{"type":26,"tag":27,"props":4153,"children":4154},{},[4155],{"type":31,"value":4156},"、、、うまくいきます。",{"type":26,"tag":27,"props":4158,"children":4159},{},[4160],{"type":31,"value":4161},"　「ひょっとして、そのままでも大丈夫かも」と、加工せずにKeepで抽出すると、",{"type":26,"tag":69,"props":4163,"children":4167},{"src":4164,"alt":4165,"className":4166},"\u002Fimg\u002Fotoshidama1ex.jpg","お年玉付き年賀状からKeepで番号を抽出",[802],[],{"type":26,"tag":27,"props":4169,"children":4170},{},[4171],{"type":31,"value":4172},"、、、ほぼうまくいきました。さすが、GoogleのAIツールです。",{"type":26,"tag":54,"props":4174,"children":4175},{},[],{"type":26,"tag":90,"props":4177,"children":4179},{"id":4178},"エクセルであいまい検索",[4180],{"type":31,"value":4178},{"type":26,"tag":27,"props":4182,"children":4183},{},[4184],{"type":31,"value":4185},"　表計算ソフトといえば、Microsoft Excel です。",{"type":26,"tag":34,"props":4187,"children":4188},{},[4189,4194,4199,4204,4209,4214],{"type":26,"tag":38,"props":4190,"children":4191},{},[4192],{"type":31,"value":4193},"A列に、くじの通し番号",{"type":26,"tag":38,"props":4195,"children":4196},{},[4197],{"type":31,"value":4198},"B列に、くじ番号",{"type":26,"tag":38,"props":4200,"children":4201},{},[4202],{"type":31,"value":4203},"C列に、当たりの表示",{"type":26,"tag":38,"props":4205,"children":4206},{},[4207],{"type":31,"value":4208},"D列に、賞の等級",{"type":26,"tag":38,"props":4210,"children":4211},{},[4212],{"type":31,"value":4213},"E列に、当選番号",{"type":26,"tag":38,"props":4215,"children":4216},{},[4217],{"type":31,"value":4218},"F1セルに、検索したい当選番号\nをセットすることにします。",{"type":26,"tag":27,"props":4220,"children":4221},{},[4222,4224,4231],{"type":31,"value":4223},"　A列はもちろん、B列でも連番の部分の入力は ",{"type":26,"tag":42,"props":4225,"children":4228},{"href":4226,"rel":4227},"https:\u002F\u002Fexceljoshi.cocoo.co.jp\u002Fmedia\u002Fexcel-autofill",[734],[4229],{"type":31,"value":4230},"🔗「オートフィル」",{"type":31,"value":4232}," で楽ができます。くじ番号・当選番号は0から始まる場合もあるので、セルの表示形式をテキスト（文字列）に書式設定しておきます。",{"type":26,"tag":54,"props":4234,"children":4235},{},[],{"type":26,"tag":27,"props":4237,"children":4238},{},[4239],{"type":31,"value":4240},"　これで、必ず同じ6桁同士で比較できますが、問題は下4桁などの当選番号のあつかいです。1桁目と2桁目はなんでもよくて、残りの4桁の数字が一致するものを探すことを「あいまい検索」といいます。",{"type":26,"tag":27,"props":4242,"children":4243},{},[4244],{"type":31,"value":4245},"　あいまい検索は、エクセルでは「ワイルドカード」、Googleスプレッドシート では（その上位版の）「正規表現」を使います。",{"type":26,"tag":27,"props":4247,"children":4248},{},[4249,4251,4257,4259,4265,4267,4273],{"type":31,"value":4250},"　6桁の下4桁が",{"type":26,"tag":380,"props":4252,"children":4254},{"className":4253},[],[4255],{"type":31,"value":4256},"　1879　",{"type":31,"value":4258},"なら、ワイルドカードでは",{"type":26,"tag":380,"props":4260,"children":4262},{"className":4261},[],[4263],{"type":31,"value":4264},"　??1879　",{"type":31,"value":4266},"、正規表現では",{"type":26,"tag":380,"props":4268,"children":4270},{"className":4269},[],[4271],{"type":31,"value":4272},"　\\d\\d1879　",{"type":31,"value":4274},"となります。",{"type":26,"tag":54,"props":4276,"children":4277},{},[],{"type":26,"tag":90,"props":4279,"children":4281},{"id":4280},"検索自動化の願い",[4282],{"type":31,"value":4280},{"type":26,"tag":27,"props":4284,"children":4285},{},[4286],{"type":31,"value":4287},"　エクセルで検索すれば、手作業より正確だし楽にはなります。でももし、検索を自動でやってくれたら、比較対象が多くても安心です。",{"type":26,"tag":27,"props":4289,"children":4290},{},[4291],{"type":31,"value":4292},"　この「検索自動化の願い」を魔法使いに預けてもかなえてくれません。エクセルには、操作を記録して再生する「マクロ機能」があるのです。",{"type":26,"tag":27,"props":4294,"children":4295},{},[4296],{"type":31,"value":4297},"　たとえて言えば、絵をかくのが苦手な人のために「なぞりがきをしたら、えかきうたを作ってくれる」ような機能です。",{"type":26,"tag":69,"props":4299,"children":4302},{"src":4300,"alt":4301,"width":472},"\u002Fimg\u002Fmacro1reccode.svg","マクロ記録されたコード",[],{"type":26,"tag":27,"props":4304,"children":4305},{},[4306],{"type":31,"value":4307},"　エクセルの場合は、操作を VBA（Visual Basic for Applications）というプログラミング言語で記録してくれます。プログラミング未経験でも、勝手にVBAに変換してくれ、切り貼りだけで一応動くマクロができます。プログラミング入門にもぴったりです。ハダノも エクセル用VBA から 汎用VB へとステップアップしてきました。",{"type":26,"tag":54,"props":4309,"children":4310},{},[],{"type":26,"tag":90,"props":4312,"children":4314},{"id":4313},"明日のためこの願い-あきらめることはない",[4315],{"type":31,"value":4316},"明日のため、この願い あきらめることはない",{"type":26,"tag":27,"props":4318,"children":4319},{},[4320],{"type":31,"value":4321},"　くじの当たり判定が1回だけなら、わざわざプログラミングする必要はないかもしれません。しかし、「またやりたい」と願うのなら、プログラミングする価値はあります。",{"type":26,"tag":27,"props":4323,"children":4324},{},[4325],{"type":31,"value":4326},"　「魔法使い」ではなく、「マクロ使い」になりましょう。",{"type":26,"tag":54,"props":4328,"children":4329},{},[],{"type":26,"tag":27,"props":4331,"children":4332},{},[4333,4335,4341,4343,4348,4350,4356],{"type":31,"value":4334},"　魔導書に相当する「VBA本」は山ほど出版されていて、だれでも習得できます。ハダノが最後に買ったのは、",{"type":26,"tag":42,"props":4336,"children":4338},{"href":4337},"#excel1sec",[4339],{"type":31,"value":4340},"🔗「たった1秒で仕事が片づくExcel自動化の教科書」",{"type":31,"value":4342}," です。市内全教職員用の",{"type":26,"tag":285,"props":4344,"children":4345},{},[4346],{"type":31,"value":4347},"勤務時間システム",{"type":31,"value":4349},"を開発したときもこれが役に立ちました。　→ ",{"type":26,"tag":42,"props":4351,"children":4353},{"href":4352},"\u002Farticles\u002Fwork-system-report2018-1#whas",[4354],{"type":31,"value":4355},"🔗「勤務時間取得ツール」を核とする勤務時間システム",{"type":31,"value":976},{"type":26,"tag":54,"props":4358,"children":4359},{},[],{"type":26,"tag":27,"props":4361,"children":4362},{},[4363],{"type":31,"value":4364},"　「マクロの記録」で作られたコードに少し手を加えてみました。",{"type":26,"tag":34,"props":4366,"children":4367},{},[4368,4373,4378,4383,4388,4393],{"type":26,"tag":38,"props":4369,"children":4370},{},[4371],{"type":31,"value":4372},"当選番号の検索をしてヒットしたら、「○等 が当たりました！」とダイアログで表示",{"type":26,"tag":38,"props":4374,"children":4375},{},[4376],{"type":31,"value":4377},"当たった等級をC列にコピー",{"type":26,"tag":38,"props":4379,"children":4380},{},[4381],{"type":31,"value":4382},"「次を検索」を繰り返し、当たり等級すべてをC列にコピーし終えたら、次の当選番号へ",{"type":26,"tag":38,"props":4384,"children":4385},{},[4386],{"type":31,"value":4387},"同じ等級の当選番号が終わったら、「○等 チェック完了」と表示",{"type":26,"tag":38,"props":4389,"children":4390},{},[4391],{"type":31,"value":4392},"OK で次の等級へ、Cancel でプログラム中断",{"type":26,"tag":38,"props":4394,"children":4395},{},[4396],{"type":31,"value":4397},"すべてチェックし終えたら、その旨を表示して終了",{"type":26,"tag":69,"props":4399,"children":4402},{"src":4400,"alt":4401,"width":472},"\u002Fimg\u002Fmacro1vbacode.svg","マクロ記録に修正を加えたVBAコード",[],{"type":26,"tag":27,"props":4404,"children":4405},{},[4406],{"type":31,"value":4407},"、、、たったこれだけのコードで、まあまあ実用的なマクロになりました。",{"type":26,"tag":27,"props":4409,"children":4410},{},[4411,4413,4419,4421,4427],{"type":31,"value":4412},"　「全部で何本当たったのか」については、C1 セルに ",{"type":26,"tag":380,"props":4414,"children":4416},{"className":4415},[],[4417],{"type":31,"value":4418},"=COUNTA(C2:C1048576)",{"type":31,"value":4420}," という関数式を設定し、セルの書式設定 - 表示形式 - ユーザー定義 で ",{"type":26,"tag":380,"props":4422,"children":4424},{"className":4423},[],[4425],{"type":31,"value":4426},"0\"本 当たり\"",{"type":31,"value":4428}," とすることで、リアルタイムに確認できるようにしました。なんでもかんでもマクロではなく、適材適所がいいでしょう。",{"type":26,"tag":69,"props":4430,"children":4432},{"src":4431,"alt":8,"width":472},"\u002Fimg\u002Fkujicounta.jpg",[],{"type":26,"tag":27,"props":4434,"children":4435},{},[4436],{"type":31,"value":4437},"　ハダノ家のドリームくじと自分の年賀状は、残念ながら当たりが0本でした（動作確認のため、ダミーデータを末尾に追加……）。",{"type":26,"tag":27,"props":4439,"children":4440},{},[4441],{"type":31,"value":4442},"　父の年賀状は、6本当たっていました。あとは、C列の当たり表示を確認してふせんをはるだけです。B列のくじ番号は撮影時の「左→右」「上→下」の順に並んでいるので、A列の通し番号を見れば位置がわかります。",{"type":26,"tag":69,"props":4444,"children":4446},{"src":4445,"alt":8,"width":472},"\u002Fimg\u002Fotoshidamar6.jpg",[],{"type":26,"tag":54,"props":4448,"children":4450},{"id":4449},"ipadmacro",[],{"type":26,"tag":54,"props":4452,"children":4453},{},[],{"type":26,"tag":90,"props":4455,"children":4457},{"id":4456},"ipadでマクロを動かしたい",[4458],{"type":31,"value":4459},"iPadでマクロを動かしたい",{"type":26,"tag":27,"props":4461,"children":4462},{},[4463],{"type":31,"value":4464},"　PCで、「くじの当たり判定」ができるようになりました。そうなると、iPadでもできそうな気がしますが、そうは問屋がおろさないのが現実です。",{"type":26,"tag":34,"props":4466,"children":4467},{},[4468],{"type":26,"tag":38,"props":4469,"children":4470},{},[4471],{"type":26,"tag":42,"props":4472,"children":4475},{"href":4473,"rel":4474},"https:\u002F\u002Fwww.mechengjp.com\u002Fipad%E7%89%88excel%E3%81%A7%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AF%E6%9C%AC%E5%BD%93%E3%81%AB%E5%AE%9F%E8%A1%8C%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F%E7%AD%86%E8%80%85%E3%81%8C\u002F",[734],[4476],{"type":31,"value":4477},"🔗iPad版excelでマクロは本当に実行出来ないのか？筆者が調査してみた結果まとめ",{"type":26,"tag":27,"props":4479,"children":4480},{},[4481],{"type":31,"value":4482},"にあるように、iPadではVBAマクロが動きません。せっかく作ったのに残念です。",{"type":26,"tag":54,"props":4484,"children":4485},{},[],{"type":26,"tag":27,"props":4487,"children":4488},{},[4489],{"type":31,"value":4490},"　あきらめたくなければ、エクセルのかわりに Googleスプレッドシート を使うしかありません。Google Apps Script（GAS）という、ExcelのVBAと同等のマクロ言語があります。",{"type":26,"tag":27,"props":4492,"children":4493},{},[4494],{"type":31,"value":4495},"　エクセルのファイルをGoogleドライブに入れて、Googleスプレッドシート で開くと、表の見た目・セルの書式・関数式などほとんどそのまま変換されます。高い互換性があります。",{"type":26,"tag":27,"props":4497,"children":4498},{},[4499],{"type":31,"value":4500},"　ただ、マクロに関してはベースとなっているプログラミング言語が違うので、そのままでは動きません。",{"type":26,"tag":34,"props":4502,"children":4503},{},[4504,4509],{"type":26,"tag":38,"props":4505,"children":4506},{},[4507],{"type":31,"value":4508},"エクセルの VBA　……　Basic系",{"type":26,"tag":38,"props":4510,"children":4511},{},[4512],{"type":31,"value":4513},"スプレッドシートの GAS　……　JavaScript系",{"type":26,"tag":27,"props":4515,"children":4516},{},[4517],{"type":31,"value":4518},"　ドイツ語と英語ぐらいの違いなので、少しがんばれば何とかなりそうです。",{"type":26,"tag":27,"props":4520,"children":4521},{"style":1566},[4522,4523],{"type":31,"value":1569},{"type":26,"tag":42,"props":4524,"children":4526},{"href":4525},"https:\u002F\u002Fwww.teijitaisya.com\u002Fgas-vba-spreadsheet\u002F",[4527],{"type":31,"value":4528}," 🔗Excel VBAとGAS（スプレッドシート）の構文を比較してみた！！",{"type":26,"tag":27,"props":4530,"children":4531},{},[4532],{"type":31,"value":4533},"　まず、エクセルのときと同じように「マクロを記録」してみます。",{"type":26,"tag":69,"props":4535,"children":4537},{"src":4536,"alt":4301,"width":472},"\u002Fimg\u002Fkujimacrorec.svg",[],{"type":26,"tag":27,"props":4539,"children":4540},{},[4541],{"type":31,"value":4542},"　あれれ、検索途中の操作が記録されていません。これは、スプレッドシートの仕様とのことです。",{"type":26,"tag":34,"props":4544,"children":4545},{},[4546],{"type":26,"tag":38,"props":4547,"children":4548},{},[4549],{"type":31,"value":4550},"🔗Googleスプレッドシート 検索と置換を使いこなそう！4（GAS TextFinderで 改行置換）",{"type":26,"tag":27,"props":4552,"children":4553},{},[4554,4556,4562],{"type":31,"value":4555},"をよく読むと、",{"type":26,"tag":380,"props":4557,"children":4559},{"className":4558},[],[4560],{"type":31,"value":4561},"TextFinder",{"type":31,"value":4563}," を使いこなすことで、AIが提案するコード以上のものが書けるようです。",{"type":26,"tag":27,"props":4565,"children":4566},{},[4567,4568,4574],{"type":31,"value":976},{"type":26,"tag":42,"props":4569,"children":4571},{"href":4570},"#gasintro",[4572],{"type":31,"value":4573},"🔗「詳解! Google Apps Script完全入門」",{"type":31,"value":4575}," を参考に、「くじ当たり判定マクロ」をVBAからGASへ移植してみました。",{"type":26,"tag":69,"props":4577,"children":4580},{"src":4578,"alt":4579,"width":472},"\u002Fimg\u002Fkujimacrogas.svg","VBAマクロから移植されたGASコード",[],{"type":26,"tag":34,"props":4582,"children":4583},{},[4584,4605,4624,4645],{"type":26,"tag":38,"props":4585,"children":4586},{},[4587,4589,4595,4597,4603],{"type":31,"value":4588},"正規表現を使うときは、",{"type":26,"tag":380,"props":4590,"children":4592},{"className":4591},[],[4593],{"type":31,"value":4594},".useRegularExpression()",{"type":31,"value":4596}," に引数 ",{"type":26,"tag":380,"props":4598,"children":4600},{"className":4599},[],[4601],{"type":31,"value":4602},"true",{"type":31,"value":4604}," を入れる",{"type":26,"tag":38,"props":4606,"children":4607},{},[4608,4614,4616,4622],{"type":26,"tag":380,"props":4609,"children":4611},{"className":4610},[],[4612],{"type":31,"value":4613},".findAll()",{"type":31,"value":4615}," で「全て検索」し、配列にはいったものを ",{"type":26,"tag":380,"props":4617,"children":4619},{"className":4618},[],[4620],{"type":31,"value":4621},"for ～ of",{"type":31,"value":4623}," で回す",{"type":26,"tag":38,"props":4625,"children":4626},{},[4627,4629,4635,4637,4643],{"type":31,"value":4628},"スプレッドシート独自の ",{"type":26,"tag":380,"props":4630,"children":4632},{"className":4631},[],[4633],{"type":31,"value":4634},"Browser.msgBox",{"type":31,"value":4636}," ではなく、汎用的な ",{"type":26,"tag":380,"props":4638,"children":4640},{"className":4639},[],[4641],{"type":31,"value":4642},"ui.alert",{"type":31,"value":4644}," を使う",{"type":26,"tag":38,"props":4646,"children":4647},{},[4648,4650,4656],{"type":31,"value":4649},"ループ中断は、",{"type":26,"tag":380,"props":4651,"children":4653},{"className":4652},[],[4654],{"type":31,"value":4655},"break outerLoop;",{"type":31,"value":4657}," のようにラベルを指定する",{"type":26,"tag":27,"props":4659,"children":4660},{},[4661],{"type":31,"value":4662},"、、、という点に気をつけ、VBA版とほとんど同じように動くGAS版マクロを作りました。",{"type":26,"tag":27,"props":4664,"children":4665},{},[4666,4668],{"type":31,"value":4667},"　キーボードが使えないケースも考え、「実行ボタン」 にマクロを割り当てておきます。　→ ",{"type":26,"tag":42,"props":4669,"children":4672},{"href":4670,"rel":4671},"https:\u002F\u002Funcle-gas.com\u002Fspreadsheet-gas-4-method\u002F#toc3",[734],[4673],{"type":31,"value":4674},"🔗スプレッドシート上でGASを実行する方法",{"type":26,"tag":54,"props":4676,"children":4677},{},[],{"type":26,"tag":90,"props":4679,"children":4681},{"id":4680},"ipadでマクロを動かすときはブラウザで",[4682],{"type":31,"value":4683},"iPadでマクロを動かすときはブラウザで",{"type":26,"tag":27,"props":4685,"children":4686},{},[4687],{"type":31,"value":4688},"　さっそくiPadでマクロを動かしたいところですが、実はここに落とし穴があります。スプレッドシートファイルは、SafariやChromeなどのブラウザ でも 「スプレッドシート」アプリでも開けますが、マクロはアプリでは機能しないのです。 → 🔗iPadやiPhoneでGoogle spreadsheetのapp scriptを使用する方法",{"type":26,"tag":27,"props":4690,"children":4691},{},[4692],{"type":31,"value":4693},"　ブラウザで開くしかないのですが、油断しているとアプリに誘導されてしまいます。スプレッドシートファイルへのリンクを長押ししたり、┇(3点リーダ)をタップしたりして、、、",{"type":26,"tag":34,"props":4695,"children":4696},{},[4697,4702,4707,4712],{"type":26,"tag":38,"props":4698,"children":4699},{},[4700],{"type":31,"value":4701},"新しいタブで開く",{"type":26,"tag":38,"props":4703,"children":4704},{},[4705],{"type":31,"value":4706},"新規ウインドウで開く",{"type":26,"tag":38,"props":4708,"children":4709},{},[4710],{"type":31,"value":4711},"PC版サイトを見る",{"type":26,"tag":38,"props":4713,"children":4714},{},[4715],{"type":31,"value":4716},"デスクトップサイトを表示",{"type":26,"tag":27,"props":4718,"children":4719},{},[4720],{"type":31,"value":4721},"などを選択して、何とかマクロを動かせる状態にする必要があるのです。",{"type":26,"tag":69,"props":4723,"children":4726},{"src":4724,"alt":4725,"width":472},"\u002Fimg\u002Fopenbybrowser.jpg","ブラウザで開く方法",[],{"type":26,"tag":27,"props":4728,"children":4729},{},[4730],{"type":31,"value":4731},"　自分のものでないファイルを開いている場合は、ファイル - コピーを作成 で実行前にコピーを作っておきましょう。そちらを開けば、好きにいじれます。自分のデータに書き換えて実行させても安全です。",{"type":26,"tag":69,"props":4733,"children":4736},{"src":4734,"alt":4735,"width":472},"\u002Fimg\u002Fkujicopy.jpg","マクロ実行前にコピーを作成",[],{"type":26,"tag":27,"props":4738,"children":4739},{},[4740],{"type":31,"value":4741},"　「実行ボタン」を押すとマクロが実行されますが、初回だけ認証を求められます。",{"type":26,"tag":69,"props":4743,"children":4746},{"src":4744,"alt":4745,"width":472},"\u002Fimg\u002Fmacroauth.jpg","マクロ実行の認証",[],{"type":26,"tag":27,"props":4748,"children":4749},{},[4750],{"type":31,"value":4751},"　表計算ソフトの場合、セルをタップすると キーボード が表示されますが、大きくてじゃまです。",{"type":26,"tag":27,"props":4753,"children":4754},{},[4755],{"type":31,"value":4756},"　右下のキーボードアイコンを長押しし、フローティング を選択しておきましょう。小さくて移動可能なキーボードに変わります。ピンチアウトすれば、元に戻ります。",{"type":26,"tag":69,"props":4758,"children":4761},{"src":4759,"alt":4760,"width":472},"\u002Fimg\u002Ffloatkb.jpg","フローティングキーボード",[],{"type":26,"tag":27,"props":4763,"children":4764},{},[4765],{"type":31,"value":4766},"　新たなデータで実行したいときは、シート名の右の ▼ をタップ - コピーを作成 でシートのコピーを作ってから、くじ番号などを入れ替えましょう。新しく作ったシートでもマクロは同じように動きます。",{"type":26,"tag":27,"props":4768,"children":4769},{},[4770,4775],{"type":26,"tag":69,"props":4771,"children":4774},{"src":4772,"alt":4773,"width":472},"\u002Fimg\u002Fsheetcopy.jpg","シートのコピーを作成",[],{"type":31,"value":976},{"type":26,"tag":27,"props":4777,"children":4778},{},[4779],{"type":31,"value":4780},"　拡張機能 - Apps Script で、現在のマクロを見たり編集したりできます。",{"type":26,"tag":69,"props":4782,"children":4785},{"src":4783,"alt":4784,"width":472},"\u002Fimg\u002Fappsscript.jpg","拡張機能-Apps Script",[],{"type":26,"tag":27,"props":4787,"children":4788},{},[4789],{"type":31,"value":4790},"　もちろん、拡張機能 - マクロ - マクロを記録 で、一からマクロを作ることもできます。",{"type":26,"tag":69,"props":4792,"children":4795},{"src":4793,"alt":4794,"width":472},"\u002Fimg\u002Fgasmacrorec.jpg","拡張機能-マクロを記録",[],{"type":26,"tag":27,"props":4797,"children":4798},{},[4799],{"type":31,"value":4800},"　つまり、iPadでマクロプログラミングができるということなのです。",{"type":26,"tag":27,"props":4802,"children":4803},{},[4804,4806,4811,4813,4818],{"type":31,"value":4805},"　PCと比べて何かと制約の多いiPadですが、「プログラミングをしたい」という",{"type":26,"tag":285,"props":4807,"children":4808},{},[4809],{"type":31,"value":4810},"願い",{"type":31,"value":4812},"を ",{"type":26,"tag":285,"props":4814,"children":4815},{},[4816],{"type":31,"value":4817},"あきらめることはない",{"type":31,"value":4819}," のです。",{"type":26,"tag":54,"props":4821,"children":4822},{},[],{"type":26,"tag":27,"props":4824,"children":4825},{},[4826],{"type":31,"value":4827},"★ お待たせしました、、、",{"type":26,"tag":27,"props":4829,"children":4830},{"style":1566},[4831,4833],{"type":31,"value":4832},"⇒ ",{"type":26,"tag":42,"props":4834,"children":4836},{"href":4835},"https:\u002F\u002Fdocs.google.com\u002Fspreadsheets\u002Fd\u002F15tydJVh8Zuw4W6t5jQD5aaovFCwqSIDu6f9j21j3AwE\u002Fedit?usp=drive_link",[4837],{"type":31,"value":4838},"🔗「くじ当たり判定GASマクロ」入り スプレッドシートファイル 「 kuji 」 へのリンク はこちら",{"type":26,"tag":54,"props":4840,"children":4841},{},[],{"type":26,"tag":58,"props":4843,"children":4845},{"id":4844},"結論keepのテキスト抽出と表計算のマクロでくじの当たり判定が楽にできる",[4846],{"type":31,"value":4847},"【結論】Keepのテキスト抽出と表計算のマクロでくじの当たり判定が楽にできる",{"type":26,"tag":27,"props":4849,"children":4850},{},[4851,4852,4858],{"type":31,"value":976},{"type":26,"tag":42,"props":4853,"children":4855},{"href":4854},"\u002Farticles\u002Ftechnolojiya-3",[4856],{"type":31,"value":4857},"🔗子ども食堂のiPad活用",{"type":31,"value":4859}," で、",{"type":26,"tag":34,"props":4861,"children":4862},{},[4863,4868],{"type":26,"tag":38,"props":4864,"children":4865},{},[4866],{"type":31,"value":4867},"プログラミングをまなび、すすんで もんだいかいけつ しよう",{"type":26,"tag":38,"props":4869,"children":4870},{},[4871],{"type":31,"value":4872},"みじかなかだい をかいけつする「ローカルイノベーション」もたいせつ",{"type":26,"tag":27,"props":4874,"children":4875},{},[4876],{"type":31,"value":4877},"と述べました。",{"type":26,"tag":27,"props":4879,"children":4880},{},[4881],{"type":31,"value":4882},"　今回のくじチェックは、まさにぴったりな題材です。",{"type":26,"tag":54,"props":4884,"children":4885},{},[],{"type":26,"tag":27,"props":4887,"children":4888},{},[4889],{"type":31,"value":4890},"　ビジネスマンはお金や品物など数字をあつかうことが多いため、表計算ソフトの技能が必須です。学習や日常生活でも表計算ソフトは役に立つので、子どものころから親しんでおいたほうがよいでしょう。",{"type":26,"tag":27,"props":4892,"children":4893},{},[4894],{"type":31,"value":4895},"　PISAテストでも、",{"type":26,"tag":69,"props":4897,"children":4900},{"src":4898,"alt":4899,"width":472},"\u002Fimg\u002Fpisa2022forest.jpg","PISA2022森林面積を表計算ソフトで",[],{"type":26,"tag":27,"props":4902,"children":4903},{},[4904],{"type":31,"value":4905},"と、森林面積に関する問題を表計算ソフトを使って解かせています。",{"type":26,"tag":27,"props":4907,"children":4908},{},[4909,4911,4917],{"type":31,"value":4910},"　これほど一般的になった表計算ソフトですが、使いこなせているかといえば怪しいところです。マクロが組める日本のビジネスマンは１割足らずと言われています。賃金向上・生産性向上のためには、「時短」が必要です。マクロや ",{"type":26,"tag":42,"props":4912,"children":4914},{"href":4913},"\u002Ftag\u002Frpa",[4915],{"type":31,"value":4916},"🔗RPA",{"type":31,"value":4918}," による自動化が突破口になるでしょう。",{"type":26,"tag":54,"props":4920,"children":4921},{},[],{"type":26,"tag":27,"props":4923,"children":4924},{},[4925],{"type":31,"value":4926},"　エクセルVBA と スプレッドシートGAS をざっくり比べると、",{"type":26,"tag":34,"props":4928,"children":4929},{},[4930,4935,4940,4953,4958],{"type":26,"tag":38,"props":4931,"children":4932},{},[4933],{"type":31,"value":4934},"エクセルは有料（プレインストール）、スプレッドシートは基本無料",{"type":26,"tag":38,"props":4936,"children":4937},{},[4938],{"type":31,"value":4939},"エクセルはローカルで動き（校務PC向き）、スプレッドシートはクラウドで動く（学習端末向き）",{"type":26,"tag":38,"props":4941,"children":4942},{},[4943,4945,4951],{"type":31,"value":4944},"VBAは古くさいが資料多数、GASは新しく資料少ないが ",{"type":26,"tag":42,"props":4946,"children":4948},{"href":4947},"\u002Ftag\u002Fweb-standards",[4949],{"type":31,"value":4950},"🔗Web標準",{"type":31,"value":4952}," に近い",{"type":26,"tag":38,"props":4954,"children":4955},{},[4956],{"type":31,"value":4957},"VBAはPCのみで動き、GASは全ブラウザで動く（iPadもOK！）",{"type":26,"tag":38,"props":4959,"children":4960},{},[4961],{"type":31,"value":4962},"VBAはエクセルのみで動き、GASはグーグルアプリ共通で動くようにできる",{"type":26,"tag":27,"props":4964,"children":4965},{},[4966],{"type":31,"value":4967},"　即戦力のベテランがVBA、未来的・汎用的な有望新人がGAS、、、といったところでしょうか。",{"type":26,"tag":27,"props":4969,"children":4970},{},[4971,4973],{"type":31,"value":4972},"　GASは、アプリ横断的に自動化できるRPAに近い存在です。実際、GoogleのRPAである AppSheet と連携させる動きも出てきました。うまく使えば、働き方改革が無料でできるかもしれません。　→ ",{"type":26,"tag":42,"props":4974,"children":4977},{"href":4975,"rel":4976},"https:\u002F\u002Fnote.com\u002Fmanabibashi\u002Fn\u002Fn040e8a22b2b4",[734],[4978],{"type":31,"value":4979},"🔗AppSheetの無料プランでGoogle Apps Scriptを呼び出す",{"type":26,"tag":54,"props":4981,"children":4982},{},[],{"type":26,"tag":27,"props":4984,"children":4985},{},[4986,4988],{"type":31,"value":4987},"　プログラミングは、学習にも仕事にも役立つし、何より「楽しい」ということを再認識しました。大げさに言えば、「自分が自分らしくいられる」のです。　→ ",{"type":26,"tag":42,"props":4989,"children":4991},{"href":4990},"\u002Farticles\u002Fhadano",[4992],{"type":31,"value":4993},"🔗ハダノのプログラミング遍歴",{"type":26,"tag":69,"props":4995,"children":4999},{"src":4996,"alt":4997,"className":4998},"\u002Fimg\u002Fwizardking.jpg","願いをあずかり管理する魔法使い",[802],[],{"type":26,"tag":27,"props":5001,"children":5002},{},[5003],{"type":31,"value":5004},"　生徒の「願い」をあずかり管理してあげる「魔法使い（権力者）」ではなく、すすんで問題解決しようとする「マクロ使い（地球市民）」として、ともに探究し続ける教師でありたいものです。",{"type":26,"tag":69,"props":5006,"children":5009},{"src":5007,"alt":5008,"width":472},"\u002Fimg\u002Fjikohyogen.jpg","プログラミングは自己表現",[],{"type":26,"tag":54,"props":5011,"children":5012},{},[],{"type":26,"tag":54,"props":5014,"children":5016},{"id":5015},"excel1sec",[],{"type":26,"tag":179,"props":5018,"children":5020},{"className":5019},[1207],[5021,5022,5035,5036],{"type":31,"value":1210},{"type":26,"tag":179,"props":5023,"children":5025},{"className":5024},[1214],[5026],{"type":26,"tag":42,"props":5027,"children":5030},{"target":1218,"rel":5028,"href":5029},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F1c31a7e9.545b2c08.1c31a7ea.d83a8f7a\u002F_RTLink57027?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2F960208e3b7635f3623ec43922230dece%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjEsImFtcCI6ZmFsc2V9",[5031],{"type":26,"tag":69,"props":5032,"children":5034},{"src":5033},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F2073\u002F9784297112073_1_9.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":5037,"children":5039},{"className":5038},[1231],[5040,5041,5051,5052,5071,5072,5109],{"type":31,"value":1234},{"type":26,"tag":179,"props":5042,"children":5044},{"className":5043},[1238],[5045],{"type":26,"tag":42,"props":5046,"children":5048},{"target":1218,"rel":5047,"href":5029},[1220],[5049],{"type":31,"value":5050},"たった1秒で仕事が片づくExcel自動化の教科書",{"type":31,"value":1234},{"type":26,"tag":179,"props":5053,"children":5055},{"className":5054},[1250],[5056,5059,5061,5064,5066,5069],{"type":26,"tag":54,"props":5057,"children":5058},{},[],{"type":31,"value":5060},"※ ハダノは、Windows95のころからエクセルVBAプログラミングをしていました。",{"type":26,"tag":54,"props":5062,"children":5063},{},[],{"type":31,"value":5065},"数えきれないほどVBA本を読みました。今では、Webにも様々な解説記事があり、学習に困ることは少なくなりました。",{"type":26,"tag":54,"props":5067,"children":5068},{},[],{"type":31,"value":5070},"それでも吉田拳さんの本は、難解なことを明解にしてくれ、目からうろこでした。",{"type":31,"value":1234},{"type":26,"tag":179,"props":5073,"children":5075},{"className":5074},[1266,1267],[5076,5077,5086,5087,5097,5098,5108],{"type":31,"value":1270},{"type":26,"tag":179,"props":5078,"children":5079},{},[5080],{"type":26,"tag":42,"props":5081,"children":5084},{"className":5082,"target":1218,"rel":5083,"href":5029},[1277,1278],[1220],[5085],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":5088,"children":5089},{},[5090],{"type":26,"tag":42,"props":5091,"children":5095},{"className":5092,"target":1218,"rel":5093,"href":5094},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4297139618",[5096],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":5099,"children":5100},{},[5101],{"type":26,"tag":42,"props":5102,"children":5106},{"className":5103,"target":1218,"rel":5104,"href":5105},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fbookfan%2Fbk-4297112078.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img",[5107],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":5111,"children":5113},{"id":5112},"gasintro",[],{"type":26,"tag":179,"props":5115,"children":5117},{"className":5116},[1207],[5118,5119,5132,5133],{"type":31,"value":1210},{"type":26,"tag":179,"props":5120,"children":5122},{"className":5121},[1214],[5123],{"type":26,"tag":42,"props":5124,"children":5127},{"target":1218,"rel":5125,"href":5126},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F1c31a7e9.545b2c08.1c31a7ea.d83a8f7a\u002F_RTLink57027?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2F2735ffa9683d4fe24bd8643fa95fab2a%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjEsImFtcCI6ZmFsc2V9",[5128],{"type":26,"tag":69,"props":5129,"children":5131},{"src":5130},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F4741\u002F9784798064741_1_4.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":5134,"children":5136},{"className":5135},[1231],[5137,5138,5148,5149,5168,5169,5206],{"type":31,"value":1234},{"type":26,"tag":179,"props":5139,"children":5141},{"className":5140},[1238],[5142],{"type":26,"tag":42,"props":5143,"children":5145},{"target":1218,"rel":5144,"href":5126},[1220],[5146],{"type":31,"value":5147},"詳解! Google Apps Script完全入門 [第3版]",{"type":31,"value":1234},{"type":26,"tag":179,"props":5150,"children":5152},{"className":5151},[1250],[5153,5156,5158,5161,5163,5166],{"type":26,"tag":54,"props":5154,"children":5155},{},[],{"type":31,"value":5157},"※ GASは期待の新人ですが、参考資料が少ないのが玉にキズです。",{"type":26,"tag":54,"props":5159,"children":5160},{},[],{"type":31,"value":5162},"分厚くけっこうな値段がしますが、基礎からていねいに解説しているので、初心者が買っても損はありません。",{"type":26,"tag":54,"props":5164,"children":5165},{},[],{"type":31,"value":5167},"ハダノは、JavaScriptについてあいまいだった部分をこの本で学び直せました。",{"type":31,"value":1234},{"type":26,"tag":179,"props":5170,"children":5172},{"className":5171},[1266,1267],[5173,5174,5183,5184,5194,5195,5205],{"type":31,"value":1270},{"type":26,"tag":179,"props":5175,"children":5176},{},[5177],{"type":26,"tag":42,"props":5178,"children":5181},{"className":5179,"target":1218,"rel":5180,"href":5126},[1277,1278],[1220],[5182],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":5185,"children":5186},{},[5187],{"type":26,"tag":42,"props":5188,"children":5192},{"className":5189,"target":1218,"rel":5190,"href":5191},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4798064742",[5193],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":5196,"children":5197},{},[5198],{"type":26,"tag":42,"props":5199,"children":5203},{"className":5200,"target":1218,"rel":5201,"href":5202},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fwindybooks%2Fs-9784798064741.html%3Fsc_i%3Dshopping-pc-web-result-item-rsltlst-img",[5204],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":5208,"children":5209},{},[],{"type":26,"tag":319,"props":5211,"children":5212},{},[],{"type":26,"tag":27,"props":5214,"children":5215},{},[5216],{"type":26,"tag":42,"props":5217,"children":5219},{"href":5218},"\u002Farticles\u002Fai-poster",[5220],{"type":31,"value":5221},"←前へ　AIツールでスイスイ仕事術【ポスター作り】",{"title":8,"searchDepth":324,"depth":324,"links":5223},[5224,5233],{"id":4027,"depth":324,"text":3991,"children":5225},[5226,5227,5228,5229,5230,5231,5232],{"id":4035,"depth":362,"text":4038},{"id":4071,"depth":362,"text":4074},{"id":4178,"depth":362,"text":4178},{"id":4280,"depth":362,"text":4280},{"id":4313,"depth":362,"text":4316},{"id":4456,"depth":362,"text":4459},{"id":4680,"depth":362,"text":4683},{"id":4844,"depth":324,"text":4847},"content:articles:ai-keep2macro.md","articles\u002Fai-keep2macro.md","articles\u002Fai-keep2macro",{"_path":5238,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5239,"description":5240,"category":5241,"tag":5242,"thumbnail":5243,"createdAt":5244,"updatedAt":5245,"body":5246,"_type":1519,"_id":5734,"_source":1521,"_file":5735,"_stem":5736,"_extension":1524},"\u002Farticles\u002Fsocsaga-2","ソックサーガの始め方【自校運用】","コンテンツプログラミングシステム「ソックサーガ」のReplitによる自校運用法",[12],[1529,16,15,1530,1531],"socsaga01.jpg","2022\u002F6\u002F23","2022\u002F7\u002F2",{"type":23,"children":5247,"toc":5729},[5248,5253,5256,5262,5282,5298,5325,5330,5333,5336,5341,5344,5350,5367,5380,5421,5426,5429,5432,5445,5448,5453,5456,5461,5474,5483,5488,5491,5499,5507,5515,5523,5531,5539,5555,5563,5617,5621,5714,5717,5720],{"type":26,"tag":27,"props":5249,"children":5250},{},[5251],{"type":31,"value":5252},"　この記事では、コンテンツプログラミングシステム「ソックサーガ」の始め方を解説します。クラウド統合開発環境Replit（リプリット）による自校運用の方法です。プログラミング実習では、生徒が打ったコードを管理する必要があります。コードを評価や指導に十分役立てるには、自校運用が必須です。",{"type":26,"tag":54,"props":5254,"children":5255},{},[],{"type":26,"tag":58,"props":5257,"children":5259},{"id":5258},"ソックサーガの始め方指導者の方へ",[5260],{"type":31,"value":5261},"ソックサーガの始め方（指導者の方へ）",{"type":26,"tag":97,"props":5263,"children":5264},{},[5265,5270],{"type":26,"tag":38,"props":5266,"children":5267},{},[5268],{"type":31,"value":5269},"Googleアカウント取得。校務用とは別に授業用のアカウントがあると便利。",{"type":26,"tag":38,"props":5271,"children":5272},{},[5273,5280],{"type":26,"tag":42,"props":5274,"children":5277},{"href":5275,"rel":5276},"https:\u002F\u002Freplit.com\u002F~",[734],[5278],{"type":31,"value":5279},"🔗Replit",{"type":31,"value":5281}," に[Continue with Google]で[Sign up]し、アカウントを設定。左上の ≡ - [+Create]をクリック、Titleにプロジェクト名（socsaga1 等）、Languageは[HTML,CSS,JS]を選択し、[+Create Repl]をクリック。プロジェクトはクラス数分作るとよい。",{"type":26,"tag":27,"props":5283,"children":5284},{},[5285,5292],{"type":26,"tag":69,"props":5286,"children":5291},{"src":5287,"alt":5288,"className":5289},"\u002Fimg\u002Freplitlogin.jpg","replitlogin",[5290],"imgh",[],{"type":26,"tag":69,"props":5293,"children":5297},{"src":5294,"alt":5295,"className":5296},"\u002Fimg\u002Fcreaterepl.jpg","createrepl",[5290],[],{"type":26,"tag":97,"props":5299,"children":5300},{"start":362},[5301,5306,5320],{"type":26,"tag":38,"props":5302,"children":5303},{},[5304],{"type":31,"value":5305},"JavaScriptプログラムは、基本的にhtmlファイルに組み込んで動作させる。ローカルファイルをFiles欄にドラッグ＆ドロップするか、コードエディタで直接書くかする。",{"type":26,"tag":38,"props":5307,"children":5308},{},[5309,5311,5318],{"type":31,"value":5310},"SocSagaを利用するには、",{"type":26,"tag":42,"props":5312,"children":5315},{"href":5313,"rel":5314},"https:\u002F\u002Fkyodx.com\u002Fsrc\u002Fsocsagaset.zip",[734],[5316],{"type":31,"value":5317},"🔗socsagaset.zipをダウンロード",{"type":31,"value":5319},"・解凍しておく。sagaフォルダの中のものをすべてFiles欄にドラッグ＆ドロップする。",{"type":26,"tag":38,"props":5321,"children":5322},{},[5323],{"type":31,"value":5324},"jisshu00.html をひな形ファイルとし、ファイル名右の ≡ をクリック-Duplicate、≡ をクリック-Rename で jisshu01.html，jisshu02.html，…とクラスの生徒数分の実習htmlファイルを用意。指導者の方へ.txt の指示に従ってhtmlリストと画像リストを更新しておく。実習開始時には、右上の[👤+Invite]をクリックし、メールで生徒に知らせる。",{"type":26,"tag":69,"props":5326,"children":5329},{"src":5327,"alt":5328,"width":472},"\u002Fimg\u002Freplsaga1.jpg","replsaga1",[],{"type":26,"tag":54,"props":5331,"children":5332},{},[],{"type":26,"tag":54,"props":5334,"children":5335},{},[],{"type":26,"tag":27,"props":5337,"children":5338},{},[5339],{"type":31,"value":5340},"※ 生徒には、次の手順で操作をさせてください。",{"type":26,"tag":54,"props":5342,"children":5343},{},[],{"type":26,"tag":58,"props":5345,"children":5347},{"id":5346},"ソックサーガの始め方生徒へ",[5348],{"type":31,"value":5349},"ソックサーガの始め方（生徒へ）",{"type":26,"tag":97,"props":5351,"children":5353},{"start":5352},6,[5354],{"type":26,"tag":38,"props":5355,"children":5356},{},[5357,5359,5365],{"type":31,"value":5358},"メールが届いたら、",{"type":26,"tag":380,"props":5360,"children":5362},{"className":5361},[],[5363],{"type":31,"value":5364},"https:\u002F\u002Freplit.com\u002Fjoin\u002F**********-*******",{"type":31,"value":5366}," をクリックし、[Continue with Google]で[Sign up]して、プロジェクトに参加する。「Replit needs ……」に対しては、[Allow notifications]を選ぶ。",{"type":26,"tag":27,"props":5368,"children":5369},{},[5370,5374],{"type":26,"tag":69,"props":5371,"children":5373},{"src":5287,"alt":5288,"className":5372},[5290],[],{"type":26,"tag":69,"props":5375,"children":5379},{"src":5376,"alt":5377,"className":5378},"\u002Fimg\u002Freplitnotif.jpg","replitnotif",[5290],[],{"type":26,"tag":97,"props":5381,"children":5383},{"start":5382},7,[5384,5389,5400],{"type":26,"tag":38,"props":5385,"children":5386},{},[5387],{"type":31,"value":5388},"コード編集欄の右の Output欄の右上の ↗ (Open in a new tab) をクリックして新しいウィンドウを開く。少し待つと「ソックサーガへようこそ」から「ソックサーガで実習」に自動的に切り替わる。コード編集欄の右の仕切り線を右にずらして、広くしておくとよい。",{"type":26,"tag":38,"props":5390,"children":5391},{},[5392,5398],{"type":26,"tag":380,"props":5393,"children":5395},{"className":5394},[],[5396],{"type":31,"value":5397},"jisshu\u002Fsocsaga.html（ソックサーガの説明_編集用）へ",{"type":31,"value":5399},"をクリックし、実行エリアが表示されるようにし、[コンテンツ作り へ]、[　→　]、[　→　]、…とボタンをクリックして、SocSagaの説明を読み進める。",{"type":26,"tag":38,"props":5401,"children":5402},{},[5403,5405,5411,5413,5419],{"type":31,"value":5404},"SocSagaについて理解できたら、jisshu フォルダ内のhtml一覧で ",{"type":26,"tag":380,"props":5406,"children":5408},{"className":5407},[],[5409],{"type":31,"value":5410},"jisshu**.html",{"type":31,"value":5412},"（**は出席番号）をクリックして自分のページを表示する。Files欄で ",{"type":26,"tag":380,"props":5414,"children":5416},{"className":5415},[],[5417],{"type":31,"value":5418},"jisshu\u002Fjisshu**.html",{"type":31,"value":5420}," を選び、コード編集欄と自分のページとを行ったり来たりしてSocSagaの練習をする。編集するスライド番号 を入力し、自分のページの ↻ ボタンで更新。スライド編集エリアで編集後、[ソース]ボタンでコピーしたソースをコード編集欄のsectionタグ内に貼り付ける。自分のページの ↻ ボタンで更新。正しく表示されているか、実行エリアのボタンが作動するか確認。",{"type":26,"tag":69,"props":5422,"children":5425},{"src":5423,"alt":5424,"width":472},"\u002Fimg\u002Freplsaji.jpg","replsaji",[],{"type":26,"tag":54,"props":5427,"children":5428},{},[],{"type":26,"tag":54,"props":5430,"children":5431},{},[],{"type":26,"tag":27,"props":5433,"children":5434},{},[5435,5437,5443],{"type":31,"value":5436},"※ socsagaの練習で生徒がある程度使いこなせるようになったら、あとは「授業のねらい」に応じてどんどんコンテンツプログラミングをさせてください。コンテンツ作成では、「内容よりも見た目に凝りすぎる」ことのないよう注意してください。生徒はむやみに色を使いたがります。伝わるデザインにするには、「ポジティブな強調は青、ネガティブな強調は赤」など統一した色使いでシンプルに仕上げることが大切です（→",{"type":26,"tag":42,"props":5438,"children":5440},{"href":5439},"#presen",[5441],{"type":31,"value":5442},"🔗プレゼン資料のデザイン図鑑",{"type":31,"value":5444},"）。ソフトウェアは著作物だということも教えましょう。",{"type":26,"tag":54,"props":5446,"children":5447},{},[],{"type":26,"tag":27,"props":5449,"children":5450},{},[5451],{"type":31,"value":5452},"※ 以下は、おまけです。しくみを知りたい方はどうぞ……",{"type":26,"tag":54,"props":5454,"children":5455},{},[],{"type":26,"tag":58,"props":5457,"children":5459},{"id":5458},"ソックサーガ自校運用の技術的な話",[5460],{"type":31,"value":5458},{"type":26,"tag":27,"props":5462,"children":5463},{},[5464,5465,5472],{"type":31,"value":976},{"type":26,"tag":42,"props":5466,"children":5469},{"href":5467,"rel":5468},"https:\u002F\u002Fkyodx.com\u002Farticles\u002Fcloudide-1",[734],[5470],{"type":31,"value":5471},"🔗クラウド統合開発環境でWebアプリの自校運用を",{"type":31,"value":5473}," の最後に",{"type":26,"tag":27,"props":5475,"children":5476},{},[5477],{"type":26,"tag":380,"props":5478,"children":5480},{"className":5479},[],[5481],{"type":31,"value":5482},"　「画像の一覧」の問題が残っていますが、これは何とかなりそうです。画像やクリップボードの扱いが独特な iPad に対応したコードを書くついでに解決します。",{"type":26,"tag":27,"props":5484,"children":5485},{},[5486],{"type":31,"value":5487},"と書いた件ですが、次のように対応しました。",{"type":26,"tag":54,"props":5489,"children":5490},{},[],{"type":26,"tag":34,"props":5492,"children":5493},{},[5494],{"type":26,"tag":38,"props":5495,"children":5496},{},[5497],{"type":31,"value":5498},"ルートのindex.htmlファイル「ソックサーガへようこそ」に以下のコードを入れ、新しいウィンドウを開いたら自動的にjisshuフォルダのindex.html「ソックサーガで実習」に移動するようにする。",{"type":26,"tag":375,"props":5500,"children":5502},{"code":5501},"    if (location.hostname.indexOf('.id.repl.co') \u003C 0) {\n      location.href = '\u002Fjisshu\u002F';\n    }\n",[5503],{"type":26,"tag":380,"props":5504,"children":5505},{"__ignoreMap":8},[5506],{"type":31,"value":5501},{"type":26,"tag":34,"props":5508,"children":5509},{},[5510],{"type":26,"tag":38,"props":5511,"children":5512},{},[5513],{"type":31,"value":5514},"jisshu\u002Findex.htmlに以下のコードを入れ、画像一覧を表示させる。urliから画像ファイル名を取得して配列にし、insertAdjacentHTMLでimgタグを挿入してゆく。ファイル名はfigcaptionタグを使って表示。ファイル名をクリックすると画像を開くようにしている。",{"type":26,"tag":375,"props":5516,"children":5518},{"code":5517},"      fetch(urli, {cache: \"no-store\"}).then(function(response) {\n        return response.text()\n      }).then(function(text) {\n        jlisti = text.split(\u002F\\n\u002F).filter((value) => value !== ''); \n        for (let item of jlisti) {\n        jisshui.insertAdjacentHTML('beforeend',`\u003Cfigure>\u003Cimg src=\"img\u002F${item}\">\u003Cfigcaption>\u003Ca href=\"img\u002F${item}\" onclick=\"return confirm('画像を開きますか？');\">${item}\u003C\u002Fa>\u003C\u002Ffigcaption>\u003C\u002Ffigure>`);          \n        }        \n      });      \n",[5519],{"type":26,"tag":380,"props":5520,"children":5521},{"__ignoreMap":8},[5522],{"type":31,"value":5517},{"type":26,"tag":34,"props":5524,"children":5525},{},[5526],{"type":26,"tag":38,"props":5527,"children":5528},{},[5529],{"type":31,"value":5530},"同じ要領で、jisshu\u002Findex.htmlに以下のコードを入れ、html一覧を表示させる。",{"type":26,"tag":375,"props":5532,"children":5534},{"code":5533},"      fetch(urlh,{cache: \"no-store\"}).then(function(response) {\n        return response.text()\n      }).then(function(text) {\n        jlisth = text.split(\u002F\\n\u002F).filter((value) => value !== '');\n        for (let item of jlisth) {\n        jisshuh.insertAdjacentHTML('beforeend',`　\u003Ca href=\"${item}\" target=\"_blank\">${item}\u003C\u002Fa>　`);          \n        }\n      });\n",[5535],{"type":26,"tag":380,"props":5536,"children":5537},{"__ignoreMap":8},[5538],{"type":31,"value":5533},{"type":26,"tag":34,"props":5540,"children":5541},{},[5542],{"type":26,"tag":38,"props":5543,"children":5544},{},[5545,5547,5553],{"type":31,"value":5546},"画像ファイル名一覧・htmlファイル名一覧の取得は、通常はサーバサイドプログラミングの出番。今回は、「指導者の方へ」で以下のShellコマンドを実行してもらう形にした。",{"type":26,"tag":380,"props":5548,"children":5550},{"className":5549},[],[5551],{"type":31,"value":5552},"{cache: \"no-store\"}",{"type":31,"value":5554}," でfetchし、キャッシュを読まないようにしているが、「リストを最新の状態にしたのに一覧が古いまま」ということがたまにあったので、対策を追記した。",{"type":26,"tag":375,"props":5556,"children":5558},{"code":5557},"cd jisshu\nls *.html > yourhtml.txt\nls img\u002F > yourimg.txt\n",[5559],{"type":26,"tag":380,"props":5560,"children":5561},{"__ignoreMap":8},[5562],{"type":31,"value":5557},{"type":26,"tag":34,"props":5564,"children":5565},{},[5566,5571,5592,5612],{"type":26,"tag":38,"props":5567,"children":5568},{},[5569],{"type":31,"value":5570},"iPadなどのモバイルOSの場合、画像やクリップボードの扱いがPCとは異なるので注意が必要。JavaScriptの命令がうまく働かないことが多々ある。",{"type":26,"tag":38,"props":5572,"children":5573},{},[5574,5576,5582,5584,5590],{"type":31,"value":5575},"iPadで画像をロングタップして",{"type":26,"tag":380,"props":5577,"children":5579},{"className":5578},[],[5580],{"type":31,"value":5581},"コピー",{"type":31,"value":5583},"し、SocPadに",{"type":26,"tag":380,"props":5585,"children":5587},{"className":5586},[],[5588],{"type":31,"value":5589},"貼り付け",{"type":31,"value":5591}," をしても何も貼り付けられない。仕方ないので、ckeditor5-34.1.0へアップデイトしたうえでAutoImage pluginを有効にした。これで、画像URLを貼り付ければ画像が挿入される。",{"type":26,"tag":38,"props":5593,"children":5594},{},[5595,5597,5603,5605,5610],{"type":31,"value":5596},"ところが、画像をロングタップしても",{"type":26,"tag":380,"props":5598,"children":5600},{"className":5599},[],[5601],{"type":31,"value":5602},"画像のアドレスをコピー",{"type":31,"value":5604},"が出ない。ファイル名をクリックすると画像を開くようにしたのはこのためで、アドレス欄をロングタップ-",{"type":26,"tag":380,"props":5606,"children":5608},{"className":5607},[],[5609],{"type":31,"value":5581},{"type":31,"value":5611}," でようやく画像URLがコピーされる。",{"type":26,"tag":38,"props":5613,"children":5614},{},[5615],{"type":31,"value":5616},"他にも方法は考えられるが、Appleが年々クリップボードのセキュリティを厳しくしているので、ユーザーに意識的操作をさせた方がよいと判断した。",{"type":26,"tag":54,"props":5618,"children":5620},{"id":5619},"presen",[],{"type":26,"tag":179,"props":5622,"children":5624},{"className":5623},[1207],[5625,5626,5639,5640],{"type":31,"value":1210},{"type":26,"tag":179,"props":5627,"children":5629},{"className":5628},[1214],[5630],{"type":26,"tag":42,"props":5631,"children":5634},{"target":1218,"rel":5632,"href":5633},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F26ba9fc2.c2fdf85a.26ba9fc3.8edde063\u002F_RTLink57021?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15832001%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJ1cCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjAsImFtcCI6ZmFsc2V9",[5635],{"type":26,"tag":69,"props":5636,"children":5638},{"src":5637},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F5870\u002F9784478105870.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":5641,"children":5643},{"className":5642},[1231],[5644,5645,5655,5656,5675,5676,5713],{"type":31,"value":1234},{"type":26,"tag":179,"props":5646,"children":5648},{"className":5647},[1238],[5649],{"type":26,"tag":42,"props":5650,"children":5652},{"target":1218,"rel":5651,"href":5633},[1220],[5653],{"type":31,"value":5654},"プレゼン資料のデザイン図鑑 [ 前田 鎌利 ]",{"type":31,"value":1234},{"type":26,"tag":179,"props":5657,"children":5659},{"className":5658},[1250],[5660,5663,5665,5668,5670,5673],{"type":26,"tag":54,"props":5661,"children":5662},{},[],{"type":31,"value":5664},"※ コンテンツ作成では、伝わるデザインが大切です。",{"type":26,"tag":54,"props":5666,"children":5667},{},[],{"type":31,"value":5669},"ハダノは、今の学校教育にはプレゼン指導が欠けていると思います。",{"type":26,"tag":54,"props":5671,"children":5672},{},[],{"type":31,"value":5674},"この本は、豊富な実例をもとにプレゼンの極意が述べられていて、目からうろこでした。",{"type":31,"value":1234},{"type":26,"tag":179,"props":5677,"children":5679},{"className":5678},[1266,1267],[5680,5681,5690,5691,5701,5702,5712],{"type":31,"value":1270},{"type":26,"tag":179,"props":5682,"children":5683},{},[5684],{"type":26,"tag":42,"props":5685,"children":5688},{"className":5686,"target":1218,"rel":5687,"href":5633},[1277,1278],[1220],[5689],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":5692,"children":5693},{},[5694],{"type":26,"tag":42,"props":5695,"children":5699},{"className":5696,"target":1218,"rel":5697,"href":5698},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4478105871",[5700],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":5703,"children":5704},{},[5705],{"type":26,"tag":42,"props":5706,"children":5710},{"className":5707,"target":1218,"rel":5708,"href":5709},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fstore.shopping.yahoo.co.jp%2Fbookfan%2Fbk-4478105871.html%3Fsc_i%3Dshp_pc_search_itemlist_shsrg_title",[5711],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":5715,"children":5716},{},[],{"type":26,"tag":319,"props":5718,"children":5719},{},[],{"type":26,"tag":27,"props":5721,"children":5722},{},[5723],{"type":26,"tag":42,"props":5724,"children":5726},{"href":5725},"\u002Farticles\u002Fsocsaga-1",[5727],{"type":31,"value":5728},"←前へ　プログラミングシステム「ソックサーガ」を作ってみた",{"title":8,"searchDepth":324,"depth":324,"links":5730},[5731,5732,5733],{"id":5258,"depth":324,"text":5261},{"id":5346,"depth":324,"text":5349},{"id":5458,"depth":324,"text":5458},"content:articles:socsaga-2.md","articles\u002Fsocsaga-2.md","articles\u002Fsocsaga-2",{"_path":5738,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5739,"description":5740,"category":5741,"tag":5742,"thumbnail":5744,"createdAt":5745,"updatedAt":5746,"body":5747,"_type":1519,"_id":6119,"_source":1521,"_file":6120,"_stem":6121,"_extension":1524},"\u002Farticles\u002Fcloudide-1","クラウド統合開発環境でWebアプリの自校運用を","Webアプリの自校運用に最適なクラウド統合開発環境を探し求め、GlitchからReplitに乗り換えた話",[12],[16,15,1529,5743,1530],"soclicker","replsaga1.jpg","2022\u002F6\u002F21","2022\u002F7\u002F1",{"type":23,"children":5748,"toc":6109},[5749,5754,5757,5763,5768,5774,5787,5790,5795,5798,5804,5809,5823,5829,5841,5846,5851,5857,5942,5945,5950,5953,5959,5964,5968,5989,5993,6086,6089,6092,6100],{"type":26,"tag":27,"props":5750,"children":5751},{},[5752],{"type":31,"value":5753},"　この記事では、「Webアプリの自校運用に最適なクラウド統合開発環境を探し求め、Glitch（グリッチ）から Replit（リプリット）に乗り換えた話」を紹介します。",{"type":26,"tag":54,"props":5755,"children":5756},{},[],{"type":26,"tag":58,"props":5758,"children":5760},{"id":5759},"学校教育にふさわしいのはwebアプリ",[5761],{"type":31,"value":5762},"学校教育にふさわしいのは、Webアプリ",{"type":26,"tag":27,"props":5764,"children":5765},{},[5766],{"type":31,"value":5767},"　「コンピュータ、ソフトなければただの箱」です。各校とも自校の機種用のアプリを導入します。教員や教育委員会担当者がソフトウェアにくわしくなければ、業者のいいなりです。多くの場合、ネイティブアプリを有料で導入することになります。アプリ自体は無料であってもインストール手数料を取られます。",{"type":26,"tag":90,"props":5769,"children":5771},{"id":5770},"ネイティブアプリとwebアプリの違い",[5772],{"type":31,"value":5773},"ネイティブアプリとWebアプリの違い",{"type":26,"tag":34,"props":5775,"children":5776},{},[5777,5782],{"type":26,"tag":38,"props":5778,"children":5779},{},[5780],{"type":31,"value":5781},"ネイティブアプリは各OS用に作られたアプリなので、機能・性能をとことん追求できる。OSごとに別々のアプリが必要。開発・登録にお金がかかり、インストールが必要。",{"type":26,"tag":38,"props":5783,"children":5784},{},[5785],{"type":31,"value":5786},"Webアプリはブラウザ上で動くので、ネットさえあればOK。一つのアプリで汎用的に使えるが、機能・性能はほどほど。お金をかけずに開発でき、インストールは不要。",{"type":26,"tag":54,"props":5788,"children":5789},{},[],{"type":26,"tag":27,"props":5791,"children":5792},{},[5793],{"type":31,"value":5794},"　このような違いを考えると、予算の乏しい学校ではWebアプリを中心にした方がよいことになります。業者はWebアプリからは利益が得られないので、いい顔はしないと思います。WebアプリはWeb上に配置され、そのアドレスを知っていればだれでも使うことができます。ほとんどの場合、無料です。",{"type":26,"tag":54,"props":5796,"children":5797},{},[],{"type":26,"tag":58,"props":5799,"children":5801},{"id":5800},"webアプリを自校運用するには",[5802],{"type":31,"value":5803},"Webアプリを自校運用するには",{"type":26,"tag":27,"props":5805,"children":5806},{},[5807],{"type":31,"value":5808},"　Webアプリの中には、データを蓄積するタイプもあります。すでにWeb上に配置されているWebアプリの場合、データ領域も無料で使わせてくれることがあります。ただし、容量に制限があったり、保存期間が決まっていたり、秘密が守られなかったり、突然サービスが終了したりします。「容量を気にせず、自在にデータを扱いたい」場合、一般的には自力でサーバーを立てて運用する必要があります。サーバーサイドプログラミングをはじめとする専門知識や費用が必要となり、手が出ません。",{"type":26,"tag":27,"props":5810,"children":5811},{},[5812,5814,5821],{"type":31,"value":5813},"　それを解決するのが、",{"type":26,"tag":42,"props":5815,"children":5818},{"href":5816,"rel":5817},"https:\u002F\u002Fvitalify.jp\u002Fapp-lab\u002Fvietnam-offshore\u002F20181128-saaspaas\u002F#2-1_BaasmBaas",[734],[5819],{"type":31,"value":5820},"🔗Paas(Platform as a Service)やBaas(Backend as a Service)などのクラウドサービス",{"type":31,"value":5822},"です。無料でもけっこう使えるものがあります。ハダノは、プログラミングにはクラウド統合開発環境、データベースにはFirebaseを使います。これらを使えば、Webアプリを自校運用することができます。大切な教育データを自校で管理できて、安心・便利です。生徒の作品やコードの管理はもちろん、ソックリッカーの先生名の削除も自分でできるのです。",{"type":26,"tag":90,"props":5824,"children":5826},{"id":5825},"クラウド統合開発環境のおすすめは",[5827],{"type":31,"value":5828},"クラウド統合開発環境のおすすめは？",{"type":26,"tag":27,"props":5830,"children":5831},{},[5832,5833,5839],{"type":31,"value":976},{"type":26,"tag":42,"props":5834,"children":5836},{"href":5835},"#masatolan",[5837],{"type":31,"value":5838},"🔗JavaScriptでいきなり機械学習を遊び倒す本",{"type":31,"value":5840}," では、２つのおすすめが紹介されていました。",{"type":26,"tag":27,"props":5842,"children":5843},{},[5844],{"type":31,"value":5845},"　Glitch（グリッチ） と Replit（リプリット） です。どちらも似た特徴を持っています。GlitchはJavaScriptに特化、Replitは50以上のプログラミング言語対応です。ハダノはJavaScript主体なので、はじめはGlitchを使っていました。ボタン一つでFirebaseにデプロイできるのもGlitchの魅力でした。",{"type":26,"tag":27,"props":5847,"children":5848},{},[5849],{"type":31,"value":5850},"　2022年になって状況が変わってきたので、自分なりにGlitchとReplitの特徴を整理してみました。",{"type":26,"tag":90,"props":5852,"children":5854},{"id":5853},"glitchとreplitの比較gとr",[5855],{"type":31,"value":5856},"GlitchとReplitの比較【GとR】",{"type":26,"tag":34,"props":5858,"children":5859},{},[5860,5873,5886,5899,5914,5929],{"type":26,"tag":38,"props":5861,"children":5862},{},[5863,5865],{"type":31,"value":5864},"プロジェクト名は、Gは自動でつき、Rは自分で設定する。",{"type":26,"tag":2292,"props":5866,"children":5867},{},[5868],{"type":26,"tag":285,"props":5869,"children":5870},{},[5871],{"type":31,"value":5872},"Rの方がわかりやすい。",{"type":26,"tag":38,"props":5874,"children":5875},{},[5876,5878],{"type":31,"value":5877},"どちらもしばらくアクセスしないとスリープする。Rは10秒程度で復帰するが、Gは時間がかかることが多い。エラーでリロードすることもしばしば。",{"type":26,"tag":2292,"props":5879,"children":5880},{},[5881],{"type":26,"tag":285,"props":5882,"children":5883},{},[5884],{"type":31,"value":5885},"Rの方がストレスが少ない。",{"type":26,"tag":38,"props":5887,"children":5888},{},[5889,5891],{"type":31,"value":5890},"Firebase Hostingにデプロイすればスリープしなくなる。Gは以前はボタン一つでデプロイできるのを売りにしていたが、2022年になって画面デザインが変わってボタンが表示されなくなった。GlitchとFirebaseに報告したが、返答なし。TERMINAL欄にShellコマンドを打ち込めばデプロイできるが、きわめて煩雑。同じようにすれば ",{"type":26,"tag":2292,"props":5892,"children":5893},{},[5894],{"type":26,"tag":285,"props":5895,"children":5896},{},[5897],{"type":31,"value":5898},"Rでもデプロイできるが、そこまでの必要性を感じない。",{"type":26,"tag":38,"props":5900,"children":5901},{},[5902,5904,5912],{"type":31,"value":5903},"ファイルやフォルダの扱いは両者で異なる。Gは一つずつしかアップロードできないし、圧縮ファイルや画像ファイルはassetsフォルダにはいる。カレントディレクトリに入れたり、解凍したりするためには、TERMINAL欄に複雑なコマンドを打ち込む必要がある。Rは、ローカルファイルをごそっとドラッグ＆ドロップするだけで、フォルダ階層を保ったままアップロードできる。",{"type":26,"tag":2292,"props":5905,"children":5906},{},[5907],{"type":26,"tag":285,"props":5908,"children":5909},{},[5910],{"type":31,"value":5911},"Rの方がファイルの扱いが簡単。",{"type":31,"value":5913}," ただ、簡単すぎて生徒が違う階層に移動させてしまうおそれはある。",{"type":26,"tag":38,"props":5915,"children":5916},{},[5917,5919,5927],{"type":31,"value":5918},"画像の一覧を見たい場合、",{"type":26,"tag":2292,"props":5920,"children":5921},{},[5922],{"type":26,"tag":285,"props":5923,"children":5924},{},[5925],{"type":31,"value":5926},"Gは、assetsフォルダの一覧表示があって便利。",{"type":31,"value":5928}," Rは、画像をimgフォルダなどに入れ、プログラムで一覧表示させるしかない。",{"type":26,"tag":38,"props":5930,"children":5931},{},[5932,5934],{"type":31,"value":5933},"PREVIEW欄（Output欄）は、両者ともルートのindex.htmlが表示され、コード編集欄とは連動しない。Gはルート以下のパスを打ち込めるが、Rは固定なので新しいウィンドウで開く必要がある。タブレットでの操作などを考えると、",{"type":26,"tag":2292,"props":5935,"children":5936},{},[5937],{"type":26,"tag":285,"props":5938,"children":5939},{},[5940],{"type":31,"value":5941},"別ウィンドウでプレビューする方が現実的なので、GもRも差はない。",{"type":26,"tag":54,"props":5943,"children":5944},{},[],{"type":26,"tag":27,"props":5946,"children":5947},{},[5948],{"type":31,"value":5949},"……ということで、おおむねReplitの方が使いやすそうです。",{"type":26,"tag":54,"props":5951,"children":5952},{},[],{"type":26,"tag":58,"props":5954,"children":5956},{"id":5955},"replitに乗り換えよう",[5957],{"type":31,"value":5958},"Replitに乗り換えよう",{"type":26,"tag":27,"props":5960,"children":5961},{},[5962],{"type":31,"value":5963},"　Glitchは、アップデートのたびに使いにくくなり、方向性も微妙にずれてきていると感じます。1年以上使って慣れているという利点を捨ててでも、Replitに乗り換えようと決めました。",{"type":26,"tag":27,"props":5965,"children":5966},{},[5967],{"type":31,"value":5482},{"type":26,"tag":27,"props":5969,"children":5970},{},[5971,5972,5978,5980,5987],{"type":31,"value":976},{"type":26,"tag":42,"props":5973,"children":5976},{"href":5974,"rel":5975},"https:\u002F\u002Fkyodx.com\u002Ftag\u002Fsocsaga",[734],[5977],{"type":31,"value":1606},{"type":31,"value":5979}," と ",{"type":26,"tag":42,"props":5981,"children":5984},{"href":5982,"rel":5983},"https:\u002F\u002Fkyodx.com\u002Ftag\u002Fsoclicker",[734],[5985],{"type":31,"value":5986},"🔗ソックリッカー",{"type":31,"value":5988}," のReplitによる自校運用も提案していきます。",{"type":26,"tag":54,"props":5990,"children":5992},{"id":5991},"masatolan",[],{"type":26,"tag":179,"props":5994,"children":5996},{"className":5995},[1207],[5997,5998,6011,6012],{"type":31,"value":1210},{"type":26,"tag":179,"props":5999,"children":6001},{"className":6000},[1214],[6002],{"type":26,"tag":42,"props":6003,"children":6006},{"target":1218,"rel":6004,"href":6005},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F26ba9fc2.c2fdf85a.26ba9fc3.8edde063\u002F_RTLink57019?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16500601%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJ1cCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjAsImFtcCI6ZmFsc2V9",[6007],{"type":26,"tag":69,"props":6008,"children":6010},{"src":6009},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F9041\u002F9784844379041.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":6013,"children":6015},{"className":6014},[1231],[6016,6017,6027,6028,6047,6048,6085],{"type":31,"value":1234},{"type":26,"tag":179,"props":6018,"children":6020},{"className":6019},[1238],[6021],{"type":26,"tag":42,"props":6022,"children":6024},{"target":1218,"rel":6023,"href":6005},[1220],[6025],{"type":31,"value":6026},"JavaScriptでいきなり機械学習を遊び倒す本 （技術の泉シリーズ（NextPublishing）） [ まさとらん ]",{"type":31,"value":1234},{"type":26,"tag":179,"props":6029,"children":6031},{"className":6030},[1250],[6032,6035,6037,6040,6042,6045],{"type":26,"tag":54,"props":6033,"children":6034},{},[],{"type":31,"value":6036},"※ 最新WebサービスとJavaScript関連の情報を提供してくれる「まさとらん」さんの記事に、ハダノはいつも助けられています。",{"type":26,"tag":54,"props":6038,"children":6039},{},[],{"type":31,"value":6041},"この本も入口の部分をていねいに教えてくれます。",{"type":26,"tag":54,"props":6043,"children":6044},{},[],{"type":31,"value":6046},"GlitchとReplitに出会えてよかったと思います。",{"type":31,"value":1234},{"type":26,"tag":179,"props":6049,"children":6051},{"className":6050},[1266,1267],[6052,6053,6062,6063,6073,6074,6084],{"type":31,"value":1270},{"type":26,"tag":179,"props":6054,"children":6055},{},[6056],{"type":26,"tag":42,"props":6057,"children":6060},{"className":6058,"target":1218,"rel":6059,"href":6005},[1277,1278],[1220],[6061],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":6064,"children":6065},{},[6066],{"type":26,"tag":42,"props":6067,"children":6071},{"className":6068,"target":1218,"rel":6069,"href":6070},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB08L7LXNDC",[6072],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":6075,"children":6076},{},[6077],{"type":26,"tag":42,"props":6078,"children":6082},{"className":6079,"target":1218,"rel":6080,"href":6081},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887949559&vc_url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Ffirst%3D1%26ss_first%3D1%26ts%3D1662382850%26mcr%3D06c8cb50c083cad35f8b6072fe936496%26tab_ex%3Dcommerce%26sretry%3D0%26area%3D13%26astk%3D%26aq%3D%26oq%3D%26p%3DJavaScript%25E3%2581%25A7%25E3%2581%2584%25E3%2581%258D%25E3%2581%25AA%25E3%2582%258A%25E6%25A9%259F%25E6%25A2%25B0%25E5%25AD%25A6%25E7%25BF%2592%25E3%2582%2592%25E9%2581%258A%25E3%2581%25B3%25E5%2580%2592%25E3%2581%2599%25E6%259C%25AC%2B%25EF%25BC%2588%25E6%258A%2580%25E8%25A1%2593%25E3%2581%25AE%25E6%25B3%2589%25E3%2582%25B7%25E3%2583%25AA%25E3%2583%25BC%25E3%2582%25BA%25EF%25BC%2588NextPublishing%25EF%25BC%2589%25EF%25BC%2589%2B%255B%2B%25E3%2581%25BE%25E3%2581%2595%25E3%2581%25A8%25E3%2582%2589%25E3%2582%2593%2B%255D%26sc_i%3Dshp_pc_search_searchBox_2",[6083],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":6087,"children":6088},{},[],{"type":26,"tag":319,"props":6090,"children":6091},{},[],{"type":26,"tag":27,"props":6093,"children":6094},{},[6095],{"type":26,"tag":42,"props":6096,"children":6097},{"href":5238},[6098],{"type":31,"value":6099},"→　ソックサーガの始め方【自校運用】",{"type":26,"tag":27,"props":6101,"children":6102},{},[6103],{"type":26,"tag":42,"props":6104,"children":6106},{"href":6105},"\u002Farticles\u002Fsoclicker-3",[6107],{"type":31,"value":6108},"→　ソックリッカーの始め方【自校運用】",{"title":8,"searchDepth":324,"depth":324,"links":6110},[6111,6114,6118],{"id":5759,"depth":324,"text":5762,"children":6112},[6113],{"id":5770,"depth":362,"text":5773},{"id":5800,"depth":324,"text":5803,"children":6115},[6116,6117],{"id":5825,"depth":362,"text":5828},{"id":5853,"depth":362,"text":5856},{"id":5955,"depth":324,"text":5958},"content:articles:cloudide-1.md","articles\u002Fcloudide-1.md","articles\u002Fcloudide-1",{"_path":5725,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":6123,"description":6124,"category":6125,"tag":6126,"thumbnail":5243,"createdAt":6127,"updatedAt":6128,"body":6129,"_type":1519,"_id":7310,"_source":1521,"_file":7311,"_stem":7312,"_extension":1524},"プログラミングシステム「ソックサーガ」を作ってみた","ローコードで専門知識不要、個性が出せるので評価しやすく、共同制作もできるコンテンツプログラミングシステム",[12],[1529,16,15,1530,1531],"2022\u002F5\u002F5","2022\u002F6\u002F29",{"type":23,"children":6130,"toc":7297},[6131,6136,6145,6148,6154,6169,6174,6185,6190,6193,6199,6204,6209,6212,6217,6222,6225,6256,6261,6266,6277,6280,6286,6292,6306,6311,6316,6319,6325,6328,6337,6342,6347,6350,6411,6414,6419,6424,6429,6432,6437,6440,6445,6448,6454,6457,6467,6472,6487,6490,6498,6507,6512,6524,6537,6574,6577,6582,6585,6598,6601,6607,6613,6631,6640,6646,6902,6908,6936,6942,7006,7012,7074,7079,7084,7088,7094,7108,7111,7116,7119,7124,7129,7186,7190,7283,7286,7289],{"type":26,"tag":27,"props":6132,"children":6133},{},[6134],{"type":31,"value":6135},"　この記事では、新しい中学校プログラミング教育に対応するシステム「ソックサーガ」を紹介します。ソックリッカー制作の経験を活かし、最新技術をふんだんに取りいれて作りました。ローコードで専門知識不要、個性が出せるので評価しやすく、共同制作もできるコンテンツプログラミングシステムをめざしました。未履修問題の解決に役立つかどうか、お確かめください。",{"type":26,"tag":27,"props":6137,"children":6138},{"style":1566},[6139,6140],{"type":31,"value":1569},{"type":26,"tag":42,"props":6141,"children":6143},{"href":6142},"#socsagademo",[6144],{"type":31,"value":1575},{"type":26,"tag":54,"props":6146,"children":6147},{},[],{"type":26,"tag":58,"props":6149,"children":6151},{"id":6150},"中学校プログラミング教育は未履修問題が心配",[6152],{"type":31,"value":6153},"中学校プログラミング教育は未履修問題が心配！？",{"type":26,"tag":27,"props":6155,"children":6156},{},[6157,6159,6167],{"type":31,"value":6158},"　2021年度から中学校プログラミング教育が大きく変わりました。従来の「ディジタル作品づくり」から、「",{"type":26,"tag":2292,"props":6160,"children":6161},{},[6162],{"type":26,"tag":285,"props":6163,"children":6164},{},[6165],{"type":31,"value":6166},"ネットワークを利用した双方向性のあるコンテンツのプログラミング",{"type":31,"value":6168},"による問題の解決」となったのです。",{"type":26,"tag":27,"props":6170,"children":6171},{},[6172],{"type":31,"value":6173},"　ネットワークがらみのプログラミングは、環境構築の困難さに加え、通信の遅れを考慮した非同期処理・競合解決、セキュリティ対策、OS・ブラウザ・言語の多様性への対応も必要となり、かなりハードルが高くなります。一般的にPHPなどの専用言語を用いたサーバーサイドプログラミングも必要になります。",{"type":26,"tag":27,"props":6175,"children":6176},{},[6177,6178],{"type":31,"value":3166},{"type":26,"tag":42,"props":6179,"children":6182},{"href":6180,"rel":6181},"https:\u002F\u002Fwww.watch.impress.co.jp\u002Fkodomo_it\u002Fnews\u002F1159054.html",[734],[6183],{"type":31,"value":6184},"🔗 「ネットワーク」に「双方向」!?　倍増するプログラミングの学習内容に中学校の現場はどう対応するのか",{"type":26,"tag":27,"props":6186,"children":6187},{},[6188],{"type":31,"value":6189},"　これに対応する教材はたいへん少ないのが現状です。",{"type":26,"tag":54,"props":6191,"children":6192},{},[],{"type":26,"tag":90,"props":6194,"children":6196},{"id":6195},"双方向性のあるコンテンツとは",[6197],{"type":31,"value":6198},"双方向性のあるコンテンツとは？",{"type":26,"tag":27,"props":6200,"children":6201},{},[6202],{"type":31,"value":6203},"　双方向性のあるコンテンツとは、「入力に応答する、人間にとって意味のある情報の内容」です。ロボットを動かす情報はコンテンツではないし、プレゼンや動画などは双方向性のないコンテンツです。さらにコンテンツには、「デジタル化された文字，音声，静止画，動画などのデータを複合化」することが求められています。",{"type":26,"tag":27,"props":6205,"children":6206},{},[6207],{"type":31,"value":6208},"　現代、作品・製品の多くがクリエーターとエンジニアの協力によって生まれています。どちらかといえば、双方向性はエンジニアの比重が、コンテンツはクリエーターの比重が大きいと言えます。もし両者の敷居を低くすることができれば、作品の質は飛躍的に向上するはずです。",{"type":26,"tag":54,"props":6210,"children":6211},{},[],{"type":26,"tag":90,"props":6213,"children":6215},{"id":6214},"技術の教科書が抱える深刻な問題",[6216],{"type":31,"value":6214},{"type":26,"tag":27,"props":6218,"children":6219},{},[6220],{"type":31,"value":6221},"　技術の教科書には５つの実習例が出ていますが、どれも深刻な問題を抱えています。",{"type":26,"tag":54,"props":6223,"children":6224},{},[],{"type":26,"tag":34,"props":6226,"children":6227},{},[6228,6233,6248],{"type":26,"tag":38,"props":6229,"children":6230},{},[6231],{"type":31,"value":6232},"『チャット』・『タイピング練習』は、コンテンツが利用者まかせで貧弱であり、作り手から提供される情報がない。",{"type":26,"tag":38,"props":6234,"children":6235},{},[6236,6238,6246],{"type":31,"value":6237},"『ルート検索』・『英単語の発音チェック』は、魅力的なコンテンツではあるが、外部プログラムを呼び出して使っているだけであり、ほぼ何もプログラミングしていない。つまり、問題解決にプログラムを使っているが",{"type":26,"tag":2292,"props":6239,"children":6240},{},[6241],{"type":26,"tag":285,"props":6242,"children":6243},{},[6244],{"type":31,"value":6245},"作ってはいない",{"type":31,"value":6247},"。",{"type":26,"tag":38,"props":6249,"children":6250},{},[6251,6253],{"type":31,"value":6252},"『防災地図』は、魅力的なコンテンツを双方向的に操作できる可能性があるという点ですばらしい。ただ、望む動作をさせようとした場合、直接 scriptタグ内を正確に書き換える必要がある。数時間の実習で理解して完成させるのは、生徒も教師も不可能に近い。\n",{"type":26,"tag":54,"props":6254,"children":6255},{},[],{"type":26,"tag":27,"props":6257,"children":6258},{},[6259],{"type":31,"value":6260},"　『防災地図』以外の4つのアプリは、Scratch の利用を前提としています。小学生のプログラミング体験にはよくても、本格的な問題解決には向きません。本命は、高速・柔軟で共有・再利用できるテキストプログラミングです。いずれにせよ、「アイディアを形にするプロセス」が難しすぎたり、簡単でも制約が多すぎたりすれば、どの生徒の作品も同じようなものになり、評価が困難になるでしょう。",{"type":26,"tag":27,"props":6262,"children":6263},{},[6264],{"type":31,"value":6265},"　このように、技術の教科書にある5つの実習例は、どれも深刻な問題を抱え、実施も評価も困難です。高い理想に現実が追い付かず、このままでは、ほとんどの中学校で「未履修問題」が発生してしまいます。ITエンジニアからも「教えられる先生はいるのか？という課題」が指摘されました。",{"type":26,"tag":27,"props":6267,"children":6268},{},[6269,6270],{"type":31,"value":3166},{"type":26,"tag":42,"props":6271,"children":6274},{"href":6272,"rel":6273},"https:\u002F\u002Fqiita.com\u002FeXpresser\u002Fitems\u002F1764c2801a1e036f2c50?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=fd989cefdb-Qiita_newsletter_469_07_07_2021&utm_medium=email&utm_term=0_e44feaa081-fd989cefdb-34321993",[734],[6275],{"type":31,"value":6276},"🔗 中学校の技術科の教科書(情報分野)が進歩していた件",{"type":26,"tag":54,"props":6278,"children":6279},{},[],{"type":26,"tag":58,"props":6281,"children":6283},{"id":6282},"プログラミングシステムソックサーガで解決",[6284],{"type":31,"value":6285},"プログラミングシステム「ソックサーガ」で解決",{"type":26,"tag":90,"props":6287,"children":6289},{"id":6288},"ネットワークプログラミングはクラウド統合開発環境で解決",[6290],{"type":31,"value":6291},"ネットワークプログラミングは、クラウド統合開発環境で解決",{"type":26,"tag":27,"props":6293,"children":6294},{},[6295,6297,6304],{"type":31,"value":6296},"　ネットワークを利用したプログラミングをしようとすると、テキストエディタで編集→ローカルファイルとして保存→アップロード→ブラウザで確認という手順が必要となり、セキュリティの問題もからみ、煩雑でした。それを解決するのが ",{"type":26,"tag":42,"props":6298,"children":6301},{"href":6299,"rel":6300},"https:\u002F\u002Fwww.naka-sys.okinawa\u002Freplit-used\u002F",[734],[6302],{"type":31,"value":6303},"🔗Replit（リプリット）",{"type":31,"value":6305}," などの「クラウド統合開発環境」です。",{"type":26,"tag":27,"props":6307,"children":6308},{},[6309],{"type":31,"value":6310},"　Replit の上でWebアプリを動かすことで、ビジュアルに複合コンテンツを作り、最小限のコードで双方向性を持たせるシステムを作ってみました。それが SocSaga です。即、サーガ（冒険物語）にいざなう…との願いをこめました。",{"type":26,"tag":27,"props":6312,"children":6313},{},[6314],{"type":31,"value":6315},"　SocSaga を使えば、ローカルファイルを管理する必要がなく、環境構築の手間なしに直接Web上のファイルを編集でき、作品の中身と動作のロジックに集中することができます。　",{"type":26,"tag":54,"props":6317,"children":6318},{},[],{"type":26,"tag":90,"props":6320,"children":6322},{"id":6321},"コンテンツ作りはビジュアルhtmlエディタで解決",[6323],{"type":31,"value":6324},"コンテンツ作りは、ビジュアルHTMLエディタで解決",{"type":26,"tag":54,"props":6326,"children":6327},{},[],{"type":26,"tag":27,"props":6329,"children":6330},{},[6331,6336],{"type":26,"tag":69,"props":6332,"children":6335},{"src":6333,"alt":6334,"width":472},"\u002Fimg\u002Fsocsaga02.svg","socpad",[],{"type":31,"value":976},{"type":26,"tag":27,"props":6338,"children":6339},{},[6340],{"type":31,"value":6341},"　HTMLの文法をマスターするには、相当の時間がかかります。ビジュアルHTMLエディタSocPadの出番です。",{"type":26,"tag":27,"props":6343,"children":6344},{},[6345],{"type":31,"value":6346},"　ソックサーガ用SocPadは、ソックリッカー用SocPadを流用したものです。簡易ワープロ「ワードパッド」に似た操作で簡単です。見たとおりにHTML編集ができます。画像をReplitにアップロードして挿入したり、リンクを挿入したりできるので、メディアを複合化したホームページとして使えます。",{"type":26,"tag":54,"props":6348,"children":6349},{},[],{"type":26,"tag":34,"props":6351,"children":6352},{},[6353,6358,6369,6390],{"type":26,"tag":38,"props":6354,"children":6355},{},[6356],{"type":31,"value":6357},"[保存] ボタンでFirebaseのデータベースに保存するかわりに、[ソース] ボタンを使い、指示に従って直接HTMLファイル内に貼り付ける。HTMLの文法を知らなくても、見たとおりにHTML編集ができる。",{"type":26,"tag":38,"props":6359,"children":6360},{},[6361,6367],{"type":26,"tag":380,"props":6362,"children":6364},{"className":6363},[],[6365],{"type":31,"value":6366},"\u003Csection>\u003C\u002Fsection>",{"type":31,"value":6368}," を追加すれば、新規スライドが追加される。",{"type":26,"tag":38,"props":6370,"children":6371},{},[6372,6374,6380,6382,6388],{"type":31,"value":6373},"sectionタグ内（",{"type":26,"tag":380,"props":6375,"children":6377},{"className":6376},[],[6378],{"type":31,"value":6379},"\u003Csection> ",{"type":31,"value":6381},"と",{"type":26,"tag":380,"props":6383,"children":6385},{"className":6384},[],[6386],{"type":31,"value":6387}," \u003C\u002Fsection>",{"type":31,"value":6389}," の間の部分）にソースを貼り付けると、スライドが保存される。",{"type":26,"tag":38,"props":6391,"children":6392},{},[6393,6395,6401,6403,6409],{"type":31,"value":6394},"別のスライドを編集したいときは、 ",{"type":26,"tag":380,"props":6396,"children":6398},{"className":6397},[],[6399],{"type":31,"value":6400},"～id=\"henshu\">",{"type":31,"value":6402},"（番号）",{"type":26,"tag":380,"props":6404,"children":6406},{"className":6405},[],[6407],{"type":31,"value":6408},"\u003C\u002Fspan>\u003C!--　編集するスライド番号を入れる　-->",{"type":31,"value":6410},"　の番号部分を書き換え、スライド編集エリアの上の ↻ ボタンで更新する。更新すると、編集中のものは消えるので、ソースを貼り付けたか必ず確認すること。心配であれば、メモ帳などにもソースを貼り付けておくとよい。",{"type":26,"tag":54,"props":6412,"children":6413},{},[],{"type":26,"tag":27,"props":6415,"children":6416},{},[6417],{"type":31,"value":6418},"…以上を繰り返して、スライドを１枚１枚作ってゆきます。",{"type":26,"tag":27,"props":6420,"children":6421},{},[6422],{"type":31,"value":6423},"　スライドを作ったら、「編集エリア」の下の「実行エリア」でボタンを押してスライドを切り換えてみます。切り換え動作の設定は、次の『双方向性は、4色ボタン操作で解決』を見てください。",{"type":26,"tag":27,"props":6425,"children":6426},{},[6427],{"type":31,"value":6428},"　すべてのスライドの内容・動作が完成したら、スライド番号部分に ０ を入れます。「実行エリア」だけが表示されるようになるので、URLを公開して人に見せることができます。",{"type":26,"tag":54,"props":6430,"children":6431},{},[],{"type":26,"tag":27,"props":6433,"children":6434},{},[6435],{"type":31,"value":6436},"※ ソックリッカーでは、Firebase の Realtime Database にHTMLを保存し、Storage に画像をアップロードしました。ソックサーガでは、Firebase は使いません。授業配信アプリでは、ユーザーにソースコードや画像素材等を見せる必要はありません。しかし、プログラミング学習では、Replit上ではっきり見える形で取り扱わせる方がよいと考えました。sectionタグ内にソースをはりつけさせるのは、そのためなのです。",{"type":26,"tag":54,"props":6438,"children":6439},{},[],{"type":26,"tag":27,"props":6441,"children":6442},{},[6443],{"type":31,"value":6444},"※ ソックサーガは、「生徒にWebアプリを作らせる」Webアプリです。コンテンツ編集・アプリ実行のためのJavaScriptは、ルートのssscript.jsにまとめて、生徒にさわらせないようにしています。編集モードから実行モードへの切り替えを「スライド番号部分に 0 を入れる」方法にしたのは、評価や指導をやりやすくするためです。",{"type":26,"tag":54,"props":6446,"children":6447},{},[],{"type":26,"tag":90,"props":6449,"children":6451},{"id":6450},"双方向性は4色ボタン操作で解決",[6452],{"type":31,"value":6453},"双方向性は、4色ボタン操作で解決",{"type":26,"tag":54,"props":6455,"children":6456},{},[],{"type":26,"tag":27,"props":6458,"children":6459},{},[6460,6465],{"type":26,"tag":69,"props":6461,"children":6464},{"src":6462,"alt":6463,"width":472},"\u002Fimg\u002Fsocsaga04.svg","socsaga04",[],{"type":31,"value":6466},"　　",{"type":26,"tag":27,"props":6468,"children":6469},{},[6470],{"type":31,"value":6471},"　ソックリッカーでは、TVのリモコンと同じ4色ボタンで投票します。ソックサーガも4色ボタンで操作することにしました。",{"type":26,"tag":27,"props":6473,"children":6474},{},[6475,6477,6485],{"type":31,"value":6476},"　①動作は4色のボタンに割り当て、②飛び先は class属性で指定し、③必要に応じて動作を拡張する という ",{"type":26,"tag":2292,"props":6478,"children":6479},{},[6480],{"type":26,"tag":285,"props":6481,"children":6482},{},[6483],{"type":31,"value":6484},"ローコードプログラミング",{"type":31,"value":6486}," の手法で行います。 「順\n次・分岐・反復」のスライド移動の基本命令は、 xgo(数); という関数で、数によって動作を変えるようにしています。",{"type":26,"tag":54,"props":6488,"children":6489},{},[],{"type":26,"tag":34,"props":6491,"children":6492},{},[6493],{"type":26,"tag":38,"props":6494,"children":6495},{},[6496],{"type":31,"value":6497},"sectionタグには、デフォルト(規定値)で、",{"type":26,"tag":27,"props":6499,"children":6500},{},[6501],{"type":26,"tag":380,"props":6502,"children":6504},{"className":6503},[],[6505],{"type":31,"value":6506},"data-nav=\"nav0:xp+'／'+xpsum; nav1:↑;xgo(-8); nav2:←;xgo(-1); nav3:→;xgo(1);nav4:↓;xgo(8);\"",{"type":26,"tag":27,"props":6508,"children":6509},{},[6510],{"type":31,"value":6511},"というカスタムデータ属性が設定されている。",{"type":26,"tag":34,"props":6513,"children":6514},{},[6515],{"type":26,"tag":38,"props":6516,"children":6517},{},[6518],{"type":26,"tag":380,"props":6519,"children":6521},{"className":6520},[],[6522],{"type":31,"value":6523},"\u003Csection data-nav=\"nav1:先頭へ;xgo(-9);\">",{"type":26,"tag":27,"props":6525,"children":6526},{},[6527,6529,6535],{"type":31,"value":6528},"とすれば、青色のボタン1 だけ、先頭スライドへ移動するよう変更され、他のボタンはデフォルトのままとなる。nav数 のあとに コロン(:)、ボタン文字 のあとセミコロン(;)、そのあとは 命令1;命令2;命令3;…のように各命令のあとにセミコロンを付ける。二重引用符の中で引用符を使うときは、",{"type":26,"tag":380,"props":6530,"children":6532},{"className":6531},[],[6533],{"type":31,"value":6534},"\"nav0:xp+'／'+～\"",{"type":31,"value":6536}," のように単一引用符を使うこと。",{"type":26,"tag":34,"props":6538,"children":6539},{},[6540,6561],{"type":26,"tag":38,"props":6541,"children":6542},{},[6543,6545,6551,6553,6559],{"type":31,"value":6544},"各章の始まりのスライドのsectionタグに ",{"type":26,"tag":380,"props":6546,"children":6548},{"className":6547},[],[6549],{"type":31,"value":6550},"class=\"hp\"",{"type":31,"value":6552}," を入れておけば、デフォルトのままでも「プレゼンテーション」は十分可能。class属性を複数指定する場合は、",{"type":26,"tag":380,"props":6554,"children":6556},{"className":6555},[],[6557],{"type":31,"value":6558},"class=\"hp bk3\"",{"type":31,"value":6560}," のように半角スペースをはさむこと。",{"type":26,"tag":38,"props":6562,"children":6563},{},[6564,6566,6572],{"type":31,"value":6565},"Replitのコードエディタは、行番号の右の ▼ をクリックすることで折りたたむことができる。",{"type":26,"tag":380,"props":6567,"children":6569},{"className":6568},[],[6570],{"type":31,"value":6571},"\u003Csection",{"type":31,"value":6573}," の行を折りたたんでスライドの中身を隠すと、属性の指定がやりやすい。",{"type":26,"tag":54,"props":6575,"children":6576},{},[],{"type":26,"tag":27,"props":6578,"children":6579},{},[6580],{"type":31,"value":6581},"　ソックサーガは、Web標準技術に基づいたテキストプログラミングで主要な機能をラップすることで、入口が広く奥が深い学習を実現しました。将来にわたり役立つ情報活用能力が培われるでしょう。",{"type":26,"tag":54,"props":6583,"children":6584},{},[],{"type":26,"tag":27,"props":6586,"children":6587},{},[6588,6590,6596],{"type":31,"value":6589},"※ ソックサーガは、プロトタイプを jQuery + Firebase Storage + Mery マクロ で作りました。2年間実際に授業してみて、問題点を洗い出し、Vue.js で書き直しました。「可能な限りWeb標準に従う」ことが大切と痛感しました。そのため、Vueのコンポーネントのかわりに「カスタムデータ属性」を使っています。",{"type":26,"tag":380,"props":6591,"children":6593},{"className":6592},[],[6594],{"type":31,"value":6595},"data-***=\"\"",{"type":31,"value":6597},"のような形式で、制作者が自由に指定できる属性です。独自のデータを入力したり、JavaScriptで処理したりできます。HTMLで定義されているグローバル属性なので、将来的に無駄になりません。",{"type":26,"tag":54,"props":6599,"children":6600},{},[],{"type":26,"tag":90,"props":6602,"children":6604},{"id":6603},"発展的な-ソックサーガ-の使い方-余裕ができたら",[6605],{"type":31,"value":6606},"発展的な ソックサーガ の使い方（※ 余裕ができたら……）",{"type":26,"tag":805,"props":6608,"children":6610},{"id":6609},"スライドの背景を指定する",[6611],{"type":31,"value":6612},"① スライドの背景を指定する",{"type":26,"tag":34,"props":6614,"children":6615},{},[6616],{"type":26,"tag":38,"props":6617,"children":6618},{},[6619,6621,6629],{"type":31,"value":6620},"sectionタグのカスタムデータ属性に画像ファイルURLを指定。URLは、",{"type":26,"tag":2292,"props":6622,"children":6623},{},[6624],{"type":26,"tag":285,"props":6625,"children":6626},{},[6627],{"type":31,"value":6628},"jisshu\u002Fimg フォルダ内の画像一覧",{"type":31,"value":6630},"の画像を右クリックし、[画像アドレスをコピー]で。",{"type":26,"tag":27,"props":6632,"children":6633},{},[6634],{"type":26,"tag":380,"props":6635,"children":6637},{"className":6636},[],[6638],{"type":31,"value":6639},"data-bg=\"https:\u002F\u002Fsocsaga.hadano3.repl.co\u002Fjisshu\u002Fimg\u002Fvenndiag.svg\"",{"type":26,"tag":805,"props":6641,"children":6643},{"id":6642},"x関数x変数でボタン動作を拡張する",[6644],{"type":31,"value":6645},"② x関数・x変数でボタン動作を拡張する",{"type":26,"tag":34,"props":6647,"children":6648},{},[6649,6702,6723,6736,6884,6889],{"type":26,"tag":38,"props":6650,"children":6651},{},[6652,6654,6660,6662,6668,6670,6676,6678,6684,6686,6692,6694,6700],{"type":31,"value":6653},"メッセージ表示：",{"type":26,"tag":380,"props":6655,"children":6657},{"className":6656},[],[6658],{"type":31,"value":6659},"xmsg('メッセージ','入力文');",{"type":31,"value":6661}," 入力文を省略したら ",{"type":26,"tag":380,"props":6663,"children":6665},{"className":6664},[],[6666],{"type":31,"value":6667},"alert",{"type":31,"value":6669}," 、",{"type":26,"tag":380,"props":6671,"children":6673},{"className":6672},[],[6674],{"type":31,"value":6675},"'OK'",{"type":31,"value":6677},"なら ",{"type":26,"tag":380,"props":6679,"children":6681},{"className":6680},[],[6682],{"type":31,"value":6683},"confirm",{"type":31,"value":6685}," 、それ以外は ",{"type":26,"tag":380,"props":6687,"children":6689},{"className":6688},[],[6690],{"type":31,"value":6691},"prompt",{"type":31,"value":6693}," と同じ動作をする。戻り値は",{"type":26,"tag":380,"props":6695,"children":6697},{"className":6696},[],[6698],{"type":31,"value":6699},"xm",{"type":31,"value":6701},"に代入される。",{"type":26,"tag":38,"props":6703,"children":6704},{},[6705,6707,6713,6715,6721],{"type":31,"value":6706},"乱数：",{"type":26,"tag":380,"props":6708,"children":6710},{"className":6709},[],[6711],{"type":31,"value":6712},"xran(数);",{"type":31,"value":6714}," 1～数 までのランダムな自然数を作る。数を省略したら 6 がはいりサイコロに使える。戻り値は、",{"type":26,"tag":380,"props":6716,"children":6718},{"className":6717},[],[6719],{"type":31,"value":6720},"xr",{"type":31,"value":6722}," に。",{"type":26,"tag":38,"props":6724,"children":6725},{},[6726,6728,6734],{"type":31,"value":6727},"待機：",{"type":26,"tag":380,"props":6729,"children":6731},{"className":6730},[],[6732],{"type":31,"value":6733},"xwait(数);",{"type":31,"value":6735}," 数秒間待機してから次の命令を実行する。",{"type":26,"tag":38,"props":6737,"children":6738},{},[6739,6741,6747,6749,6755,6757,6763,6765,6771,6773,6779,6781,6787,6789,6795,6797,6803,6805,6811,6813,6819,6821,6827,6829,6835,6837,6843,6845,6851,6853,6859,6861,6867,6868,6874,6876,6882],{"type":31,"value":6740},"x変数：",{"type":26,"tag":380,"props":6742,"children":6744},{"className":6743},[],[6745],{"type":31,"value":6746},"xc",{"type":31,"value":6748},"【クリックしたボタン番号】、",{"type":26,"tag":380,"props":6750,"children":6752},{"className":6751},[],[6753],{"type":31,"value":6754},"xe",{"type":31,"value":6756},"【エネルギー】、",{"type":26,"tag":380,"props":6758,"children":6760},{"className":6759},[],[6761],{"type":31,"value":6762},"xf",{"type":31,"value":6764},"【ファイル名】、",{"type":26,"tag":380,"props":6766,"children":6768},{"className":6767},[],[6769],{"type":31,"value":6770},"xg",{"type":31,"value":6772},"【移動後のスライドナンバー】、",{"type":26,"tag":380,"props":6774,"children":6776},{"className":6775},[],[6777],{"type":31,"value":6778},"xp",{"type":31,"value":6780},"【現在のスライドナンバー】、\n",{"type":26,"tag":380,"props":6782,"children":6784},{"className":6783},[],[6785],{"type":31,"value":6786},"xpsum",{"type":31,"value":6788},"【スライド総数】、",{"type":26,"tag":380,"props":6790,"children":6792},{"className":6791},[],[6793],{"type":31,"value":6794},"xs",{"type":31,"value":6796},"【スコア】、",{"type":26,"tag":380,"props":6798,"children":6800},{"className":6799},[],[6801],{"type":31,"value":6802},"xt",{"type":31,"value":6804},"【ターン数】、",{"type":26,"tag":380,"props":6806,"children":6808},{"className":6807},[],[6809],{"type":31,"value":6810},"xu",{"type":31,"value":6812},"【ユーザーデータ】、",{"type":26,"tag":380,"props":6814,"children":6816},{"className":6815},[],[6817],{"type":31,"value":6818},"xuu[数]",{"type":31,"value":6820},"【ユーザーデータ配列】…状態フラグとして使うのに便利な関数がある｛",{"type":26,"tag":380,"props":6822,"children":6824},{"className":6823},[],[6825],{"type":31,"value":6826},"xuuon(数);",{"type":31,"value":6828}," フラグオン、",{"type":26,"tag":380,"props":6830,"children":6832},{"className":6831},[],[6833],{"type":31,"value":6834},"xuuoff(数);",{"type":31,"value":6836}," フラグオフ、",{"type":26,"tag":380,"props":6838,"children":6840},{"className":6839},[],[6841],{"type":31,"value":6842},"xuutog(数);",{"type":31,"value":6844}," フラグ反転｝、",{"type":26,"tag":380,"props":6846,"children":6848},{"className":6847},[],[6849],{"type":31,"value":6850},"xcc[数]",{"type":31,"value":6852},"【ボタン無効化配列】…",{"type":26,"tag":380,"props":6854,"children":6856},{"className":6855},[],[6857],{"type":31,"value":6858},"xuu",{"type":31,"value":6860},"と同様な関数で",{"type":26,"tag":380,"props":6862,"children":6864},{"className":6863},[],[6865],{"type":31,"value":6866},"xcc[0]",{"type":31,"value":6381},{"type":26,"tag":380,"props":6869,"children":6871},{"className":6870},[],[6872],{"type":31,"value":6873},"xcc[番]",{"type":31,"value":6875},"をオンでボタン無効化、",{"type":26,"tag":380,"props":6877,"children":6879},{"className":6878},[],[6880],{"type":31,"value":6881},"xccreset();",{"type":31,"value":6883}," ですべて有効化。",{"type":26,"tag":38,"props":6885,"children":6886},{},[6887],{"type":31,"value":6888},"JavaScriptの命令がほぼ使えるが、コード量節約のため、ショートハンドを使うとよい。 if文のかわりに→三項演算子…など。",{"type":26,"tag":38,"props":6890,"children":6891},{},[6892,6894,6900],{"type":31,"value":6893},"テストボタンの ",{"type":26,"tag":380,"props":6895,"children":6897},{"className":6896},[],[6898],{"type":31,"value":6899},"data-test = “命令文”",{"type":31,"value":6901}," を書き換えて、ボタン動作のテストができる。",{"type":26,"tag":805,"props":6903,"children":6905},{"id":6904},"アニメーションで画面に躍動感を与える",[6906],{"type":31,"value":6907},"③ アニメーションで画面に躍動感を与える",{"type":26,"tag":34,"props":6909,"children":6910},{},[6911,6931],{"type":26,"tag":38,"props":6912,"children":6913},{},[6914,6916,6922,6924,6930],{"type":31,"value":6915},"x関数の ",{"type":26,"tag":380,"props":6917,"children":6919},{"className":6918},[],[6920],{"type":31,"value":6921},"xanim(オブジェクト);",{"type":31,"value":6923}," でスライドの中の要素を時間を追って変化させることができる。アニメーションオブジェクトの書式は、anime.js に従う。戻り値は、",{"type":26,"tag":380,"props":6925,"children":6927},{"className":6926},[],[6928],{"type":31,"value":6929},"xa",{"type":31,"value":6722},{"type":26,"tag":38,"props":6932,"children":6933},{},[6934],{"type":31,"value":6935},"Wick Editor というフリーのWebアプリで手軽に Gifアニメ を作ることができる。軽量化して使うとよい。",{"type":26,"tag":805,"props":6937,"children":6939},{"id":6938},"同じフォルダのsocsagaファイルを-x関数で呼び出しクラス全員で共同制作する",[6940],{"type":31,"value":6941},"④ 同じフォルダのSocSagaファイルを x関数で呼び出し、クラス全員で共同制作する",{"type":26,"tag":34,"props":6943,"children":6944},{},[6945,6974],{"type":26,"tag":38,"props":6946,"children":6947},{},[6948,6950,6956,6958,6964,6966,6972],{"type":31,"value":6949},"game03.html のスライド10番で ",{"type":26,"tag":380,"props":6951,"children":6953},{"className":6952},[],[6954],{"type":31,"value":6955},"xborrow(game05);",{"type":31,"value":6957}," を実行すると、game05.htmlが呼び出され、",{"type":26,"tag":380,"props":6959,"children":6961},{"className":6960},[],[6962],{"type":31,"value":6963},"xback();",{"type":31,"value":6965}," で game03.html のスライド11番に戻る。",{"type":26,"tag":380,"props":6967,"children":6969},{"className":6968},[],[6970],{"type":31,"value":6971},"xbuy(game07);",{"type":31,"value":6973}," を実行すると、game07.htmlに接続する（戻ってこない）。",{"type":26,"tag":38,"props":6975,"children":6976},{},[6977,6983,6985,6991,6992,6998,7000],{"type":26,"tag":380,"props":6978,"children":6980},{"className":6979},[],[6981],{"type":31,"value":6982},"xborrow",{"type":31,"value":6984},"、",{"type":26,"tag":380,"props":6986,"children":6988},{"className":6987},[],[6989],{"type":31,"value":6990},"xback",{"type":31,"value":6984},{"type":26,"tag":380,"props":6993,"children":6995},{"className":6994},[],[6996],{"type":31,"value":6997},"xbuy",{"type":31,"value":6999}," で他のファイルを呼び出すとき、次の x変数の値は引き継がれる。→ ",{"type":26,"tag":380,"props":7001,"children":7003},{"className":7002},[],[7004],{"type":31,"value":7005},"xs　xe　xt　xu　xuu[]",{"type":26,"tag":805,"props":7007,"children":7009},{"id":7008},"htmlファイル本体をカスタマイズhtmlcssjavascript-を書き換えする",[7010],{"type":31,"value":7011},"⑤ HTMLファイル本体をカスタマイズ（html・css・JavaScript を書き換え）する",{"type":26,"tag":34,"props":7013,"children":7014},{},[7015,7036,7049,7069],{"type":26,"tag":38,"props":7016,"children":7017},{},[7018,7020,7026,7028,7034],{"type":31,"value":7019},"文字の大きさ→ ",{"type":26,"tag":380,"props":7021,"children":7023},{"className":7022},[],[7024],{"type":31,"value":7025},"--fontvw: 1.5vw;",{"type":31,"value":7027},"　、",{"type":26,"tag":380,"props":7029,"children":7031},{"className":7030},[],[7032],{"type":31,"value":7033},"methods:",{"type":31,"value":7035}," に新しい x関数 を追加…など。",{"type":26,"tag":38,"props":7037,"children":7038},{},[7039,7041,7047],{"type":31,"value":7040},"スライド内容の一時的な変更は、x関数の ",{"type":26,"tag":380,"props":7042,"children":7044},{"className":7043},[],[7045],{"type":31,"value":7046},"xdisp(元の語,置換語,回数);",{"type":31,"value":7048}," で可能。",{"type":26,"tag":38,"props":7050,"children":7051},{},[7052,7054,7060,7061,7067],{"type":31,"value":7053},"SocPad以外で作ったHTMLは、原則SocPadでの編集はできないが、sectionタグ内に貼り付けることは可能。セキュリティ上の問題がなければ、iframeタグを使って他サイトのコンテンツを埋め込むことができる。",{"type":26,"tag":380,"props":7055,"children":7057},{"className":7056},[],[7058],{"type":31,"value":7059},"--framewidth",{"type":31,"value":6381},{"type":26,"tag":380,"props":7062,"children":7064},{"className":7063},[],[7065],{"type":31,"value":7066},"--frameheight",{"type":31,"value":7068},"で幅と高さを指定できる。",{"type":26,"tag":38,"props":7070,"children":7071},{},[7072],{"type":31,"value":7073},"無料ソフトでもCG作成ができる。Blender で3Dモデルを、Effekseer でビジュアルエフェクトを、Unity でアニメやゲームを作ることができる。Sketchfab などの CGコンテンツ共有サイトを利用することで、登録・公開ができる。",{"type":26,"tag":805,"props":7075,"children":7077},{"id":7076},"このような発展的な使い方により",[7078],{"type":31,"value":7076},{"type":26,"tag":27,"props":7080,"children":7081},{},[7082],{"type":31,"value":7083},"　プレゼンだけでなく、クイズ・アドベンチャーゲーム・脱出ゲーム・すごろくなども作れます。",{"type":26,"tag":54,"props":7085,"children":7087},{"id":7086},"socsagademo",[],{"type":26,"tag":90,"props":7089,"children":7091},{"id":7090},"まとめ-ソックサーガ-で-双方向性のあるコンテンツのプログラミング-はバッチリ",[7092],{"type":31,"value":7093},"【まとめ】 ソックサーガ で 双方向性のあるコンテンツのプログラミング はバッチリ！",{"type":26,"tag":27,"props":7095,"children":7096},{},[7097,7099,7106],{"type":31,"value":7098},"　ソックリッカー制作の経験を活かし、最新技術をふんだんに取りいれて作ったのが ",{"type":26,"tag":2292,"props":7100,"children":7101},{},[7102],{"type":26,"tag":285,"props":7103,"children":7104},{},[7105],{"type":31,"value":1590},{"type":31,"value":7107},"です。ローコードなので専門知識不要、「ディジタル作品づくり」＋α で取り組めます。５つの実習例とは違い、個性が出せるので評価しやすく、共同制作もできます。",{"type":26,"tag":54,"props":7109,"children":7110},{},[],{"type":26,"tag":27,"props":7112,"children":7113},{},[7114],{"type":31,"value":7115},"　他教科や行事のまとめ・発表を兼ねたテーマにすれば、時間数不足も解消されます。無料で、自校運用できて安心で、かゆいところに手が届くシステムは、そうそうないと自負しています。",{"type":26,"tag":54,"props":7117,"children":7118},{},[],{"type":26,"tag":27,"props":7120,"children":7121},{},[7122],{"type":31,"value":7123},"※ ページが表示されなければ、リロード（↻更新）してください。",{"type":26,"tag":27,"props":7125,"children":7126},{},[7127],{"type":31,"value":7128},"※【注意】Internet Explorer 以外のモダンブラウザー（Chrome,Firefox,Safari,…）で、横置き画面で見ること！",{"type":26,"tag":34,"props":7130,"children":7131},{},[7132,7143,7154,7165,7176],{"type":26,"tag":38,"props":7133,"children":7134},{},[7135,7136],{"type":31,"value":3166},{"type":26,"tag":42,"props":7137,"children":7140},{"href":7138,"rel":7139},"https:\u002F\u002Fkyodx.com\u002Fsshelp.html",[734],[7141],{"type":31,"value":7142},"🔗 ソックサーガで作った、「ソックサーガの紹介Webアプリ」",{"type":26,"tag":38,"props":7144,"children":7145},{},[7146,7147],{"type":31,"value":3166},{"type":26,"tag":42,"props":7148,"children":7151},{"href":7149,"rel":7150},"https:\u002F\u002Fkyodx.com\u002Fimg\u002Fsocsaga.pdf",[734],[7152],{"type":31,"value":7153},"🔗 ソックサーガの紹介（印刷用）",{"type":26,"tag":38,"props":7155,"children":7156},{},[7157,7158],{"type":31,"value":3166},{"type":26,"tag":42,"props":7159,"children":7162},{"href":7160,"rel":7161},"https:\u002F\u002Fkyodx.com\u002Fjisshu\u002Ftango.html",[734],[7163],{"type":31,"value":7164},"🔗 「英単語の発音チェックアプリ+AI作曲」",{"type":26,"tag":38,"props":7166,"children":7167},{},[7168,7169],{"type":31,"value":3166},{"type":26,"tag":42,"props":7170,"children":7173},{"href":7171,"rel":7172},"https:\u002F\u002Fkyodx.com\u002Fjisshu\u002Ftango2.html",[734],[7174],{"type":31,"value":7175},"🔗 「英単語の発音チェックアプリ+AI作曲」Ver2",{"type":26,"tag":38,"props":7177,"children":7178},{},[7179,7180],{"type":31,"value":3166},{"type":26,"tag":42,"props":7181,"children":7183},{"href":3169,"rel":7182},[734],[7184],{"type":31,"value":7185},"🔗 「英単語ゲーム SPELL QUEST」",{"type":26,"tag":54,"props":7187,"children":7189},{"id":7188},"js278",[],{"type":26,"tag":179,"props":7191,"children":7193},{"className":7192},[1207],[7194,7195,7208,7209],{"type":31,"value":1210},{"type":26,"tag":179,"props":7196,"children":7198},{"className":7197},[1214],[7199],{"type":26,"tag":42,"props":7200,"children":7203},{"target":1218,"rel":7201,"href":7202},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F26ba9fc2.c2fdf85a.26ba9fc3.8edde063\u002F_RTLink57027?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F15761369%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJ1cCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjAsImFtcCI6ZmFsc2V9",[7204],{"type":26,"tag":69,"props":7205,"children":7207},{"src":7206},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F3682\u002F9784297103682.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":7210,"children":7212},{"className":7211},[1231],[7213,7214,7224,7225,7244,7245,7282],{"type":31,"value":1234},{"type":26,"tag":179,"props":7215,"children":7217},{"className":7216},[1238],[7218],{"type":26,"tag":42,"props":7219,"children":7221},{"target":1218,"rel":7220,"href":7202},[1220],[7222],{"type":31,"value":7223},"JavaScriptコードレシピ集 スグに使えるテクニック278　[ 池田泰延 ]",{"type":31,"value":1234},{"type":26,"tag":179,"props":7226,"children":7228},{"className":7227},[1250],[7229,7232,7234,7237,7239,7242],{"type":26,"tag":54,"props":7230,"children":7231},{},[],{"type":31,"value":7233},"※ Web標準技術は時代とともに進歩しています。",{"type":26,"tag":54,"props":7235,"children":7236},{},[],{"type":31,"value":7238},"ハダノは、jQueryからVue.jsに移行したとき、「イマドキのJavaScriptはこう書くんだ！」とカルチャーショックを受けました。",{"type":26,"tag":54,"props":7240,"children":7241},{},[],{"type":31,"value":7243},"この本は、実践的な最新テクニックを網羅的に学ぶのに役立ちます。",{"type":31,"value":1234},{"type":26,"tag":179,"props":7246,"children":7248},{"className":7247},[1266,1267],[7249,7250,7259,7260,7270,7271,7281],{"type":31,"value":1270},{"type":26,"tag":179,"props":7251,"children":7252},{},[7253],{"type":26,"tag":42,"props":7254,"children":7257},{"className":7255,"target":1218,"rel":7256,"href":7202},[1277,1278],[1220],[7258],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":7261,"children":7262},{},[7263],{"type":26,"tag":42,"props":7264,"children":7268},{"className":7265,"target":1218,"rel":7266,"href":7267},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4297103680",[7269],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":7272,"children":7273},{},[7274],{"type":26,"tag":42,"props":7275,"children":7279},{"className":7276,"target":1218,"rel":7277,"href":7278},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fpaypaymall.yahoo.co.jp%2Fstore%2Fboox%2Fitem%2Fbk-4297103680%2F%3Fsc_i%3Dshp_pc_search_itemlist_shsrg_title",[7280],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"type":26,"tag":54,"props":7284,"children":7285},{},[],{"type":26,"tag":319,"props":7287,"children":7288},{},[],{"type":26,"tag":27,"props":7290,"children":7291},{},[7292],{"type":26,"tag":42,"props":7293,"children":7294},{"href":5238},[7295],{"type":31,"value":7296},"次へ→　ソックサーガの始め方【自校運用】",{"title":8,"searchDepth":324,"depth":324,"links":7298},[7299,7303],{"id":6150,"depth":324,"text":6153,"children":7300},[7301,7302],{"id":6195,"depth":362,"text":6198},{"id":6214,"depth":362,"text":6214},{"id":6282,"depth":324,"text":6285,"children":7304},[7305,7306,7307,7308,7309],{"id":6288,"depth":362,"text":6291},{"id":6321,"depth":362,"text":6324},{"id":6450,"depth":362,"text":6453},{"id":6603,"depth":362,"text":6606},{"id":7090,"depth":362,"text":7093},"content:articles:socsaga-1.md","articles\u002Fsocsaga-1.md","articles\u002Fsocsaga-1",{"_path":4990,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":7314,"description":7315,"category":7316,"tag":7317,"thumbnail":7320,"createdAt":7321,"updatedAt":7322,"body":7323,"_type":1519,"_id":7812,"_source":1521,"_file":7813,"_stem":7814,"_extension":1524},"ハダノのプログラミング遍歴","ハダノがプログラミングに出会ってから教育に活用するようになるまでの過程をざっと振り返り",[12],[15,3996,7318,5743,1529,1530,7319],"nurpa","sf","vscodesoc.jpg","2022\u002F4\u002F28","2022\u002F6\u002F1",{"type":23,"children":7324,"toc":7789},[7325,7330,7333,7339,7344,7349,7355,7360,7366,7371,7376,7381,7384,7389,7392,7398,7403,7408,7414,7428,7441,7444,7450,7455,7460,7465,7470,7475,7480,7494,7499,7504,7509,7514,7518,7524,7529,7542,7547,7550,7556,7561,7584,7597,7602,7608,7613,7618,7623,7628,7633,7636,7642,7648,7653,7658,7663,7666,7672,7675,7681,7684,7690,7693,7696],{"type":26,"tag":27,"props":7326,"children":7327},{},[7328],{"type":31,"value":7329},"　この記事では、サンデープログラマとしてのハダノについて、（記憶をたどりながらぼちぼち）紹介していきます。",{"type":26,"tag":54,"props":7331,"children":7332},{},[],{"type":26,"tag":58,"props":7334,"children":7336},{"id":7335},"コンピューティング-プログラミング-の時代",[7337],{"type":31,"value":7338},"コンピューティング ＝ プログラミング の時代",{"type":26,"tag":90,"props":7340,"children":7342},{"id":7341},"プログラマブル関数電卓から",[7343],{"type":31,"value":7341},{"type":26,"tag":27,"props":7345,"children":7346},{},[7347],{"type":31,"value":7348},"　大学生協の新入生向けフェアで、「理系学部生の必需品」として紹介されていた関数電卓を購入しました。ポケットコンピュータという愛称で、ビープ音で「エリーゼのために」を演奏するプログラムを打ち込んだり、宇宙戦艦ゲームを作ったりしました。プログラミングの楽しさにはじめて触れました。",{"type":26,"tag":90,"props":7350,"children":7352},{"id":7351},"メインフレームはfortranで",[7353],{"type":31,"value":7354},"メインフレームはFortranで",{"type":26,"tag":27,"props":7356,"children":7357},{},[7358],{"type":31,"value":7359},"　1年半の教養課程を終え、専門課程に移ると、実験・実習で夜遅くなることが多くなりました。データ解析に大学のメインフレームを使わせてもらうこともありました。Fortranという科学技術計算用の言語でプログラムを組み、カードの束を読み込ませて処理していました。4年生になると、TSS端末で画面を見ながらキーボードで入力できるようになるのでした。",{"type":26,"tag":90,"props":7361,"children":7363},{"id":7362},"_8ビットのマイコンピュータ",[7364],{"type":31,"value":7365},"8ビットのマイコンピュータ",{"type":26,"tag":27,"props":7367,"children":7368},{},[7369],{"type":31,"value":7370},"　個人用の小型コンピュータが「マイコン」と呼ばれていたころ、NEC PC-6001 というお手頃価格のマシンを購入しました。中古のTVをつなぎ、カセットテープにデータを保存しました。時間制限なくコンピュータが使えて興奮したのを覚えています。",{"type":26,"tag":27,"props":7372,"children":7373},{},[7374],{"type":31,"value":7375},"　当時は、ソフトウェア販売は普及していなかったので、コンピュータを使うためには、プログラムを打ち込む必要がありました。マイコン雑誌のプログラムリストを打ち込んだり、改造したりしてゲームなどを楽しむのが一般的でした。",{"type":26,"tag":27,"props":7377,"children":7378},{},[7379],{"type":31,"value":7380},"　ハダノは、そのほかに数理生物学で使うFortranプログラムをBASICに移植したり、簡単な音楽ソフトやお絵描きソフトを作ったりしました。3次スプライン関数をBASICで組んだら遅すぎ、Z80機械語で高速化したこともありました。",{"type":26,"tag":54,"props":7382,"children":7383},{},[],{"type":26,"tag":27,"props":7385,"children":7386},{},[7387],{"type":31,"value":7388},"　教員採用試験の面接で「プラネタリウムなどコンピュータを活用した授業をしたい」と答えたハダノでしたが、8ビットの時代は学級通信の印刷に少し使う程度でした。漢字フォントがなかったので、方眼紙に点を打って必要な分を自作していました。成績処理以外の実務では、ハンディワープロに負けていました。",{"type":26,"tag":54,"props":7390,"children":7391},{},[],{"type":26,"tag":58,"props":7393,"children":7395},{"id":7394},"ms-dos-windows-の時代",[7396],{"type":31,"value":7397},"MS-DOS ～ Windows の時代",{"type":26,"tag":90,"props":7399,"children":7401},{"id":7400},"国産16ビットコンピュータ",[7402],{"type":31,"value":7400},{"type":26,"tag":27,"props":7404,"children":7405},{},[7406],{"type":31,"value":7407},"　2校目のとき（1980年代後半）、16ビットコンピュータを手に入れました。内蔵BASICでOS機能も開発もこなすのではなく、OS機能はMS-DOS、開発はC言語と役割分担したのです。国産機は漢字ROMを内蔵しており、ワープロや表計算などのソフトウェア販売も広がり始めました。",{"type":26,"tag":90,"props":7409,"children":7411},{"id":7410},"ms-dos時代はプログラミング冬の時代",[7412],{"type":31,"value":7413},"MS-DOS時代は、プログラミング冬の時代",{"type":26,"tag":27,"props":7415,"children":7416},{},[7417,7419,7426],{"type":31,"value":7418},"　このころ、サンデープログラマの多くは壁に直面していました。これまで通りBASICでプログラミングすることはできましたが、主流はC言語でした。難解なうえに開発環境も整備されておらず、趣味としてのプログラミングは衰退の危機にありました。せいぜい、バッチ（または",{"type":26,"tag":42,"props":7420,"children":7423},{"href":7421,"rel":7422},"https:\u002F\u002Fponzmild.hatenablog.com\u002Fentry\u002F2017\u002F10\u002F29\u002F004625",[734],[7424],{"type":31,"value":7425},"sed,awk",{"type":31,"value":7427},"）を組んで市販ソフトを順番に動かすか、表計算ソフトのマクロ機能でプログラミング気分を味わうか、ぐらいでした。",{"type":26,"tag":27,"props":7429,"children":7430},{},[7431,7433,7439],{"type":31,"value":7432},"　そんなときに、生徒用コンピュータが導入されました。MS-DOSマシンの世界は、漢字ROM搭載で独自規格の国産機と汎用的なDOS\u002FV機が争い、混とんとしていました。",{"type":26,"tag":42,"props":7434,"children":7436},{"href":7435},"nurpa-2#hekiga",[7437],{"type":31,"value":7438},"「巨大ドット壁画」",{"type":31,"value":7440},"を作った1993年もそんな状態でした。ソフトウェア的には、7つほどの処理を組み合わせる必要があったのです。",{"type":26,"tag":54,"props":7442,"children":7443},{},[],{"type":26,"tag":90,"props":7445,"children":7447},{"id":7446},"windowsのradツールでビジュアルプログラミング",[7448],{"type":31,"value":7449},"WindowsのRADツールでビジュアルプログラミング",{"type":26,"tag":27,"props":7451,"children":7452},{},[7453],{"type":31,"value":7454},"　Windows3.1、windows95が現われ、キーボードからコマンドを打つ代わりにマウスで視覚的にソフトウェアを操作するようになりました。",{"type":26,"tag":27,"props":7456,"children":7457},{},[7458],{"type":31,"value":7459},"　Windowsでのプログラミングも、視覚的にできるようになりました。RAD（ラピッド・アプリケーション・デベロップメント）ツールの登場です。GUI部品をペタペタと貼り付け、ユーザーの操作に応じたコードを書くだけなので簡単でした。Visual Basic というビジュアルプログラミング向けのBASICがすっかり気に入りました。メインルーチンのない、イベントドリブンのプログラミングスタイルにもやがて慣れました。",{"type":26,"tag":90,"props":7461,"children":7463},{"id":7462},"西日本の理科教員研修会の講師に",[7464],{"type":31,"value":7462},{"type":26,"tag":27,"props":7466,"children":7467},{},[7468],{"type":31,"value":7469},"　「ハダノ先生はコンピュータが得意らしい」という噂が広まり、教員研修や公民館講座の講師として呼ばれるようになりました。そこで強調したのは、「コンピュータが得意になりたければ、プログラミングをしなさい」ということです。「料理の歴史、テーブルマナーやおいしい料理店」をいくら知っていても、調理ができなければ「料理が得意」とは言えないはずです。",{"type":26,"tag":27,"props":7471,"children":7472},{},[7473],{"type":31,"value":7474},"　西日本の理科教員研修会の講師に指名されたときも、マジックナース「レイアウト」というSF仕立ての人体内アドベンチャーゲームを参加者に作らせることにしました。Visual Basic でアドベンチャー用の簡易言語を作っておき、サンプルゲームをもとに参加者に続きのシナリオを作成させるというものです。画像の連続表示でアニメーションもでき、大きな手ごたえを得ました。\n　",{"type":26,"tag":90,"props":7476,"children":7478},{"id":7477},"インターネット部顧問に",[7479],{"type":31,"value":7477},{"type":26,"tag":27,"props":7481,"children":7482},{},[7483,7485,7492],{"type":31,"value":7484},"　公務災害で左腕に障害を負い、「人生終わった」と落ち込んでいたハダノは、ハダノ校長の勧めでインターネット部を作りました。",{"type":26,"tag":42,"props":7486,"children":7489},{"href":7487,"rel":7488},"https:\u002F\u002Fjiten.com\u002Fdicmi\u002Fdocs\u002Fk10\u002F16367s.htm",[734],[7490],{"type":31,"value":7491},"こねっとプラン",{"type":31,"value":7493},"参加校になり、ホームページを作ったり、他の学校と交流したりしました。1997年6月19日の「こねっと・特別セミナー」では、全国4校の質問校に選ばれました。講師のビル・ゲイツ氏に、NTTのマルチメディア会議システムで次の質問をぶつけました。",{"type":26,"tag":27,"props":7495,"children":7496},{},[7497],{"type":31,"value":7498},"Q: 「インターネットはからっぽの洞窟」という本に書いてあることは本当ですか？",{"type":26,"tag":27,"props":7500,"children":7501},{},[7502],{"type":31,"value":7503},"　それに対して、ゲイツ氏は",{"type":26,"tag":27,"props":7505,"children":7506},{},[7507],{"type":31,"value":7508},"A: いつの時代にも新しいメディアに対して否定的な人はいます。道具はその特性を理解して使うことが大切です。インターネットを中身の豊かな百科事典にするために、力を合わせていきましょう。",{"type":26,"tag":27,"props":7510,"children":7511},{},[7512],{"type":31,"value":7513},"と、丁寧に答えてくれました。",{"type":26,"tag":54,"props":7515,"children":7517},{"id":7516},"multimedia",[],{"type":26,"tag":90,"props":7519,"children":7521},{"id":7520},"マルチメディア作品コンテストで",[7522],{"type":31,"value":7523},"マルチメディア作品コンテストで🏆！！",{"type":26,"tag":27,"props":7525,"children":7526},{},[7527],{"type":31,"value":7528},"　国民文化祭のマルチメディア部門で作品コンテストが開催され、インターネット部も一般の参加者にまじって、プレ・本番それぞれに出品しました。プレ国民文化祭では、かぐや姫のパロディ紙芝居で第2位を獲得しました。",{"type":26,"tag":27,"props":7530,"children":7531},{},[7532,7534,7540],{"type":31,"value":7533},"　「今度こそ優勝を」という思いで部員一丸となって臨んだ国民文化祭には、「クローン戦隊ドリーマーズ」を出品しました。マジックナース「レイアウト」のときに作った簡易言語をJavaに移植し、最新生物学の知見を盛り込んだSFアドベンチャーゲームに仕上げました。「容量１MB以内かつWeb上で見られるもの」という条件をクリアするのに苦労しましたが、見事グランプリを獲得しました。ごほうびは、PC1台とマルチメディアフェスティバルへの招待でした。インターネット部全員で、",{"type":26,"tag":42,"props":7535,"children":7537},{"href":7536},"\u002Farticles\u002Fpopculture-gamemusic#oshii",[7538],{"type":31,"value":7539},"🔗押井守監督の記念講演",{"type":31,"value":7541}," を聞きました。",{"type":26,"tag":69,"props":7543,"children":7546},{"src":7544,"alt":7545,"width":472},"\u002Fimg\u002Fdolly.svg","クローン戦隊ドリーマーズ",[],{"type":26,"tag":54,"props":7548,"children":7549},{},[],{"type":26,"tag":90,"props":7551,"children":7553},{"id":7552},"wsh-で-rpa-をめざしたタイアップ",[7554],{"type":31,"value":7555},"WSH で RPA をめざした「タイアップ」",{"type":26,"tag":27,"props":7557,"children":7558},{},[7559],{"type":31,"value":7560},"　Windowsは視覚的な操作ができて便利な反面、定型的な操作では弱点を抱えていました。何をするにもいちいちマウスを動かす必要があったのです。マクロやショートカットキーで、ある程度スピードアップできますが、ソフトを組み合わせて動かすのは困難でした。",{"type":26,"tag":27,"props":7562,"children":7563},{},[7564,7566,7573,7575,7582],{"type":31,"value":7565},"　IE（インターネット エクスプローラ）用のスクリプトをWindows上で実行できるようにした ",{"type":26,"tag":42,"props":7567,"children":7570},{"href":7568,"rel":7569},"https:\u002F\u002Fe-words.jp\u002Fw\u002FWSH.html",[734],[7571],{"type":31,"value":7572},"WSH（ウィンドウズ スクリプト ホスト）",{"type":31,"value":7574},"が、Windows98から使えるようになりました。これをうまく使えば、人がへばりついてなくても自動実行できる",{"type":26,"tag":42,"props":7576,"children":7579},{"href":7577,"rel":7578},"https:\u002F\u002Fwww.nri.com\u002Fjp\u002Fknowledge\u002Fglossary\u002Flst\u002Falphabet\u002Frpa",[734],[7580],{"type":31,"value":7581},"RPA（ロボティック プロセス オートメーション）",{"type":31,"value":7583},"が実現できるはずです。",{"type":26,"tag":27,"props":7585,"children":7586},{},[7587,7588,7595],{"type":31,"value":976},{"type":26,"tag":42,"props":7589,"children":7592},{"href":7590,"rel":7591},"https:\u002F\u002Fwww.vector.co.jp\u002Fsoft\u002Fwin95\u002Futil\u002Fse099345.html",[734],[7593],{"type":31,"value":7594},"TieUp（あらゆるアプリとタイアップし、全自動処理を実現）",{"type":31,"value":7596},"というWSH強化用のフリーソフトをVectorで公開しました。Visual Basic で作った ActiveX DLLで、いろんなPC雑誌に紹介され、ユーザーは1万5千人に達しました。",{"type":26,"tag":27,"props":7598,"children":7599},{},[7600],{"type":31,"value":7601},"　しばらくは、VB系言語（Visual Basic,VBScript,VBA）による幸せなプログラミングライフが続きました。",{"type":26,"tag":90,"props":7603,"children":7605},{"id":7604},"猫の目のように変わるweb開発",[7606],{"type":31,"value":7607},"猫の目のように変わるWeb開発",{"type":26,"tag":27,"props":7609,"children":7610},{},[7611],{"type":31,"value":7612},"　国民文化祭'98のときは、Webでしっかりしたインタラクティブなコンテンツを作るには、Java Applet か Director くらいしか選択肢がありませんでした。クローン戦隊ドリーマーズを Java Applet で作ったのは、そういう理由があったのです。「オブジェクト指向」はなかなか手ごわかったと思います。※ Java Applet は2015年以降、ブラウザサポートが打ち切られて廃れました。",{"type":26,"tag":27,"props":7614,"children":7615},{},[7616],{"type":31,"value":7617},"　やがて Internet Explorer4 と Netscape Navigator4 によるブラウザ戦争が勃発しました。HTMLとCSSにJavaScriptを組み合わせてインタラクティブなコンテンツを作る「ダイナミックHTML」という技術が登場しましたが、ブラウザ間の互換性が乏しく、面倒くさいものでした。",{"type":26,"tag":27,"props":7619,"children":7620},{},[7621],{"type":31,"value":7622},"　2000年からの10年間は、Flash がWeb表現の中心でした。動画編集のようにタイムライン編集ができ、クリエイターたちの支持を集めていました。2005年ごろになると、Googleの Gmail や GoogleMap でも使われているAjaxを活用した軽量のサービスが注目されましたが、リッチな表現分野ではあいかわらずFlashでした。",{"type":26,"tag":27,"props":7624,"children":7625},{},[7626],{"type":31,"value":7627},"　このころのハダノは、Webでリッチなコンテンツを作る必要がなく、Flashは無視していました。「Webは、IE＋VBScriptで十分」「ローカルは、VB があるさ」と思っていました。ところが、インターネット対応で出遅れたマイクロソフトが、2002年に Visual Basic の大幅な仕様変更をしたのです。VB.NET 7.0 は、従来のVB 6.0 とは全くの別物でした。ローカルだけでなくWebでも動く、本格的なオブジェクト志向、Java や C＃ のような言語仕様……。Visual Basic Magazine などの雑誌は、「早くVB.NETへ乗り換えよう！」という記事のオンパレードです。VB 6.0 や エクセルVBA のノウハウが役に立たず、気軽さが失われたように感じ、ドットネット環境へ移行することをためらいました。ドットネット言語のうち、 C# と C++ は成功しましたが、 VB.NET は失敗だったのではないでしょうか。VB 6.0 は、2008年にサポート打ち切りになりました。",{"type":26,"tag":27,"props":7629,"children":7630},{},[7631],{"type":31,"value":7632},"　ちなみにハダノは2006年から、ローカル環境でのプログラミングに　Python も使うようになっていました。",{"type":26,"tag":54,"props":7634,"children":7635},{},[],{"type":26,"tag":58,"props":7637,"children":7639},{"id":7638},"html5-の時代",[7640],{"type":31,"value":7641},"HTML5 の時代",{"type":26,"tag":90,"props":7643,"children":7645},{"id":7644},"スマホが登場しflashが退場",[7646],{"type":31,"value":7647},"スマホが登場し、Flashが退場",{"type":26,"tag":27,"props":7649,"children":7650},{},[7651],{"type":31,"value":7652},"　2010年ごろから、Flashの人気が低下してきました。AppleがiPhoneでFlash Playerをサポートしないと宣言したのです。スマホが急速に普及したため、PCと共通のWebページづくりが求められるようになりました。「HTML5ならどのブラウザでもリッチな表現ができる」「もうFlashはいらない」と宣伝されました。HTML5+CSS3+JavaScript（ECMAScript5）という新しいWeb標準技術が今後のWeb開発の中心になるというのです。",{"type":26,"tag":27,"props":7654,"children":7655},{},[7656],{"type":31,"value":7657},"　AdobeはFlashの後継製品として、Edge Animate を出しましたが、3年ほどで積極的な開発を終了しました。※ Flash Player も2020年末にすべてサポート打ち切りになりました。",{"type":26,"tag":27,"props":7659,"children":7660},{},[7661],{"type":31,"value":7662},"　「Adobeに支配されたくない」Appleの目論見通りになったわけですが、スマホのHTML5対応は一足飛びには進みません。ハードウェアを最大限生かしたスマホゲームがはやり、ネイティブアプリが主役となりました。Web標準技術ではなく、機種に依存した開発になってしまったのです。Web技術で作られたOS（Firefox OSなど）のスマホに期待をかけていたハダノは、あきらめて2015年にペン入力のAndroidスマホを購入しました。「Webアプリがネイティブアプリを駆逐する日がいつか来る」と信じて……。",{"type":26,"tag":54,"props":7664,"children":7665},{},[],{"type":26,"tag":90,"props":7667,"children":7669},{"id":7668},"授業配信アプリソックリッカー",[7670],{"type":31,"value":7671},"授業配信アプリ「ソックリッカー」",{"type":26,"tag":54,"props":7673,"children":7674},{},[],{"type":26,"tag":90,"props":7676,"children":7678},{"id":7677},"プログラミングシステムソックサーガ",[7679],{"type":31,"value":7680},"プログラミングシステム「ソックサーガ」",{"type":26,"tag":54,"props":7682,"children":7683},{},[],{"type":26,"tag":90,"props":7685,"children":7687},{"id":7686},"全校ぬりえ自動化システムヌルパ",[7688],{"type":31,"value":7689},"全校ぬりえ自動化システム「ヌルパ」",{"type":26,"tag":54,"props":7691,"children":7692},{},[],{"type":26,"tag":54,"props":7694,"children":7695},{},[],{"type":26,"tag":179,"props":7697,"children":7699},{"className":7698},[1207],[7700,7701,7714,7715],{"type":31,"value":1210},{"type":26,"tag":179,"props":7702,"children":7704},{"className":7703},[1214],[7705],{"type":26,"tag":42,"props":7706,"children":7709},{"target":1218,"rel":7707,"href":7708},[1220],"https:\u002F\u002Fhb.afl.rakuten.co.jp\u002Fichiba\u002F26ba9fc2.c2fdf85a.26ba9fc3.8edde063\u002F_RTLink57027?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F13307159%2F&link_type=hybrid_url&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJ1cCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MCwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjAsInByb2QiOjAsImFtcCI6ZmFsc2V9",[7710],{"type":26,"tag":69,"props":7711,"children":7713},{"src":7712},"https:\u002F\u002Fthumbnail.image.rakuten.co.jp\u002F@0_mall\u002Fbook\u002Fcabinet\u002F4220\u002F9784844374220.jpg?_ex=240x240",[],{"type":31,"value":1210},{"type":26,"tag":179,"props":7716,"children":7718},{"className":7717},[1231],[7719,7720,7730,7731,7750,7751,7788],{"type":31,"value":1234},{"type":26,"tag":179,"props":7721,"children":7723},{"className":7722},[1238],[7724],{"type":26,"tag":42,"props":7725,"children":7727},{"target":1218,"rel":7726,"href":7708},[1220],[7728],{"type":31,"value":7729},"最速の仕事術はプログラマーが知っている [ 清水亮 ]",{"type":31,"value":1234},{"type":26,"tag":179,"props":7732,"children":7734},{"className":7733},[1250],[7735,7738,7740,7743,7745,7748],{"type":26,"tag":54,"props":7736,"children":7737},{},[],{"type":31,"value":7739},"※ 世界的なビジネスリーダーにプログラマーあがりの人が多い理由がわかる本です。",{"type":26,"tag":54,"props":7741,"children":7742},{},[],{"type":31,"value":7744},"「プログラミングにこだわりすぎ」と批判されるハダノに清水亮さんはいつも勇気をくれます。",{"type":26,"tag":54,"props":7746,"children":7747},{},[],{"type":31,"value":7749},"プログラミング的思考は、働き方改革にも効きます。",{"type":31,"value":1234},{"type":26,"tag":179,"props":7752,"children":7754},{"className":7753},[1266,1267],[7755,7756,7765,7766,7776,7777,7787],{"type":31,"value":1270},{"type":26,"tag":179,"props":7757,"children":7758},{},[7759],{"type":26,"tag":42,"props":7760,"children":7763},{"className":7761,"target":1218,"rel":7762,"href":7708},[1277,1278],[1220],[7764],{"type":31,"value":1282},{"type":31,"value":1284},{"type":26,"tag":179,"props":7767,"children":7768},{},[7769],{"type":26,"tag":42,"props":7770,"children":7774},{"className":7771,"target":1218,"rel":7772,"href":7773},[1277,1291],[1220],"https:\u002F\u002Faf.moshimo.com\u002Faf\u002Fc\u002Fclick?a_id=3539938&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2FB011UFDIZM",[7775],{"type":31,"value":1296},{"type":31,"value":1284},{"type":26,"tag":179,"props":7778,"children":7779},{},[7780],{"type":26,"tag":42,"props":7781,"children":7785},{"className":7782,"target":1218,"rel":7783,"href":7784},[1277,1304],[1220],"https:\u002F\u002Fck.jp.ap.valuecommerce.com\u002Fservlet\u002Freferral?sid=3651993&pid=887947441&vc_url=https%3A%2F%2Fpaypaymall.yahoo.co.jp%2Fstore%2Fboox%2Fitem%2Fbk-4844374222%2F%3Fsc_i%3Dshp_pc_search_itemlist_shsrg_title",[7786],{"type":31,"value":1309},{"type":31,"value":1234},{"type":31,"value":1210},{"title":8,"searchDepth":324,"depth":324,"links":7790},[7791,7796,7806],{"id":7335,"depth":324,"text":7338,"children":7792},[7793,7794,7795],{"id":7341,"depth":362,"text":7341},{"id":7351,"depth":362,"text":7354},{"id":7362,"depth":362,"text":7365},{"id":7394,"depth":324,"text":7397,"children":7797},[7798,7799,7800,7801,7802,7803,7804,7805],{"id":7400,"depth":362,"text":7400},{"id":7410,"depth":362,"text":7413},{"id":7446,"depth":362,"text":7449},{"id":7462,"depth":362,"text":7462},{"id":7477,"depth":362,"text":7477},{"id":7520,"depth":362,"text":7523},{"id":7552,"depth":362,"text":7555},{"id":7604,"depth":362,"text":7607},{"id":7638,"depth":324,"text":7641,"children":7807},[7808,7809,7810,7811],{"id":7644,"depth":362,"text":7647},{"id":7668,"depth":362,"text":7671},{"id":7677,"depth":362,"text":7680},{"id":7686,"depth":362,"text":7689},"content:articles:hadano.md","articles\u002Fhadano.md","articles\u002Fhadano",1791852904839]