tag:crieit.net,2005:https://crieit.net/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed 「プログラミング」の記事 - Crieit Crieitでタグ「プログラミング」に投稿された最近の記事 2023-01-27T01:48:51+09:00 https://crieit.net/tags/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed tag:crieit.net,2005:PublicArticle/18377 2023-01-25T20:40:52+09:00 2023-01-27T01:48:51+09:00 https://crieit.net/posts/Excel-VBA-63d11544ba099 【実況ブログ】 Excel VBAで初めてのプログラミングを覚えようぜ(^~^)? <h1 id="📅2023-01-25 mon 19:15 start"><a href="#%F0%9F%93%852023-01-25+mon+19%3A15+start">📅2023-01-25 mon 19:15 start</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 Excel を購入しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 してるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/7d2e6ce5359b68c2fbfc93128857ccd863d102e696019.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7d2e6ce5359b68c2fbfc93128857ccd863d102e696019.png?mw=700" alt="202301_excel_25-1920--sheet.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これを使って、プログラミングを覚えてもらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 現代の Excel は チューリング完全らしいですしね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ Excel で チューリング・マシンを作るのか?<br /> 無限のテープをどう表現する?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 テープが足りなくなったら 強制終了すればいいだろ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://en.wikipedia.org/wiki/Turing_machine">Turing machine</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 例題は Wikipedia を参考にしようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/a7bee6a2939b3d27802fa74666966e4e63d10ccb8eaa1.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a7bee6a2939b3d27802fa74666966e4e63d10ccb8eaa1.png?mw=700" alt="202301_excel_25-2002--StateTable.png" /></a></p> <p><code>[TuringMachineByExcelVBA.xlsm] file - [StateTable] sheet</code>:</p> <pre><code class="csv">State,Read,Write,Move,Transition A,White,Orange,>,B A,Orange,Orange,<,C B,White,Orange,<,A B,Orange,Orange,>,B C,White,Orange,<,B C,Orange,Orange,>,HALT </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 とりあえず <code>StateMachine</code> シートを作れだぜ。<br /> セルに色も塗れだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 このシートが何かの説明はしないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 手を動かせば あとで分かる」</p> <p><a href="https://crieit.now.sh/upload_images/2bd8e45ab2cf441bd6fbd64b9fb1440863d10dc15985e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2bd8e45ab2cf441bd6fbd64b9fb1440863d10dc15985e.png?mw=700" alt="202301_excel_25-2008--Tape.png" /></a></p> <p><code>[TuringMachineByExcelVBA.xlsm] file - [Tape] sheet</code>:</p> <pre><code class="csv">A </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 もう1つ、 <code>Tape</code> シートを作れだぜ。<br /> <code>A</code> の1文字だけ入っている」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 これは何なんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あとで分かる」</p> <p><a href="https://crieit.now.sh/upload_images/5be4add46fc7c8f5a3ff33285bc455d163d10f482920b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5be4add46fc7c8f5a3ff33285bc455d163d10f482920b.png?mw=700" alt="202301_excel_25-2014--OpenCode-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 空っぽの <code>GUI</code> というシートを作って、<br /> メインメニューから <code>[開発] - [コードの表示]</code> を選べだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8e5c6787ff6884ae25742bf5316c659b63d10fc7a71bd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8e5c6787ff6884ae25742bf5316c659b63d10fc7a71bd.png?mw=700" alt="202301_excel_25-2017--VBAEditor.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 VBA のエディターが出てくるな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 あの 不便なやつね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ほんと 不便だな。 シートに戻るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e8e85792d662411ad13e424c8571f5b763d11114d4f20.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e8e85792d662411ad13e424c8571f5b763d11114d4f20.png?mw=700" alt="202301_excel_25-2021--Button-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 先に ボタンを置こうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/43e7f5d13408af482856786fd1e9570b63d111bad4d9e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/43e7f5d13408af482856786fd1e9570b63d111bad4d9e.png?mw=700" alt="202301_excel_25-2024--PutButton-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 何だか よくわからないが <code>ボタン1_Click</code> という名前はそのまんまで<br /> マクロの保存先を 今作業中のファイルに変えて、 <code>[新規作成(N)]</code> ボタンを押そうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 Excel の使い方を記憶してないの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プログラマーは 記憶 ではなく、 <strong>読み</strong> で進むのよ。<br /> その方が 応用が利くから」</p> <p><a href="https://crieit.now.sh/upload_images/7fc9f87fe1c8e6ad26d268f24fc9812f63d112c4a2e30.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7fc9f87fe1c8e6ad26d268f24fc9812f63d112c4a2e30.png?mw=700" alt="202301_excel_25-2029--CreateButton-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ボタンがでけてる。<br /> 当たった」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 当たった とか 講師から出てきたらおかしい言葉 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/a9682e7b76b5ec11dd96a83993301a8b63d11393ae7ea.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a9682e7b76b5ec11dd96a83993301a8b63d11393ae7ea.png?mw=700" alt="202301_excel_25-2032--RegisterMacro-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ボタンを右クリックして コンテキスト・メニューの <code>[マクロの登録(N)]</code> を<br /> クリックしてみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/ff5836d7acb5395226ed608bce8df05a63d114270be35.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff5836d7acb5395226ed608bce8df05a63d114270be35.png?mw=700" alt="202301_excel_25-2035--Ok-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 何をすればいいのか分からん。 <code>[OK]</code> ボタンを押してみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/995318528394eec0b95b7eac406e1ace63d1149283db7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/995318528394eec0b95b7eac406e1ace63d1149283db7.png?mw=700" alt="202301_excel_25-2037--Code.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ?<br /> 何が起こった?」</p> <p><a href="https://crieit.now.sh/upload_images/4127845072bc324880940de1cf50593763d114ef2b8ba.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4127845072bc324880940de1cf50593763d114ef2b8ba.png?mw=700" alt="202301_excel_25-2038--Skeleton-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 👆 なんか コードが増えてるのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 よっしゃ!<br /> じゃあ そこに VBA Script (ぶい・びー・えー・すくりぷと)を書けばいいんだぜ」</p> <p>📅 2023-01-25 wed 20:41</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA セルに値を入れる</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/prog/prog_atai.html">セルに値を入れる:Excel VBA プログラミング入門</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/8bedf851dc72c6806bd384e10b70508e63d116df021a7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8bedf851dc72c6806bd384e10b70508e63d116df021a7.png?mw=700" alt="202301_excel_25-2046--HelloWorld-1.png" /></a></p> <pre><code class="vba">Worksheets("GUI").Range("A1").Value = "Hello, world!!" </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じに書けば <code>GUI</code> シートの <code>A1</code> セルに <code>Hello, world!!</code> という文字を<br /> 入れてくれそうだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ボタンを押そうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/ea960374c712c2d05121e25ea27ea9cc63d11794cb716.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ea960374c712c2d05121e25ea27ea9cc63d11794cb716.png?mw=700" alt="202301_excel_25-2049--ShowHelloWorld-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ほら 出た」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 <code>Excelでハローワールドを出力する</code> の実績を解除したな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ次。<br /> 🔍 <code>VBA セルに色を付ける</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.tipsfound.com/vba/07006">セルに色を設定する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ab3f6398046ba32df211de0534339eb163d1190f3e6d6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ab3f6398046ba32df211de0534339eb163d1190f3e6d6.png?mw=700" alt="202301_excel_25-2056--BackgroundColor-1.png" /></a></p> <pre><code class="vba">Worksheets("GUI").Range("A1").Interior.ColorIndex = 45 ' オレンジ </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じに書けば <code>GUI</code> シートの <code>A1</code> セルの背景色をオレンジ色に<br /> してくれそうだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ボタンを押そうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/ed751568c624bbe3c65a037eb56fccf663d11972c76a3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ed751568c624bbe3c65a037eb56fccf663d11972c76a3.png?mw=700" alt="202301_excel_25-2057--ShowBackgroundColor-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 A1 セルに色が付いたな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 着色の自動化に使えそうねえ」</p> <p><a href="https://crieit.now.sh/upload_images/d3954444815536359e16f3966743a8c963d11c0290ab2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d3954444815536359e16f3966743a8c963d11c0290ab2.png?mw=700" alt="202301_excel_25-2108--GetColor-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ、 <code>StateTable</code> シートの C2 セルの背景色が何色かとか、取得することはできるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA セルの色を取得</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.tipsfound.com/vba/07005">VBA セルの色を取得する (Interior.Color, ColorIndex)</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/54dd3efed1a31e73d04c267e53e17dac63d11e1182115.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/54dd3efed1a31e73d04c267e53e17dac63d11e1182115.png?mw=700" alt="202301_excel_25-2117--CopyColor-1.png" /></a></p> <pre><code class="vba"> Dim backgroundColor As Long backgroundColor = Worksheets("StateTable").Range("C2").Interior.color ' 背景色 Debug.Print (backgroundColor) Worksheets("GUI").Range("A1").Interior.color = backgroundColor </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こう書けば <code>StateTable</code> シートの <code>C2</code> セルの背景色を、 <code>GUI</code> シートの <code>A1</code> セルへ コピーできるはずだぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 ボタンを押そうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/1568e0c8ce0e64297f4f75d776947c2963d11eb23fb6a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1568e0c8ce0e64297f4f75d776947c2963d11eb23fb6a.png?mw=700" alt="202301_excel_25-2120--ExecuteCopyColor-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 背景色は コピーでけたが……。<br /> <code>Debug.Print( ... )</code> って何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA デバッグプリント</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://tonari-it.com/excel-vba-debug-print/">【エクセルVBA】初心者のうちから知っておくべきDebug.Printの使い方</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <strong>イミディエイト・ウィンドウ</strong> に値を表示するらしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 イミディエイト・ウィンドウ って何だぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA イミディエイトウィンドウ</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.kenschool.jp/blog/?p=3430">イミディエイトウィンドウの使い方</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e6b3acf6e5aca1fc55867d968f4f342d63d120141a3d7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e6b3acf6e5aca1fc55867d968f4f342d63d120141a3d7.png?mw=700" alt="202301_excel_25-2125--Immediate-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <code>[Ctrl] + [G]</code> キーを打鍵すると 出てくるウィンドウだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 そんなウィンドウの出し方、 画面のどこを探しても 無くね?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 コンピューター開発者は <code>私には分かる。だからお前も分かるだろ</code> という脳をしてる人 多いのよ。<br /> 伝え、継承する精神を持っている人は リタイア組ぐらいよ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 天才が 技術を継承するの 損だしな。<br /> ネット上で 記事書いてるの リタイア組か、 業界が滅ぶ一歩手前で しかたなく 天才のケツ掃除してる人たちの どっちかだよな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 しかし <code>49407</code> なんて数字出てきても 嬉しくないな」</p> <p>📅 2023-01-25 wed 21:36</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ 次は長めの コンボ(Combo;連続技) やるから よく聴けだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/10533ade231776b7c34ab00bb9c960e063d12359726bf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/10533ade231776b7c34ab00bb9c960e063d12359726bf.png?mw=700" alt="202301_excel_25-2140--a1-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Tape</code> シートの <code>A1</code> セルに入っている値 <code>A</code> と、その背景色 白色 を取得して……」</p> <p><a href="https://crieit.now.sh/upload_images/21fadc22632f5e65a9da1a98a748e35563d123daa45b8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/21fadc22632f5e65a9da1a98a748e35563d123daa45b8.png?mw=700" alt="202301_excel_25-2142--seek-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>StateTable</code> シートの <code>State</code> 列に <code>A</code> が、<br /> <code>Read</code> 列に 背景色が白色のセルが<br /> 無いかなと探し……」</p> <p><a href="https://crieit.now.sh/upload_images/4f19e8287c402995d82464e71220ebe463d12458a2c1d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4f19e8287c402995d82464e71220ebe463d12458a2c1d.png?mw=700" alt="202301_excel_25-2142--seek-2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 見つけたら……」</p> <p><a href="https://crieit.now.sh/upload_images/55977720b323939598c8a932fa58ba7763d124a97cfd2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/55977720b323939598c8a932fa58ba7763d124a97cfd2.png?mw=700" alt="202301_excel_25-2142--seek-3.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 そのまま 横へスライドし、<br /> Write列 の背景色は オレンジ色、<br /> Move列 は <code>></code> 、<br /> Transition列 は <code>B</code><br /> と いったん覚え……」</p> <p><a href="https://crieit.now.sh/upload_images/9e508dc25de95f97970c4606d32134a463d1260a86ee0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9e508dc25de95f97970c4606d32134a463d1260a86ee0.png?mw=700" alt="202301_excel_25-2149--output-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Tape</code> シートを開き、<br /> A1 セルから 1行下にいったところを、 Write 列にあるように オレンジ色 に塗り、<br /> Move列が <code>></code> とあるように その右側に対して、<br /> Transition列があるように <code>B</code> を書き込もうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 長い」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 いったん <code>TuringMachineByExcelVBA.xlsm</code> ファイルを保存して閉じるぜ。<br /> 休憩だぜ」</p> <p>📅 2023-01-25 wed 22:10 stop</p> <p>📅 2023-01-25 wed 22:21 restart</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 よっしゃ 再開だぜ!<br /> <code>TuringMachineByExcelVBA.xlsm</code> ファイルを開けて、っと」</p> <p><a href="https://crieit.now.sh/upload_images/a5986e9999f216f44cf41643061082f963d12d3d41e93.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a5986e9999f216f44cf41643061082f963d12d3d41e93.png?mw=700" alt="202301_excel_25-2222--clear.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 消えてる!」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 よく探せだぜ!」</p> <p><a href="https://crieit.now.sh/upload_images/911081e91fc626fedc3222f61a52f6b063d12db90ab2f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/911081e91fc626fedc3222f61a52f6b063d12db90ab2f.png?mw=700" alt="202301_excel_25-2224--project-window-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 無い、無い、無い、<br /> どこにも 無~い!」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ファイルを開けるには、ダブル・クリック するんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/51fb39e17099b3f9fea0320e7586266d63d12e1966994.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/51fb39e17099b3f9fea0320e7586266d63d12e1966994.png?mw=700" alt="202301_excel_25-2226--double-click.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 あ、 有った」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ <code>Tape</code> シートの <code>A1</code> セルの値 <code>A</code> と背景色 白色 を取得して、<br /> そのタプル(Tuple;組み)が <code>StateTable</code> シートの何行目にあるか探し出して<br /> イミディエイト・ウィンドウに デバッグプリント するところまで やりましょう!」</p> <p><a href="https://crieit.now.sh/upload_images/aa9fb664e006bfd66d5afdddfecf45c063d12f44ec29c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aa9fb664e006bfd66d5afdddfecf45c063d12f44ec29c.png?mw=700" alt="202301_excel_25-2230--getValue-1.png" /></a></p> <pre><code class="vba">Sub ボタン1_Click() Dim text As String Dim backgroundColor As Long text = Worksheets("Tape").Range("A1").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("A1").Interior.color ' 背景色 Debug.Print (text) Debug.Print (backgroundColor) Worksheets("GUI").Range("A1").Value = text Worksheets("GUI").Range("A1").Interior.color = backgroundColor End Sub </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 値と 背景色のコピーは できるようになったが、<br /> 次は 探すというやつだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA For文</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/vba2013/04-for01.html">[Excel で VBA] For 文による繰り返し</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>For文</code> が何かの説明は しないのね」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 手を動かせば 分かるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5608b24b4b67d86711a4619d515748f563d1317277ca9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5608b24b4b67d86711a4619d515748f563d1317277ca9.png?mw=700" alt="202301_excel_25-2240--loop-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 多分 <code>StateTable</code> シートを 1行目から 7行目まで読むのは こんな雰囲気だろ。<br /> VBA の if 文ってどうやって書くんだったかな?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 記憶してないの わらう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA if文</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://office-hack.com/excel/if-vba/">ExcelのVBA(マクロ)でIf~Then~Elseを使って条件分岐する方法</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/55c377d1e72e453ee5954f4471aa3a9a63d133aea4cb7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/55c377d1e72e453ee5954f4471aa3a9a63d133aea4cb7.png?mw=700" alt="202301_excel_25-2249--if-then-else-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 多分 if文は こんな雰囲気だろ。<br /> Forループを途中で抜けるの VBAで どうやって書くんだったかな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 なんにも覚えてないんだな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA break文</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://uxmilk.jp/48591">Excel VBAでFor文を途中で抜ける:Exit</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <pre><code class="vba">Sub ボタン1_Click() Dim text As String Dim backgroundColor As Long text = Worksheets("Tape").Range("A1").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("A1").Interior.color ' 背景色 Debug.Print (text) Debug.Print (backgroundColor) Worksheets("GUI").Range("A1").Value = text Worksheets("GUI").Range("A1").Interior.color = backgroundColor Dim i As Long Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' セルの値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 背景色 ' 一致するか? If text = stateText And backgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' セルの値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' セルの値 Debug.Print (writeBackgroundColor) Debug.Print (moveText) Debug.Print (transitionText) ' TODO 次の処理へ Exit For End If Next i End Sub </code></pre> <p><a href="https://crieit.now.sh/upload_images/055ad87739413e7ce40cde35dc7e9bc363d135e9993df.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/055ad87739413e7ce40cde35dc7e9bc363d135e9993df.png?mw=700" alt="202301_excel_25-2257--find-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 取れてるぜ」</p> <p>📅 2023-01-25 wed 23:00</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 次は、<br /> <code>Tape</code> シートの A1 セルを スタート地点として、<br /> 1行 下りたセルの背景色を Write列のいう色に塗って、そこから<br /> Move 列が <code>></code> だったら その右のセルへ、 Transition 列のいうテキストを入れましょう」</p> <p><a href="https://crieit.now.sh/upload_images/6d424c48b1e3b97a5bdd13889698200363d1391f18557.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6d424c48b1e3b97a5bdd13889698200363d1391f18557.png?mw=700" alt="202301_excel_25-2310--write-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 こんな感じだろ」</p> <p><a href="https://crieit.now.sh/upload_images/c1ded23ca69e31848ab042beebc7d81a63d1395c1c5c8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c1ded23ca69e31848ab042beebc7d81a63d1395c1c5c8.png?mw=700" alt="202301_excel_25-2314--tape.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>Tape</code> シートの2行目を クリアーしておくぜ。<br /> そして <code>GUI</code> シートのボタンを押すぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e1df2e8107ce252e9c3a3120d8fa8df663d139f139a7d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e1df2e8107ce252e9c3a3120d8fa8df663d139f139a7d.png?mw=700" alt="202301_excel_25-2316--result-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 色も文字もコピーされたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 おつ。<br /> 長いコンボが決まったな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 これで 1クロック よね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 何だぜ それ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 次は 2クロック目に 行ってみようぜ?」</p> <p>📅 2023-01-25 wed 23:21</p> <p><a href="https://crieit.now.sh/upload_images/4a20812bd5c1a3fc61525e8d4e1e598463d13b29bab9f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4a20812bd5c1a3fc61525e8d4e1e598463d13b29bab9f.png?mw=700" alt="202301_excel_25-2321--2th-clock-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 B2 セルをスタート地点として、 同様に さっきと同じことを やればいいんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 嫌だぜ なんでそんなことをするんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ラジオ体操 みたいなもんよ。 頭を ほぐしてんのよ」</p> <p><a href="https://crieit.now.sh/upload_images/f21bba2889296010e5e957b6cd6612a863d13c296c3bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f21bba2889296010e5e957b6cd6612a863d13c296c3bc.png?mw=700" alt="202301_excel_25-2325--b-white-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 文字が <code>B</code> で、背景色が 白色 なのは 4行目だな。<br /> 下にオレンジ塗って 左へ A を書けばよさそうだな」</p> <p><a href="https://crieit.now.sh/upload_images/78e64f2f57b3fec52bb5592a96eff7c963d13eff66930.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/78e64f2f57b3fec52bb5592a96eff7c963d13eff66930.png?mw=700" alt="202301_excel_25-2337--time-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 説明するのを忘れていたが、上の行の背景色を、下の行へ 引き継ぐぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 忘れないでくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/75687cd8dc9973fb5a9d1c9436f4002263d13f9b620f9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/75687cd8dc9973fb5a9d1c9436f4002263d13f9b620f9.png?mw=700" alt="202301_excel_25-2340--time-b-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 下にオレンジ塗るぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0190cff67c269feba781ed9ff9d4c4b563d140e08a2db.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0190cff67c269feba781ed9ff9d4c4b563d140e08a2db.png?mw=700" alt="202301_excel_25-2346--time-c-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 左に A を書いたら こんな感じだな」</p> <p><a href="https://crieit.now.sh/upload_images/e2e349677ccb4abecf4a080e9c770deb63d14154d23b7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e2e349677ccb4abecf4a080e9c770deb63d14154d23b7.png?mw=700" alt="202301_excel_25-2348--Code.png" /></a></p> <pre><code class="vba">Sub ボタン1_Click() Dim text As String Dim backgroundColor As Long Dim i As Long Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String ' 1回目の処理 text = Worksheets("Tape").Range("A1").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("A1").Interior.color ' 背景色 For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' セルの値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 背景色 ' 一致するか? If text = stateText And backgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' セルの値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' セルの値 ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range("A2").Interior.color = writeBackgroundColor ' Move 列が `>` だったら その右のセルへ、 Transition 列のいうテキストを入れる If moveText = ">" Then Worksheets("Tape").Range("B2").Value = transitionText End If Exit For End If Next i ' TODO ★ 同様の2回目の処理 text = Worksheets("Tape").Range("B2").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("B2").Interior.color ' 背景色 ' ★ 上の行の背景色は引き継ぐ Worksheets("Tape").Range("A3").Interior.color = Worksheets("Tape").Range("A2").Interior.color Worksheets("Tape").Range("B3").Interior.color = Worksheets("Tape").Range("B3").Interior.color For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' セルの値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 背景色 ' 一致するか? If text = stateText And backgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' セルの値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' セルの値 ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range("B3").Interior.color = writeBackgroundColor ' ★ Move 列が `<` だったら その左のセルへ、 Transition 列のいうテキストを入れる If moveText = "<" Then Worksheets("Tape").Range("A3").Value = transitionText End If Exit For End If Next i End Sub </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 それを コードにしたら こんな感じだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 長い」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 これで 2クロック よね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 何だぜ それ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 次は 3クロック目に 行ってみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 嫌だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 今日は ここまでとするが、 3クロック目 行くからな」</p> <p>📅 2023-01-25 wed 23:51 end</p> <h1 id="📅2023-01-26 thu 18:53 start"><a href="#%F0%9F%93%852023-01-26+thu+18%3A53+start">📅2023-01-26 thu 18:53 start</a></h1> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 VBA でサブルーチンは どうやって書いたらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA サブルーチン</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://kosapi.com/post-5008/">Excel VBA 処理の一部をサブルーチン化するCallステートメント</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/bd596f09e3b962c6b9f6b5e2603dca2263d24fb97805b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bd596f09e3b962c6b9f6b5e2603dca2263d24fb97805b.png?mw=700" alt="202301_excel_26-1901--Subroutine-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 スケルトン(Skeleton;穴埋めの穴じゃない方)を書こうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/aeed27da28a1e2e6fb9834509983fad163d2514d6e3aa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/aeed27da28a1e2e6fb9834509983fad163d2514d6e3aa.png?mw=700" alt="202301_excel_26-1906--MoveCode-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 スケルトンの中へ コードを こうやって 入れたらいいんじゃないかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/9b465017915b949d3a4152c38134c39863d251d1a8f17.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9b465017915b949d3a4152c38134c39863d251d1a8f17.png?mw=700" alt="202301_excel_26-1911--MovedCode.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 つまり こう」</p> <p><a href="https://crieit.now.sh/upload_images/7f3a7089c2ea734bbb3f14dbe451e7d163d2523bbff86.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7f3a7089c2ea734bbb3f14dbe451e7d163d2523bbff86.png?mw=700" alt="202301_excel_26-1912--Call-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 移動した跡の所には コール文(Call Statement)を置いておこうぜ?」</p> <pre><code class="vba">Sub ボタン1_Click() ' 1回目の処理 Call On1stClock ' 同様の2回目の処理 Call On2ndClock End Sub Private Sub On1stClock() ' 1回目のクロック Dim text As String Dim backgroundColor As Long Dim i As Long Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String text = Worksheets("Tape").Range("A1").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("A1").Interior.color ' 背景色 For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' セルの値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 背景色 ' 一致するか? If text = stateText And backgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' セルの値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' セルの値 ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range("A2").Interior.color = writeBackgroundColor ' Move 列が `>` だったら その右のセルへ、 Transition 列のいうテキストを入れる If moveText = ">" Then Worksheets("Tape").Range("B2").Value = transitionText End If Exit For End If Next i End Sub Private Sub On2ndClock() ' 2回目のクロック Dim text As String Dim backgroundColor As Long Dim i As Long Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String text = Worksheets("Tape").Range("B2").Value ' セルの値 backgroundColor = Worksheets("Tape").Range("B2").Interior.color ' 背景色 ' ★ 上の行の背景色は引き継ぐ Worksheets("Tape").Range("A3").Interior.color = Worksheets("Tape").Range("A2").Interior.color Worksheets("Tape").Range("B3").Interior.color = Worksheets("Tape").Range("B3").Interior.color For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' セルの値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 背景色 ' 一致するか? If text = stateText And backgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' セルの値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' セルの値 ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range("B3").Interior.color = writeBackgroundColor ' ★ Move 列が `<` だったら その左のセルへ、 Transition 列のいうテキストを入れる If moveText = "<" Then Worksheets("Tape").Range("A3").Value = transitionText End If Exit For End If Next i End Sub </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ <code>GUI</code> シートのボタンを押そうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/60d46eddc740de260994cbc83f82edc463d252c114f71.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/60d46eddc740de260994cbc83f82edc463d252c114f71.png?mw=700" alt="202301_excel_26-1915--Check.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 ちゃんと動いてるな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 場所を移しただけだしな」</p> <p>📅2023-01-26 thu 19:16</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 3クロック目も コピー貼り付けして作んの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 嫌になるだろ」</p> <p><a href="https://crieit.now.sh/upload_images/3ef93b3d925a27efdeb7ebe3aa75cd5d63d253cfe6a02.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3ef93b3d925a27efdeb7ebe3aa75cd5d63d253cfe6a02.png?mw=700" alt="202301_excel_26-1919--OnClock-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 何回目のクロックでも使えるジェネラル(General)なサブルーチンを作ろうぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/5b0a749e37816dd597d3d8c6ca75b62763d255a98666e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b0a749e37816dd597d3d8c6ca75b62763d255a98666e.png?mw=700" alt="202301_excel_26-1911--MovedCode-diff.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 違うところは5か所ぐらいなんだから、ここを違わないようにすればいいわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 A列の右隣は B列 だが、<br /> <code>A</code> の右は何か尋ねたら <code>B</code> が返ってくるような方法って VBA にあるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA 列アルファベット変換</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://qiita.com/11295/items/c26017eb21cb319fd29d">【ExcelVBA】列名のアルファベットと列番号の数字を相互変換する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/692b189f8ba2c55c3ffb94fda73ba9b963d26dd08ec89.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/692b189f8ba2c55c3ffb94fda73ba9b963d26dd08ec89.png?mw=700" alt="202301_excel_26-2110--General.png" /></a></p> <pre><code class="vba">Sub ボタン1_Click() ' 1回目の処理 Call OnClock("A", 1) ' 同様の2回目の処理 Call OnClock("B", 2) End Sub Private Sub OnClock(previousFileAlphabet As String, previousRank As Long) ' TODO 毎クロック(n回目のクロック) Dim previousText As String Dim previousBackgroundColor As Long Dim previousCell As String Dim currentRank As Long Dim currentCell As String Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String Dim i As Long previousCell = previousFileAlphabet & previousRank currentRank = previousRank + 1 currentCell = previousFileAlphabet & currentRank Debug.Print ("--------") Debug.Print ("previousFileAlphabet:" & previousFileAlphabet) Debug.Print ("previousRank :" & previousRank) Debug.Print ("previousCell :" & previousCell) Debug.Print ("currentRank :" & currentRank) Debug.Print ("currentCell :" & currentCell) ' 開始行の背景色は、次行に引き継ぐ If 2 <= previousRank Then Dim aBackgroundColor As Long Dim bBackgroundColor As Long aBackgroundColor = Worksheets("Tape").Range("A" & previousRank).Interior.color bBackgroundColor = Worksheets("Tape").Range("B" & previousRank).Interior.color Worksheets("Tape").Range("A" & currentRank).Interior.color = aBackgroundColor Worksheets("Tape").Range("B" & currentRank).Interior.color = bBackgroundColor Debug.Print ("aBackgroundColor:" & aBackgroundColor) Debug.Print ("bBackgroundColor:" & bBackgroundColor) End If previousText = Worksheets("Tape").Range(previousCell).Value ' 開始セルの値 previousBackgroundColor = Worksheets("Tape").Range(previousCell).Interior.color ' 開始セルの背景色 Debug.Print ("previousText :" & previousText) Debug.Print ("previousBackgroundColor:" & previousBackgroundColor) For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' 状態テーブルのState値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 状態テーブルのRead列の背景色 Debug.Print ("stateText :" & stateText) Debug.Print ("readBackgroundColor :" & readBackgroundColor) ' 一致するか? If previousText = stateText And previousBackgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 状態テーブルのWrite列の背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' 状態テーブルのMove列の値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' 状態テーブルのTransition列の値 Debug.Print ("writeBackgroundColor:" & writeBackgroundColor) Debug.Print ("moveText :" & moveText) Debug.Print ("transitionText :" & transitionText) ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range(currentCell).Interior.color = writeBackgroundColor Dim horizontal As Long ' 水平方向 If moveText = ">" Then ' Move 列が `>` だったら その右のセルへ horizontal = 1 ElseIf moveText = "<" Then ' Move 列が `<` だったら その左のセルへ horizontal = -1 End If Debug.Print ("horizontal:" & horizontal) ' Transition 列のいうテキストを入れる Dim startFileNumber As Integer Dim nextFileAlphabet As String startFileNumber = Columns(previousFileAlphabet).Column nextFileAlphabet = Split(Cells(1, startFileNumber + horizontal).Address, "$")(1) Debug.Print ("startFileNumber :" & startFileNumber) Debug.Print ("nextFileAlphabet:" & nextFileAlphabet) Worksheets("Tape").Range(nextFileAlphabet & currentRank).Value = transitionText Exit For End If Next i End Sub </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 けっこう 大がかりに 変えることになってしまったぜ」</p> <p>📅2023-01-26 thu 21:12</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 こんなん 何がどう変わったのか 読者 分からんだろ」</p> <p><a href="https://crieit.now.sh/upload_images/fdfc0cf2fdc2fb0f0adac6ef4e59d0a863d26ebbbdd65.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fdfc0cf2fdc2fb0f0adac6ef4e59d0a863d26ebbbdd65.png?mw=700" alt="202301_excel_26-2114--3rdClock-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 1クロック目と 2クロック目で違うところは、 スタート地点の列番号と、行番号だけだったということだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 このように 2つのサブルーチンの差異が サブルーチンの外に押し出されたものを <strong>アーギュメント</strong>(Argument;実引数)と呼ぶ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ふーん」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 3クロック目は どう書くの?」</p> <p><a href="https://crieit.now.sh/upload_images/0a6c4a73d2935ca90b25ac2e8473e95563d2709e4c167.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0a6c4a73d2935ca90b25ac2e8473e95563d2709e4c167.png?mw=700" alt="202301_excel_26-2121--argument-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>A1</code> とか <code>B2</code> というのは、1クロック前に居たセルだぜ。<br /> だから 前の計算結果を もらうといい。<br /> 書き直そう」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 VBA でファンクションは どうやって書いたらいいんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA ファンクション</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.bold.ne.jp/engineer-club/vba-function">VBA Functionプロシージャについて ~関数の解説と使用例~</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/b537b697560f1fb0aeeaadc57a17f15b63d2751076122.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b537b697560f1fb0aeeaadc57a17f15b63d2751076122.png?mw=700" alt="202301_excel_26-2141--function.png" /></a></p> <pre><code class="vba">Sub ボタン1_Click() Dim resultCell As String ' 1回目の処理 resultCell = OnClock("A1") ' 同様の2回目の処理 resultCell = OnClock(resultCell) End Sub Private Function OnClock(previousCell As String) As String ' 毎クロック(n回目のクロック) Dim previousText As String Dim previousBackgroundColor As Long Dim currentRank As Long Dim currentCell As String Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String Dim i As Long previousFileAlphabet = Split(Cells(1, Range(previousCell).Column).Address, "$")(1) previousRank = Range(previousCell).Row currentRank = previousRank + 1 currentCell = previousFileAlphabet & currentRank Debug.Print ("--------") Debug.Print ("previousCell :" & previousCell) Debug.Print ("previousFileAlphabet:" & previousFileAlphabet) Debug.Print ("previousRank :" & previousRank) Debug.Print ("currentRank :" & currentRank) Debug.Print ("currentCell :" & currentCell) ' 開始行の背景色は、次行に引き継ぐ If 2 <= previousRank Then Dim aBackgroundColor As Long Dim bBackgroundColor As Long aBackgroundColor = Worksheets("Tape").Range("A" & previousRank).Interior.color bBackgroundColor = Worksheets("Tape").Range("B" & previousRank).Interior.color Worksheets("Tape").Range("A" & currentRank).Interior.color = aBackgroundColor Worksheets("Tape").Range("B" & currentRank).Interior.color = bBackgroundColor Debug.Print ("aBackgroundColor:" & aBackgroundColor) Debug.Print ("bBackgroundColor:" & bBackgroundColor) End If previousText = Worksheets("Tape").Range(previousCell).Value ' 開始セルの値 previousBackgroundColor = Worksheets("Tape").Range(previousCell).Interior.color ' 開始セルの背景色 Debug.Print ("previousText :" & previousText) Debug.Print ("previousBackgroundColor:" & previousBackgroundColor) For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' 状態テーブルのState値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 状態テーブルのRead列の背景色 Debug.Print ("stateText :" & stateText) Debug.Print ("readBackgroundColor :" & readBackgroundColor) ' 一致するか? If previousText = stateText And previousBackgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 状態テーブルのWrite列の背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' 状態テーブルのMove列の値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' 状態テーブルのTransition列の値 Debug.Print ("writeBackgroundColor:" & writeBackgroundColor) Debug.Print ("moveText :" & moveText) Debug.Print ("transitionText :" & transitionText) ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range(currentCell).Interior.color = writeBackgroundColor Dim horizontal As Long ' 水平方向 If moveText = ">" Then ' Move 列が `>` だったら その右のセルへ horizontal = 1 ElseIf moveText = "<" Then ' Move 列が `<` だったら その左のセルへ horizontal = -1 End If Debug.Print ("horizontal:" & horizontal) ' Transition 列のいうテキストを入れる Dim previousFileNumber As Integer Dim nextFileAlphabet As String Dim nextCell As String previousFileNumber = Columns(previousFileAlphabet).Column nextFileAlphabet = Split(Cells(1, previousFileNumber + horizontal).Address, "$")(1) nextCell = nextFileAlphabet & currentRank Debug.Print ("previousFileNumber :" & previousFileNumber) Debug.Print ("nextFileAlphabet :" & nextFileAlphabet) Debug.Print ("nextCell :" & nextCell) Worksheets("Tape").Range(nextCell).Value = transitionText ' 関数から抜ける OnClock = nextCell Exit Function End If Next i End Function </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 さらに 改造してしまったぜ」</p> <p>📅2023-01-26 thu 21:43</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 こんなん 何がどう変わったのか 読者 分からんだろ」</p> <p><a href="https://crieit.now.sh/upload_images/96464638d29440e381b1a1a8848dbbec63d27668d882a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96464638d29440e381b1a1a8848dbbec63d27668d882a.png?mw=700" alt="202301_excel_26-2146--main-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 このように 前の計算結果を使って また同様に計算するように作るのは よくあるテクニックだぜ。<br /> <strong>漸化式</strong>(ぜんかしき) とか これだな」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 さっさと 3クロック目を書きなさいよ」</p> <p><a href="https://crieit.now.sh/upload_images/fb4fbbb839b9dbe36e947cc566b9f0bd63d2773c25cbc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb4fbbb839b9dbe36e947cc566b9f0bd63d2773c25cbc.png?mw=700" alt="202301_excel_26-2150--3rdClock-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 3クロック目は、2クロック目と同じコードで いいはずなんだぜ。<br /> 動かしてみよう」</p> <p><a href="https://crieit.now.sh/upload_images/66f641f330add453cbf13187a107f99a63d277b62b870.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/66f641f330add453cbf13187a107f99a63d277b62b870.png?mw=700" alt="202301_excel_26-2152--error-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 エラーが出たぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 直せ!」</p> <p><a href="https://crieit.now.sh/upload_images/0f024dcbc6526f5a4dcbcdef822d799d63d27800a2056.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0f024dcbc6526f5a4dcbcdef822d799d63d27800a2056.png?mw=700" alt="202301_excel_26-2153--debug-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>[デバッグ(D)]</code> ボタンを押してみようぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/e034203acef8d1e6ea39d674be15a19663d278556be61.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e034203acef8d1e6ea39d674be15a19663d278556be61.png?mw=700" alt="202301_excel_26-2155--highlight.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 エラーがあった行をハイライト(Highlight)してくれてるのかもしれないけど 説明がないから分かんないわねぇ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 また ショートカットを打鍵すれば ウィンドウが出てくるのかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA スタックトレース</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://speakerdeck.com/narazaka/vbanameteta?slide=116">VBAナメてた</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 行番号とエラーコードしか 分かんないらしいぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 1994年の環境ねえ」</p> <p>📅2023-01-26 thu 22:01</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA 1004 Error</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.wallstreetmojo.com/vba-1004-error/#:~:text=This%20error%20occurs%20when%20you,name%20with%20the%20excel%20extension">VBA Error 1004 in Excel</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 無いシート名や、無いアドレスを指定したら 出てくるエラーかも知らん」</p> <p><a href="https://crieit.now.sh/upload_images/3265aec10a1e7becdb64caf901d1eb1763d27b13390ff.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3265aec10a1e7becdb64caf901d1eb1763d27b13390ff.png?mw=700" alt="202301_excel_26-2207--error.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 A列より 左に進もうとして 0列目は無いので エラーになったんだな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 A列の左に 列を挿入しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA 列の挿入</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://www.tipsfound.com/vba/09005">VBA 列を挿入する</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/9c1455ad9824e532e31e7a03b5cf779363d27d2c21916.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9c1455ad9824e532e31e7a03b5cf779363d27d2c21916.png?mw=700" alt="202301_excel_26-2215--bugfix-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 0列にアクセスしようとしたら、<br /> A列の左に 列挿入して、 列番地も左に 1つずらして 1列にアクセスするように変更しよう」</p> <p><a href="https://crieit.now.sh/upload_images/6e7a3a2dcf4463fa7169bed325e8f84163d27da7bd035.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e7a3a2dcf4463fa7169bed325e8f84163d27da7bd035.png?mw=700" alt="202301_excel_26-2218--3rdClockDone.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 3クロック目も 動いたようだな」</p> <p>📅2023-01-26 thu 22:18</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ あと 100クロックぐらい 動かしましょう」</p> <p><a href="https://crieit.now.sh/upload_images/fb04bbd9f19fbc722de48dff01546cd663d27fa2132bb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb04bbd9f19fbc722de48dff01546cd663d27fa2132bb.png?mw=700" alt="202301_excel_26-2226--For-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>For</code> 文を使えば 100行書かずに済むから楽だよな。<br /> 漸化式の形に作っておけば 繰り返しの回数を指定するだけでいいから 手間要らずだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/a1471049d3f876f18e31d667018db7ba63d2805d6d23d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a1471049d3f876f18e31d667018db7ba63d2805d6d23d.png?mw=700" alt="202301_excel_26-2229--Error-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 エラーが出た」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 🔍 <code>VBA 1004 Error</code> で検索しろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 さっきと同じ 1004 番よ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 今度は何が無かったんだろな?」</p> <p><a href="https://crieit.now.sh/upload_images/e12e7323f7bb4b8c004c359ac49f51f463d282597704d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e12e7323f7bb4b8c004c359ac49f51f463d282597704d.png?mw=700" alt="202301_excel_26-2237--empty-previous-cell-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>previousCell</code> 変数の中身が空文字列だぜ。」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>A1</code> とか、何か番地が入っているはずじゃない」</p> <p><a href="https://crieit.now.sh/upload_images/8e8dc3028f75bf93b711ed6b1dc4afeb63d2817a7f5e3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/8e8dc3028f75bf93b711ed6b1dc4afeb63d2817a7f5e3.png?mw=700" alt="202301_excel_26-2234--reset-button-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>リセット</code> ボタンを押すと デバッグは止まるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/1d653278fa64d4c114346024b8a8d96563d282f95697e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1d653278fa64d4c114346024b8a8d96563d282f95697e.png?mw=700" alt="202301_excel_26-2240--Halt-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 多分、 <code>HALT</code> (ハルト)が出たら 終了しないといけないんだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/841a4e08b5050abfa210923ba8fae31463d28497a867f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/841a4e08b5050abfa210923ba8fae31463d28497a867f.png?mw=700" alt="202301_excel_26-2246--success-1.png" /></a></p> <pre><code class="vba"> If transitionText = "HALT" Then ' 関数から抜ける OnClock = "SUCCESS" Exit Function End If </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ <code>HALT</code> (ハルト)が出たときは セル番地ではなく <code>SUCCESS</code> を返すという取り決めにしておこうぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c564d0d7d0a67a74807f51a08fe8c7e063d285d9d674a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c564d0d7d0a67a74807f51a08fe8c7e063d285d9d674a.png?mw=700" alt="202301_excel_26-2252--exitFor-1.png" /></a></p> <pre><code class="vba"> ' 正常終了時はループから抜ける If resultCell = "SUCCESS" Then Exit For End If </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 関数の呼び出し元でも 前判定で <code>resultCell</code> 変数の内容が <code>SUCCESS</code> だったら、ループから抜けるようにすれば コードも短いぜ」</p> <p><a href="https://crieit.now.sh/upload_images/fb5cfeec04b8547813467f8277e03b0363d2866e64c44.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fb5cfeec04b8547813467f8277e03b0363d2866e64c44.png?mw=700" alt="202301_excel_26-2255--play.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 なんか 動いた跡があるな」</p> <p><a href="https://crieit.now.sh/upload_images/fcddc59f9b69d6982a3cfa1957cb583463d286dede709.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fcddc59f9b69d6982a3cfa1957cb583463d286dede709.png?mw=700" alt="202301_excel_26-2257--QUOTE-Wikipedia.png" /></a></p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://en.wikipedia.org/wiki/Turing_machine">Turing machine</a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 Wikipedia のサンプルと違くない?」</p> <p><a href="https://crieit.now.sh/upload_images/28e374907e108dedeadc637e6038f08c63d2896c1f1a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/28e374907e108dedeadc637e6038f08c63d2896c1f1a6.png?mw=700" alt="202301_excel_26-2308--copy-paint-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 A列と B列しか 背景色をコピーしてないからな」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 テープの長さと同じ幅だけ コピーしてくれだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ テープの長さも 数えておかないといけないな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 VBA で、自由変数の使い方、または 引数の参照渡しのやり方は どう書くんだろうな?」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 ググりゃいいんじゃないの?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA 引数の参照渡し</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://excel-ubara.com/excelvba4/EXCEL218.html">値渡し(ByVal)、参照渡し(ByRef)について</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 ぜったい そんな記事を ちらっと読んでも 何も分からないけどな」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 プログラムの組み方は分かってるが VBA での書き方が分からないだけなんで、ちら見で 充分だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 あれっ? <code>ByRef tapeWidth As Long</code> と書いても 参照渡しになって無(ね)。<br /> 調べても分からないことはある。<br /> 自由変数にするか」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 🔍 <code>VBA グローバル変数</code> で検索」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="http://officetanaka.net/excel/vba/variable/05.htm">変数の適用範囲</a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし 分かったぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 でも 書いているうちに <code>tapeWith</code> というスペルミスを見つけて <code>tapeWidth</code> 直したら動くようになった」</p> <p><a href="https://crieit.now.sh/upload_images/af1d389778a107a54445f1e0442c878963d294a4512f6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/af1d389778a107a54445f1e0442c878963d294a4512f6.png?mw=700" alt="202301_excel_26-2354--codeA-1.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/b55aa54001335ce25c06ca45f7c876a263d294fddbcb3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b55aa54001335ce25c06ca45f7c876a263d294fddbcb3.png?mw=700" alt="202301_excel_26-2357--codeB-1.png" /></a></p> <pre><code class="vba">Sub ボタン1_Click() Dim resultCell As String Dim tapeWidth As Long tapeWidth = 1 ' "A1" セル1つ分 ' 1回目の処理 resultCell = OnClock("A1", tapeWidth) ' 同様の i 回目の処理 Dim i As Long For i = 2 To 100 ' 正常終了時はループから抜ける If resultCell = "SUCCESS" Then Exit For End If resultCell = OnClock(resultCell, tapeWidth) Next i End Sub Private Function OnClock(previousCell As String, ByRef tapeWidth) As String ' 毎クロック(n回目のクロック) Dim previousFileAlphabet As String Dim previousRank As Long Dim previousText As String Dim previousBackgroundColor As Long Dim currentRank As Long Dim currentCell As String Dim stateText As String Dim readBackgroundColor As Long Dim writeBackgroundColor As Long Dim moveText As String Dim transitionText As String Dim i As Long previousFileAlphabet = Split(Cells(1, Range(previousCell).Column).Address, "$")(1) previousRank = Range(previousCell).Row currentRank = previousRank + 1 currentCell = previousFileAlphabet & currentRank Debug.Print ("--------") Debug.Print ("previousCell :" & previousCell) Debug.Print ("previousFileAlphabet:" & previousFileAlphabet) Debug.Print ("previousRank :" & previousRank) Debug.Print ("currentRank :" & currentRank) Debug.Print ("currentCell :" & currentCell) Debug.Print ("tapeWidth :" & tapeWidth) ' 開始行の背景色は、次行に引き継ぐ If 2 <= previousRank Then For i = 1 To (tapeWidth + 1) Dim tempFileAlphabet As String Dim tempBackgroundColor As Long tempFileAlphabet = Split(Cells(1, i).Address, "$")(1) tempBackgroundColor = Worksheets("Tape").Range(tempFileAlphabet & previousRank).Interior.color Debug.Print ("i :" & i) Debug.Print ("tempFileAlphabet :" & tempFileAlphabet) Debug.Print ("tempBackgroundColor:" & tempBackgroundColor) Worksheets("Tape").Range(tempFileAlphabet & currentRank).Interior.color = tempBackgroundColor Next i End If previousText = Worksheets("Tape").Range(previousCell).Value ' 開始セルの値 previousBackgroundColor = Worksheets("Tape").Range(previousCell).Interior.color ' 開始セルの背景色 Debug.Print ("previousText :" & previousText) Debug.Print ("previousBackgroundColor:" & previousBackgroundColor) For i = 2 To 7 stateText = Worksheets("StateTable").Range("A" & i).Value ' 状態テーブルのState値 readBackgroundColor = Worksheets("StateTable").Range("B" & i).Interior.color ' 状態テーブルのRead列の背景色 Debug.Print ("stateText :" & stateText) Debug.Print ("readBackgroundColor :" & readBackgroundColor) ' 一致するか? If previousText = stateText And previousBackgroundColor = readBackgroundColor Then writeBackgroundColor = Worksheets("StateTable").Range("C" & i).Interior.color ' 状態テーブルのWrite列の背景色 moveText = Worksheets("StateTable").Range("D" & i).Value ' 状態テーブルのMove列の値 transitionText = Worksheets("StateTable").Range("E" & i).Value ' 状態テーブルのTransition列の値 Debug.Print ("writeBackgroundColor:" & writeBackgroundColor) Debug.Print ("moveText :" & moveText) Debug.Print ("transitionText :" & transitionText) ' `Tape` シートの A1 セルの下のセルの背景色を Write列のいう色に塗る Worksheets("Tape").Range(currentCell).Interior.color = writeBackgroundColor Dim horizontal As Long ' 水平方向 If moveText = ">" Then ' Move 列が `>` だったら その右のセルへ horizontal = 1 ElseIf moveText = "<" Then ' Move 列が `<` だったら その左のセルへ horizontal = -1 End If Debug.Print ("horizontal:" & horizontal) ' Transition 列のいうテキストを入れる Dim previousFileNumber As Integer Dim nextFileAlphabet As String Dim nextFileNumber As Integer Dim nextCell As String previousFileNumber = Columns(previousFileAlphabet).Column nextFileNumber = previousFileNumber + horizontal Debug.Print ("previousFileNumber :" & previousFileNumber) Debug.Print ("nextFileNumber :" & nextFileNumber) If nextFileNumber = 0 Then Worksheets("Tape").Columns("A").Insert ' A 列の左に列挿入 nextFileNumber = nextFileNumber + 1 ' 列番号を 1 つ左へずらす tapeWidth = tapeWidth + 1 ' Update ElseIf tapeWidth < nextFileNumber Then tapeWidth = nextFileNumber ' Update End If nextFileAlphabet = Split(Cells(1, nextFileNumber).Address, "$")(1) nextCell = nextFileAlphabet & currentRank Debug.Print ("nextFileAlphabet :" & nextFileAlphabet) Debug.Print ("nextCell :" & nextCell) Worksheets("Tape").Range(nextCell).Value = transitionText If transitionText = "HALT" Then ' 関数から抜ける OnClock = "SUCCESS" Exit Function End If ' 関数から抜ける OnClock = nextCell Exit Function End If Next i End Function </code></pre> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 よし <code>tapeWidth</code> も付けたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/91ed806503af3b04a8d5394f6273ba2863d29593358bd.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/91ed806503af3b04a8d5394f6273ba2863d29593358bd.png?mw=700" alt="202301_excel_27-0000--play.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 チューリング・マシンが でけたぜ」</p> <p>📅2023-01-27 thu 00:01</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>HALT</code> は出力しないのが チューリング・マシンみたいよ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 じゃあ <code>StateTable</code> の <code>Transition</code> 列で <code>HALT</code> を見つけたところで 止めた方がいいのか」</p> <p><a href="https://crieit.now.sh/upload_images/abf090d159ec50ccbce29faabf09177763d297118951f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/abf090d159ec50ccbce29faabf09177763d297118951f.png?mw=700" alt="202301_excel_27-0005--moveCode-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 判定部を 上に持っていけば いいんじゃないかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/399be2584be9b9b2bba3b35100bb8eea63d29777bbde4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/399be2584be9b9b2bba3b35100bb8eea63d29777bbde4.png?mw=700" alt="202301_excel_27-0008--copy-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 1行 余分に背景色をコピーしてるわよ?」</p> <p><a href="https://crieit.now.sh/upload_images/a8099b2405cf0ef7b4787895939535d763d29816eaaea.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a8099b2405cf0ef7b4787895939535d763d29816eaaea.png?mw=700" alt="202301_excel_27-0010--copyB-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 背景色のコピーを、判定部の後ろに持っていけば いいんじゃないかだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/12497135a2ffdac5dce45202516e999e63d2987639a62.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/12497135a2ffdac5dce45202516e999e63d2987639a62.png?mw=700" alt="202301_excel_27-0012--error.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 おっと」</p> <p><a href="https://crieit.now.sh/upload_images/4eaad7541e0323d5f67ce285389749c163d298cfdb63f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4eaad7541e0323d5f67ce285389749c163d298cfdb63f.png?mw=700" alt="202301_excel_27-0013--define-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 変数 <code>i</code> は、外側のループの ループ・カウンターとして使ってたか」</p> <p><a href="https://crieit.now.sh/upload_images/6c2e941fdc56048c2fc58049fa4bec4963d2997f8510f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6c2e941fdc56048c2fc58049fa4bec4963d2997f8510f.png?mw=700" alt="202301_excel_27-0016--J-1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ 変数 <code>j</code> を作ればいいや」</p> <p><a href="https://crieit.now.sh/upload_images/82af7bdc12bd9c36c10effeab11fb3f463d299c572cee.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/82af7bdc12bd9c36c10effeab11fb3f463d299c572cee.png?mw=700" alt="202301_excel_27-0018--ok.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 これで チューリング・マシン は完成だぜ。<br /> 一般化してないのと、不具合が残っているのが 残っているかも知れないが……」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 これは何に使うんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この例だと 長さ6のオレンジ色のテープを作るために使ったんだぜ。<br /> 説明しよう」</p> <p><a href="https://crieit.now.sh/upload_images/93785cda8bce3af90e6039ecb8d2546763d29c38ecc54.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/93785cda8bce3af90e6039ecb8d2546763d29c38ecc54.png?mw=700" alt="202301_excel_27-0028--stateTable.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 この <code>StateTable</code> というのが プログラムの命令セットのようなものだぜ。<br /> この6行があると……」</p> <p><a href="https://crieit.now.sh/upload_images/5c1ac565c7d438d3dd496293174b018163d2abc2d36ba.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5c1ac565c7d438d3dd496293174b018163d2abc2d36ba.png?mw=700" alt="202301_excel_27-0134--A.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 最初は <code>A</code> と書かれているが、<br /> <code>A</code> にあんまり意味は無くて 長さ1つの白いテープがそこにあると思えだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c3bb725a731a2ac9e1f66ccf4f5d211863d29ca67afc6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c3bb725a731a2ac9e1f66ccf4f5d211863d29ca67afc6.png?mw=700" alt="202301_excel_27-0030--tape.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 👆 上の図は テープを伸ばしている過程が描かれたもので、<br /> 最後の 13行目が 作られたテープだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 長さ6つのオレンジ色のテープ が作られて 動作が止まったわけだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 長さ6つのオレンジ色のテープ なんか 作っても 嬉しくないしなあ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 今回はサンプルで オレンジ色1色しかなかったが、<br /> それが 26色あって アルファベットの26文字に対応するとか、<br /> 最初から色の塗られたテープがあって チューリング・マシンが動いた後には 別の色のテープが残っているとか、<br /> それが 暗号を解読した答え だったりしたら 嬉しいだろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 じゃあ <strong>今回の例題</strong> がシンプルすぎて チューリング・マシン が何たるか 嬉しさが 分からないんだ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 <strong>プログラミング言語</strong> が誕生する前の プログラミング 方法だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 私たちが使うのは プログラミング言語 なのだから、懐古好きでもなければ チューリング・マシン を覚えなくてもいいのでは?」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 一生のうちに 何回か <strong>チューリング・マシン</strong> とか <strong>チューリング完全</strong> の名前を聞くことはあるだろ。<br /> 記事を読んで知識として知ってるより 作って知ってる方が 話しに実感がこもるだろ」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 実感 要らないから 実用的で 効率的な練習 無いのかなあ」</p> <p><a href="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d27ea8dcfad541918d9094b9aed83e7d61daf8532bbbe.png?mw=700" alt="ramen-tabero-futsu2.png" /></a><br /> 「 そんな実用的な Webサイト なら、他人が作るしな 」</p> <p><a href="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/96fb09724c3ce40ee0861a0fd1da563d61daf8a09d9bc.png?mw=700" alt="ohkina-hiyoko-futsu2.png" /></a><br /> 「 プログラムも コンピューターも無い時代に ヒトが考えたプログラムを <strong>体験</strong> するぐらいね」</p> <p><a href="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/beaf94b260ae2602ca8cf7f5bbc769c261daf8686dbda.png?mw=700" alt="kifuwarabe-futsu.png" /></a><br /> 「 もっと面白い例題でやってほしい」</p> <p>参考: 📖 <a target="_blank" rel="nofollow noopener" href="https://github.com/muzudho/TuringMachineByExcelVBA">Git Hub / TuringMachineByExcelVBA</a></p> <p><おわり></p> むずでょ tag:crieit.net,2005:PublicArticle/18351 2022-12-24T00:05:47+09:00 2022-12-24T00:11:28+09:00 https://crieit.net/posts/Current-Directory-Executing-Assembly-Location-md プログラミング脱落者救出☆大作戦<2> Current Directory と Executing Assembly Location 編 <p>前の記事: 📖 <a href="https://crieit.net/posts/Windows-Resolve-Path">プログラミング脱落者救出☆大作戦<1> Windows アプリケーションの Resolve Path 編</a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 Windows 10 な。<br /> カレント・ディレクトリー(Current Directory)の説明をする。<br /> ワーキング・ディレクトリー(Working Directory)と言っても同じだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 フーン」</p> <p><a href="https://crieit.now.sh/upload_images/0900ce0638c93935d7f98c04b6c3563163a5ba6c75071.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0900ce0638c93935d7f98c04b6c3563163a5ba6c75071.png?mw=700" alt="202212_programming_23-2324.png" /></a></p> <pre><code class="cs">// See https://aka.ms/new-console-template for more information using System.Reflection; // ディレクトリ・パスをコンソールへ標準出力します static void EchoDirectory() { string currentDirectory = Directory.GetCurrentDirectory(); string executeAssemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? "null"; Console.WriteLine($@"Data --------------------------- Current Directory : {currentDirectory} Execute Assembly Directory: {executeAssemblyDirectory} Please, Push any key. "); Console.ReadKey(); } // ディレクトリ・パスをコンソールへ標準出力します EchoDirectory(); </code></pre> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 予め C#言語で カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーの2つを<br /> コンソールへ標準出力するプログラムを書いておいた」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 豆ねえ」</p> <p><a href="https://crieit.now.sh/upload_images/7c11f735e3f1baffc786b66cf86fcfcb63a5bba8200cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7c11f735e3f1baffc786b66cf86fcfcb63a5bba8200cb.png?mw=700" alt="202212_programming_23-2329o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 デスクトップに <code>C#れんしゅう</code> フォルダーを作成し、<br /> その中へ さっき書いたプログラムをビルドして作った <code>EchoDirectory.exe</code> 実行ファイルを置いた。</p> <p>なにもないところを右クリックして、 <code>ターミナルで開く(T)</code> メニューをクリックしてほしい。<br /> そんなメニュー無いってやつは Windows Terminal をインストールするか、指でもくわえて見てろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5fb77ac4a2e46d98ca030b49a85d44e963a5bc8bd9131.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5fb77ac4a2e46d98ca030b49a85d44e963a5bc8bd9131.png?mw=700" alt="202212_programming_23-2334o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 👆 黒い画面が出てきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 今回は、コマンド・プロンプトではなく、 <strong>パワーシェル</strong>(Power Shell)を使ってみよう。<br /> 丁寧なことに、カレント・ディレクトリーが 表示されているぜ」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 GUIと違って、ディレクトリーを一度に1つしか開けれないようなシンプルなシェルでは、<br /> カレント・ディレクトリーというのが 今開いているディレクトリーと 同じことよ」</p> <p><a href="https://crieit.now.sh/upload_images/cdc69b43f4b145a2626f9c70abd178cd63a5bdcb5f4a8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cdc69b43f4b145a2626f9c70abd178cd63a5bdcb5f4a8.png?mw=700" alt="202212_programming_23-2339o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ コマンドラインから <code>./EchoDirectory.exe</code> を実行しようぜ。<br /> カレント・ディレクトリーと、 実行ファイルの置いてある場所は 同じようだな」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 パワーシェルでは 頭に <code>./</code> を付けるんだな」</p> <p><a href="https://crieit.now.sh/upload_images/c12017f40eca8a04aa7b08f2cea8c55963a5bed10cb99.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c12017f40eca8a04aa7b08f2cea8c55963a5bed10cb99.png?mw=700" alt="202212_programming_23-2344.png" /></a></p> <pre><code class="shell">cd folder1 </code></pre> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 1つ下のフォルダーへ 下りてみようぜ? 中身は空だけど……」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 📂 <code>folder1</code> を ダブルクリックして開けたのと 同じようなもんよ」</p> <p><a href="https://crieit.now.sh/upload_images/60a512f975af893edf84b3017e2cabab63a5bfcd6221d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/60a512f975af893edf84b3017e2cabab63a5bfcd6221d.png?mw=700" alt="202212_programming_23-2347.png" /></a></p> <pre><code class="shell">../EchoDirectory.exe </code></pre> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ、 📂 <code>folder1</code> から、親フォルダーにある <code>EchoDirectory.exe</code> を実行してみよう」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 今度は 頭に <code>../</code> を付けたんだな」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 カレントディレクトリーと、 実行ファイルが置いてあるディレクトリーが 異なったわね」</p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 このように、</p> <p><strong>プログラムを実行するときは、 カレント・ディレクトリーと、 実行ファイルが置いてあるディレクトリーは</strong><br /> <strong>同じじゃないケースがある</strong></p> <p>ということを 頭に入れながら プログラミングしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/0272bba4b2b6adde843638ae103489c363a5c1551900d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0272bba4b2b6adde843638ae103489c363a5c1551900d.png?mw=700" alt="202212_programming_23-2354.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 ちなみに 親フォルダーのそのまた親フォルダ―にある <code>EchoDirectory.exe</code> を実行するには、頭に <code>../../</code> を付けろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/6c25cfc9e1d6866bd5e37cb42561a2dc63a5c1eb22a6d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6c25cfc9e1d6866bd5e37cb42561a2dc63a5c1eb22a6d.png?mw=700" alt="202212_programming_23-2357.png" /></a></p> <pre><code class="shell">../../folder1/folder2/../../folder1/.././EchoDirectory.exe </code></pre> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 もちろん フォルダーを2つ上がったのに また下りて、さらに上がって また下りて、<br /> また上がったと思ったら 今度は とどまっても、<br /> そこに <code>EchoDirectory.exe</code> があれば ちゃんとアクセスできるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a5b9b141c2c.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 無駄な知識 わらう」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 分かりづらくない?」</p> <p><a href="https://crieit.now.sh/upload_images/954abc11938ed9b63b49b1fbf064ceb563a5c333998d8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/954abc11938ed9b63b49b1fbf064ceb563a5c333998d8.png?mw=700" alt="202212_programming_24-0002.png" /></a></p> <pre><code class="shell">Resolve-Path ../../folder1/folder2/../../folder1/.././EchoDirectory.exe </code></pre> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a5b95905a84.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 そういうときの <code>Resolve-Path</code> だぜ。<br /> ファイルパスは、ただ文字列を つなげるだけではなく、解決(Resolve)することが 重宝するぜ」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a5ba517fb8b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 今日は ここまでね」</p> <p><おわり></p> むずでょ tag:crieit.net,2005:PublicArticle/18349 2022-12-22T21:34:57+09:00 2022-12-24T00:06:55+09:00 https://crieit.net/posts/Windows-Resolve-Path プログラミング脱落者救出☆大作戦<1> Windows アプリケーションの Resolve Path 編 <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 Windows 10 な。<br /> じゃあ、キーボードの <code>Windows</code> + <code>R</code> キーを押せだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/362c74ef320827df5919fe4214be34da63a43b280958f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/362c74ef320827df5919fe4214be34da63a43b280958f.png?mw=700" alt="202212_programming_22-2009.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 👆 なんだぜこのダイアログボックスは?」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>cmd</code> って打鍵しなさい」</p> <p><a href="https://crieit.now.sh/upload_images/68554562c73d687b012899bee3ee545f63a43bbad7395.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/68554562c73d687b012899bee3ee545f63a43bbad7395.png?mw=700" alt="202212_programming_22-2012.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 👆 黒い画面が出てきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 ここで、<br /> <strong>コマンドプロンプト</strong> か、 <strong>パワーシェル</strong> のどちらを使うか、という大きな選択肢がある。<br /> 今どき パワーシェルなんだが、<br /> 今回は コマンドプロンプトで説明する。</p> <p>その前に」</p> <p><a href="https://crieit.now.sh/upload_images/4788eed2d702459a4fd0478fb1ed3bf963a43cbdbe9a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4788eed2d702459a4fd0478fb1ed3bf963a43cbdbe9a6.png?mw=700" alt="202212_programming_22-2016.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 Windows アクセサリで <code>メモ帳</code> を右クリックして、 <code>[その他] - [ファイルの場所を開く]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f35e80dc18ebde93ba4bbcf2a31857ab63a43d462082b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f35e80dc18ebde93ba4bbcf2a31857ab63a43d462082b.png?mw=700" alt="202212_programming_22-2019.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 じゃあ、 <code>PC > ローカル ディスク(C:) > Microsoft > Windows > Start Menu > Programs > Windows アクセサリ</code> という<br /> 場所に ショートカットがいっぱい入っていて、<br /> メモ帳のショートカットも ここに入っているのが分かるな。<br /> クリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/f8c4f78a3dbdc2346cf492d773d659d963a43df898278.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f8c4f78a3dbdc2346cf492d773d659d963a43df898278.png?mw=700" alt="202212_programming_22-2022.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 👆 メモ帳が出てきたぜ」</p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 それを <strong>アプリケーション</strong> と呼ぶ。<br /> 2000年代のプログラマーは メモ帳 のようなアプリケーションを自分で作っていた。<br /> その名残は 👇 まどのもり で見ることができる」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://forest.watch.impress.co.jp/">窓の杜</a></p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 例えば 👇 <code>CLaunch</code> とか便利なのよ」</p> <p>📖 <a target="_blank" rel="nofollow noopener" href="https://forest.watch.impress.co.jp/library/software/claunch/">CLaunch</a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 このような <strong>アプリケーション</strong> を自作して、<br /> パソコンを どんどん 使いやすくしよう、という動きが 00年代前半ぐらいまで 盛んだったんだぜ。<br /> 今では スマホ の天下なんで <strong>デスクトップ・アプリケーション</strong> はマイナーになった」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 悲しい話し わらう」</p> <p>📖 <a href="https://crieit.net/posts/WPF-1">WPF演習問題1 デスクトップ上のちり紙</a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 お前らも <strong>Windowsデスクトップ・アプリケーション</strong> を作ろうと思えば 作れる。<br /> 記事を書いておいたから 参考にしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/dd38765395f56a858bfa2b1a0bf1b0ac63a444ec6bc14.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dd38765395f56a858bfa2b1a0bf1b0ac63a444ec6bc14.png?mw=700" alt="202212_programming_22-2041.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 メモ帳のショートカットを右クリックして <code>[プロパティ]</code> をクリックしろだぜ。<br /> <code>[リンク先]</code> の <code>%windir%\system32\notepad.exe</code> というのが、メモ帳の本体を置いてる場所だぜ」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 <code>%windir%</code> って何なんだぜ?」</p> <p><a href="https://crieit.now.sh/upload_images/d54f23ed5fd9dafcc9dd32d30d93869363a447322e6a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d54f23ed5fd9dafcc9dd32d30d93869363a447322e6a6.png?mw=700" alt="202212_programming_22-2059.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 Windows のスタートメニューの <code>[設定]</code> 画面から、 <code>env</code> と打鍵して<br /> <code>[システム環境変数の編集]</code> をクリックしろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/c9764840eb7443d44e87146dbe0c1b5a63a447fdda04b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c9764840eb7443d44e87146dbe0c1b5a63a447fdda04b.png?mw=700" alt="202212_programming_22-2104o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>[環境変数(N)...]</code> をクリック」</p> <p><a href="https://crieit.now.sh/upload_images/41df16bb587024eba2d4121452b6eeff63a44877bb08e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/41df16bb587024eba2d4121452b6eeff63a44877bb08e.png?mw=700" alt="202212_programming_22-2106.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 <code>windir</code> は、 <code>C:\WINDOWS</code> だと分かったな」</p> <p><a href="https://crieit.now.sh/upload_images/7a52d3364b6c9f84de591ca23b734d1363a449136406d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7a52d3364b6c9f84de591ca23b734d1363a449136406d.png?mw=700" alt="202212_programming_22-2109o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 また、コマンドプロンプトへ <code>echo %windir%</code> と打鍵しても <code>C:\WINDOWS</code> が返ってくるぜ」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 <code>echo %windir%\system32\notepad.exe</code> って打鍵しなさいよ。<br /> コマンドプロンプトへは コピーした文字を 右クリックで 貼り付けられるわよ」</p> <p><a href="https://crieit.now.sh/upload_images/1f44959bacda7a9c91fcc4b09b6f779e63a449ea85b48.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1f44959bacda7a9c91fcc4b09b6f779e63a449ea85b48.png?mw=700" alt="202212_programming_22-2113o1.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 👆 へえ」</p> <p><a href="https://crieit.now.sh/upload_images/e0c64d397c7b31f98f3dc01b47aa20af63a44a501e402.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e0c64d397c7b31f98f3dc01b47aa20af63a44a501e402.png?mw=700" alt="202212_programming_22-2114.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 コマンドプロンプトの文字列をドラッグして 右クリックで コピーできるわよ」</p> <p><a href="https://crieit.now.sh/upload_images/06ce8fe4216a0a9fa4ddab2b8a8eba4a63a44afb35686.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/06ce8fe4216a0a9fa4ddab2b8a8eba4a63a44afb35686.png?mw=700" alt="202212_programming_22-2117.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 👆 <code>notepad.exe</code> あるわよね。 これが <strong>実行ファイル</strong> というもので、アプリケーションの本体よ。<br /> この <code>notepad.exe</code> ファイルをダブルクリックすると メモ帳が出てくるのよ」</p> <p><a href="https://crieit.now.sh/upload_images/026aca84498ecdce962750b4ce97eaa363a44b9280f6d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/026aca84498ecdce962750b4ce97eaa363a44b9280f6d.png?mw=700" alt="202212_programming_22-2119o1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 ま、コマンドプロンプトへ <code>notepad.exe</code> って打鍵しても メモ帳出てくるけどな」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 <code>C:\WINDOWS\system32\</code> は打鍵しなくていいのか?」</p> <p><a href="https://crieit.now.sh/upload_images/99c72b872a1da607bf435a1e3b142e0d63a44cb089970.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/99c72b872a1da607bf435a1e3b142e0d63a44cb089970.png?mw=700" alt="202212_programming_22-2124.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 その秘密が システム環境変数の <code>Path</code> (パス)だぜ。<br /> よく 『パスは通したか?』 とか言う。<br /> <code>[編集]</code> ボタンをクリックしてみろだぜ」</p> <p><a href="https://crieit.now.sh/upload_images/ff9e5148109290f877662de6e357396863a44d53cfe15.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ff9e5148109290f877662de6e357396863a44d53cfe15.png?mw=700" alt="202212_programming_22-2127.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5b53e954894672b36c716412a272826b63a43913e0b56.png?mw=700" alt="202101__character__31--ramen-tabero-futsu2.png" /></a><br /> 「 👆 コマンドプロンプトは <code>Path</code> の下に置いてある <code>.exe</code> ファイルを Resolve (リゾルブ)する、つまり、<br /> パスと実行ファイルの名前をくっつけて、見つかったものを実行する。だから <code>notepad.exe</code> でいける」</p> <p><a href="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e846bc7782a0e037a1665e6b3d51b02463a4394626661.png?mw=700" alt="202101__character__28--kifuwarabe-futsu.png" /></a><br /> 「 フーン」</p> <p><a href="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/31f0f35be3a4b6b05ce597c7aab702b763a43973f173b.png?mw=700" alt="202108__character__12--ohkina-hiyoko-futsu2.png" /></a><br /> 「 じゃあ 今日はこれで 終わりよ」</p> <p><おわり></p> <p>次の記事: 📖 <a href="https://crieit.net/posts/Current-Directory-Executing-Assembly-Location-md">プログラミング脱落者救出☆大作戦<2> Current Directory と Executing Assembly Location 編</a></p> むずでょ tag:crieit.net,2005:PublicArticle/15688 2020-01-17T23:13:26+09:00 2020-01-17T23:14:56+09:00 https://crieit.net/posts/002b376f00c2d59eba16a261f29b18ee プログラミングでつまずいたところ(主に昔話) <p>プログラミングでつまづいてきたこと みたいなブログがいくつかあった。<br /> 最近は人に教える機会がよくあるので、自分はどうだったかなと思い出しながら書いてみたら<br /> ただの昔話になってしまった。</p> <p>せっかく書いたので、Qiitaにでも投稿しようかと思ったけどポエムっぽいのでやめた。</p> <p>CrieitだとポエムもOKみたいなのでこちらに書くことにしました。</p> <h2 id="プログラミング以前"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BB%A5%E5%89%8D">プログラミング以前</a></h2> <p>中学生のときはプログラミングはしていなかった。<br /> ただ、友達がパソコンを持っていて、使わせてもらったりしてた。<br /> 何をしていたか覚えていないけど、面白いと感じたのだろう。</p> <p>特に進路を決めていなかったけど、<br /> 技術家庭科で電子回路の授業が面白かったこともあって<br /> 高専の電子情報工学科に進んだ。</p> <h2 id="高専生"><a href="#%E9%AB%98%E5%B0%82%E7%94%9F">高専生</a></h2> <p>上記のように軽い気持ちで進んだので、高専では素晴らしく落ちこぼれていた。<br /> 留年こそしなかったけど、毎年ギリギリだった。</p> <p>1−4年生まではプログラミングが面白いと思ったことはなかったと思う。<br /> 何がわからないかもわからないのであまり覚えてることも少ない。</p> <h3 id="1 - 2年生"><a href="#1+-+2%E5%B9%B4%E7%94%9F">1 - 2年生</a></h3> <ul> <li>プログラミングを初めて体験した。</li> <li>trueBASICなるものを授業でやった。よくわからなかった。</li> <li>図書館にあった雑誌に掲載されていたBASICのコードポケコンに打ち込んで出来たゲームで遊んだ。</li> <li>自分でなにか作れるようなことはなかったし何が作れるのかもよくわからなかった。</li> <li>C言語を授業でやった。 <ul> <li>みんなポインタがわからないと言っていたが、自分はポインタがわからないということすらわかっていなかった</li> <li>配列がわかっていなかったと思う。大カッコの意味がわからないと思った記憶がある。</li> <li>何らかのデータを固定長でファイルに書き込み、それを読み込んで表示するプログラムを書いたけど、「ABCDE」と保存したら「ABCDE」と読み込むのは当たり前やん?何が嬉しんだろう?って思った。</li> </ul></li> </ul> <h3 id="3 - 4年生"><a href="#3+-+4%E5%B9%B4%E7%94%9F">3 - 4年生</a></h3> <ul> <li>確かアルゴリズム論という授業があったので、ソートアルゴリズムとかを習った気がする</li> <li>データ構造も習ったとおもう。絶対理解していないけど。</li> <li>ハノイの塔で再帰とか習った気がするけど、自力で解ける気がしなかった。</li> <li>CUIなので、ハノイの塔のビジュアル的なものをどうやるのか想像もつかなかった。</li> <li>4年生のときに自分のパソコンが手にはいったと思う。今思うと遅い、よくやってたな。</li> </ul> <h3 id="5年生"><a href="#5%E5%B9%B4%E7%94%9F">5年生</a></h3> <p>5年生になり、選んだ卒研の研究室で担当教官が、構造体とポインタを使ったリスト構造について詳しく教えてくれた。<br /> すごくわかりやすく、C言語「完全に理解した」と思った。</p> <p>卒研の内容は探索を使うものだったと思う。<br /> 確か倉庫番を解くプログラムを作って、新たな探索アルゴリズム作るというものだった。<br /> 幅優先探索、深さ優先探索、A*などがあったと記憶している。<br /> 教官からはそれらの探索よりなにか秀でたものを作れと言われた。</p> <p>卒業を諦めた。</p> <h2 id="プログラミングが面白くなってきた"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%8C%E9%9D%A2%E7%99%BD%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%9F">プログラミングが面白くなってきた</a></h2> <p>担当教官に伝えたところ課題を変更し、Perl CGIでWebアプリケーションを作ることになった。<br /> 確か、先生が課題を出し、学生はそれをWeb上で回答し、先生が採点できるようにするみたいなもの作った。<br /> この頃はWebアプリケーションという言葉は使っていなかったと思う。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/Perlで作るCGI入門-基礎編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/479730507X">https://www.amazon.co.jp/Perlで作るCGI入門-基礎編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/479730507X</a><br /> <a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/Perlで作るCGI入門-応用編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/4797305819">https://www.amazon.co.jp/Perlで作るCGI入門-応用編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/4797305819</a></p> <p>担当教官からこの本を借りて読んでみた。</p> <p>次に、kent-webにある掲示板のソースコードを下記のリファレンス本を使って、全部読んだ。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/CGI-Perl-ポケットリファレンス-Pocket-reference/dp/4774107557">https://www.amazon.co.jp/CGI-Perl-ポケットリファレンス-Pocket-reference/dp/4774107557</a></p> <p>このとき、プログラムどのように動いているか理解できたことを覚えてる。<br /> これなら自分でWebアプリを作れそうと感じた。</p> <p>それを真似ながら、0から卒研のWebアプリを作っていった。</p> <p>今まではC言語で制御構文やファイルの読み書き、アルゴリズムなどCUIでプログラムを習ってきた。<br /> いざ何かを作れと言われたところでCUIでどうやってものを作ればよいのか、<br /> 何ができるのか全く想像出来なかった。<br /> しかし、Perl CGIで掲示板を作るとなると目に見えるGUIのシステムが出来上がるのが面白かった。</p> <p>そういえば、クラスメイトにWebに詳しい人がいて<br /> 卒研用のWebアプリを作っているときに、Perl以外にもPHPというものがあると教えてくれた<br /> また、SQLの存在もこのあたりで知った。<br /> 授業ではER図の書き方とかも習った気がする。</p> <p>select * from usersを実行すると<br /> ターミナル内に表形式で、表示されるけど<br /> それをどうやったらPHPやPerlの中で使えるのか全く想像出来なかった。</p> <p>この頃、まだGoogleの存在は知らなかったと思うし、<br /> 自分自身、検索して調べるという習慣もなかったと思う。</p> <p>Webアプリは完成し、無事卒業することが出来た。</p> <p>この経験で自分にもプログラミングができるという自信がついたのだろう。<br /> この経験がなければ、プログラミングの仕事はしてなかったかもしれない。</p> <h2 id="2001 - 社会人 1社目"><a href="#2001+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+1%E7%A4%BE%E7%9B%AE">2001 - 社会人 1社目</a></h2> <p>卒業後入った会社はアウトソーシングの会社だった。<br /> 3ヶ月間は研修で、その後派遣で様々な現場に出てもらうみたいなことだった。</p> <p>3ヶ月間の研修はperl CGIでなにか作るというものだった。<br /> 卒研でやったことと同じものだったので、それなりに上手くやっていけてたと思う。</p> <p>3ヶ月の研修が終わったあと会社を辞めた。</p> <h2 id="2002 - 社会人 2社目"><a href="#2002+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+2%E7%A4%BE%E7%9B%AE">2002 - 社会人 2社目</a></h2> <p>その後、半年ほどは知人が商売をすると言うので手伝ったりしていたと思う。<br /> 確かこの頃に家なき子になったり色々あったけどバイトをすることになった。</p> <p>内容はWebサーバやメールサーバの構築、Webアプリの開発だったと思う。<br /> 出会い系サイトの。</p> <p>ここでは、Linuxを使ってWeb、メール、DNSの各種サーバを構築をさせてもらった<br /> 詳しく覚えていないけど、すごく勉強になった。</p> <p>この頃、学生時代の友人たちともチャットでつながっていて<br /> 色々情報交換をしていた。<br /> その中でRubyっていうのがすごく良いという話があったので、勉強してみた。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/プログラミングRuby―達人プログラマーガイド-デビット-トーマス/dp/4894714531">https://www.amazon.co.jp/プログラミングRuby―達人プログラマーガイド-デビット-トーマス/dp/4894714531</a></p> <p>この本を買って読んでみた。<br /> Rubyはすべてがオブジェクトで云々。<br /> 数字の「1」もオブジェクトです。<br /> 何を言っているのか全くわからなかった。<br /> ここも何がわからないのかがわからない感じだったと思う。</p> <p>ジュークボックスのサンプルコードが載ってたような気がするけど、<br /> これはどうやって音がでるのだ???みたいな。</p> <p>学生のときにCUIでイメージできなかったときの感覚に似ていたと思う。</p> <h2 id="2003 - 社会人 3社目"><a href="#2003+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+3%E7%A4%BE%E7%9B%AE">2003 - 社会人 3社目</a></h2> <p>その後、アルバイトはその業務自体がなくなったため終了し、別の会社を紹介してもらい入社した。</p> <p>この頃はまだ、フレームワークというものは知らなかった。<br /> ひたすら生のPHPを書いていた。</p> <p>ある時、Smartyというテンプレートエンジンを見つけて、面白そうと思い勉強した。<br /> 今までごちゃごちゃしていたコードがスッキリした気がした。</p> <p>業務のコードにも入れてみたところ、上司から、「このコードよくわからないから使わないで」と言われた。<br /> そりゃ勝手にコードの書き方を大きく変えたらあかんよなぁと今だと思う。あの頃はまだ若くて世間知らずだった。</p> <h2 id="2005 - 社会人 4社目"><a href="#2005+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+4%E7%A4%BE%E7%9B%AE">2005 - 社会人 4社目</a></h2> <p>次の会社でもPHPを使ったWebシステムを作っていた。<br /> Smartyなんかも導入した気がする。</p> <p>2005年頃だったか、新しいプロジェクトが始まったときにフレームワークを導入することになった。<br /> このとき選んだのはEthnaだった。<br /> 日本発だったっけ?GREEで使われたっけ?<br /> なんかそんな理由で選んだと思う。</p> <p>MVCなんて言葉はまだ知らなかったと思うし、理解もしていなかったけど、<br /> バリデーションなんかを決まった書き方で書いたりと初めてフレームワークを使ってみて便利な部分がたくさんあったような気がする。</p> <p>もう10年近く前に関わりがなくなったプロジェクトだけど、まだそれっぽいコードが動いているみたい😱😱😱</p> <h2 id="2010 - 社会人4社目 その2"><a href="#2010+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA4%E7%A4%BE%E7%9B%AE+%E3%81%9D%E3%81%AE2">2010 - 社会人4社目 その2</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/RailsによるアジャイルWebアプリケーション開発-第2版-Dave-Thomas/dp/4274066967/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=RailsによるアジャイルWebアプリケーション開発+第2版&qid=1579244186&sr=8-1">https://www.amazon.co.jp/RailsによるアジャイルWebアプリケーション開発-第2版-Dave-Thomas/dp/4274066967/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=RailsによるアジャイルWebアプリケーション開発+第2版&qid=1579244186&sr=8-1</a><br /> という本が会社にあった。<br /> 誰かが買ってきたのだろう。</p> <p>関わっていたプロジェクトも落ち着いていたので読んでみた。<br /> 具体的なECサイトという内容だったのでよく理解でき面白かった。</p> <p>業務の合間や、休日出勤したけどやる気がでないときに、この本を読んでRailsの勉強をした。</p> <p>ランチセレクターというアプリを作った。<br /> 会社周辺のよく行く店を和洋中などの属性をもたせて登録する。<br /> 今日の気分から属性を選んでボタンをクリックすると店を選ぶという単純なものだったけど<br /> 楽しんで作ったし、周りの忙しい人は面白そうでええなーと言ってた。</p> <p>この頃から業務ではRubyをメインで利用するになってきた。</p> <p>まずは社内でしか使わないものをRuby / Railsで作り、<br /> その後、他の業務でもRuby / Railsを使うようになった。</p> <p>このあたりからまた新しいことがたくさん出てきて色々わからないことが増えてきた。</p> <p>このときにRestfulの考え方が新しく出てきて悩んだ気がする。</p> <p>上記の本はRails1系だったと思うんだけど、例えばユーザの編集画面のURLは<br /> <code>/users/edit/1</code> だった<br /> Rails2系からは<br /> <code>/users/1/edit</code> になっていた。<br /> 自分がよく使っていた形も前者だったのでRails2の形になったときになんだろうこれと思った。</p> <p>Rubyを使っていくと色々と新しい言葉が出てきた<br /> イテレータ、ブロック、ラムダ<br /> このあたりはすぐには理解できなかったと思う。<br /> やっていくうちになんとなくわかってきて今に至っている。</p> <p>MVCやオブジェクト指向なんかは<br /> 「完全に理解した」と「全くわからん」の繰り返しだ。</p> <h2 id="2015 - 社会人 5社目"><a href="#2015+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+5%E7%A4%BE%E7%9B%AE">2015 - 社会人 5社目</a></h2> <p>転職した。<br /> Rubyを使う仕事に関われた。<br /> が、1年でまた転職。</p> <h2 id="2016 - 社会人 6社目"><a href="#2016+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+6%E7%A4%BE%E7%9B%AE">2016 - 社会人 6社目</a></h2> <p>この頃には、わからないことも調べながら理解していくことが出来てきた気がする。</p> <p>ReactやVue.jsを使うようになったけど、<br /> 何がわからないかわからないというような状態にはならなくなった。</p> <h2 id="2019 フリーランス 1年目"><a href="#2019+%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9+1%E5%B9%B4%E7%9B%AE">2019 フリーランス 1年目</a></h2> <p>2019年からフリーランスとしてやっている。<br /> 最近ではRuby以外だとJavascriptをよく使う。</p> <p>こちらは未だにわからないことだらけだけど、<br /> 何がわからないか少し具体的になってきた気がする。</p> <p>Promiseは全然わからん。async/await、setTimeout<br /> このあたりが出てくると頭がこんがらがる。</p> <p>これまでに出てきた言語を見るとわかるように学生の頃のC言語以外は<br /> 静的型付け言語の経験はない。<br /> なので最近のTypeScriptもよくわからない。<br /> Reactの案件で使われていることがあるけど、ライブラリなどの型が違ってコンパイルが通らず<br /> どうすればよいのかわからずanyにしてみたり。</p> <p>色々経験してきて、これを学べば何ができるようになるのかが想像できるようになったのだろうか。</p> <h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2> <p>こうやって振り返ってみると、<br /> インターネットが普及して、Webアプリケーションが一般的になってきたことで<br /> 卒研で学んだWebアプリの知識を活かせる仕事につけたことはすごく運が良かったと思う。</p> <p>プログラミングでつまずいたことという点で言えば</p> <ul> <li>なにがわからないかがわからなかった。</li> <li>やってることで何ができるようになるのかイメージできなかった。(しなかったのかも)</li> </ul> <p>今になって思ったけど、子供の頃から文法というものが苦手だったのかもしれない。<br /> 小学生のころは国語は苦手だった。中学生でも英語は苦手だった。<br /> 文法というものを意識したことがない気がする。</p> <p>プログラミングも文法がある。<br /> 文法を意識していないから何もわからなかったのだろう。</p> <p>他にも、小学生のころに応用問題が苦手のようですと言われてた。<br /> 学んだことを応用してなにかに活かすとかが苦手なのだろう。<br /> 具体、抽象を言ったり来たりするのも苦手なのだろう。</p> taira.masaru tag:crieit.net,2005:PublicArticle/15682 2020-01-14T11:58:31+09:00 2020-01-14T11:58:31+09:00 https://crieit.net/posts/web-scraping-using-python PythonによるWebスクレイピングを解説 <p>価格監視、ビジネス分析などのデータ関連プロジェクトを実施する場合、常にWebサイトからデータをエクセルに記録する必要があります。ただし、データを1行ずつコピペするのは時代遅れになり、<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/web-scraping-introduction/">Webスクレイピング</a>におけるニーズが高まっています。この記事では、Webデータを自動収集する方法、つまりPythonでWebスクレイピングを行う方法を説明します。</p> <h1 id="ステップ0:はじめに"><a href="#%E3%82%B9%E3%83%86%E3%83%83%E3%83%970%EF%BC%9A%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">ステップ0:はじめに</a></h1> <p>Webスクレイピングとは、Webサイトからデータを取得するのに役立つ技術です。Pythonなどのプログラミング言語以外に、APIまたは<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/">Octoparse</a>のような<a target="_blank" rel="nofollow noopener" href="https://www.octoparse.jp/blog/top-30-free-web-scraping-software">スクレイピングツール</a>もWebスクレイピングを行うことができます。</p> <p>AirbnbやTwitterなどの大規模サイトの場合、サイトにある情報をできるだけ広く共有するために、API を通してデータにプログラムレベルでアクセスし、企業、開発者、利用者に提供します。APIはApplication Programming Interfacesの略で、2つのアプリケーションが互いに通信できるソフトウェアビルディングブロックです。ほとんどの人にとって、APIはデータを取得するための最も適したアプローチです。</p> <p>ただし、全てのサイトはAPIサービスを提供するわけではありません。APIを提供しても、取得できるデータが必要なものではない場合もあります。したがって、Pythonを活用してWebクローラーを自作することは、強力で柔軟なソリューションになります。</p> <p><strong>では、なぜPythonが選ばれた言語なのでしょうか?</strong></p> <p><strong>柔軟性:</strong> 私たちが知っているように、Webサイトはよく更新されます。コンテンツだけでなく、Web構造も頻繁に変更されます。Pythonは動的に入力可能で生産性が高いため、使いやすい言語です。したがって、はコードを簡単に変更し、Webサイトの更新速度に追いつくことができます。</p> <p><strong>強力:</strong> Pythonには、有用で成熟したライブラリがたくさんあります。例えば、Requests、BeautifulSoupは、URLを取得し、Webページから情報を引き出すのに役立ちます。Seleniumは、Webクローラーが人間のブラウジング動作を真似できるようにすることで、一部のスクレイピング防止手法を回避するのに役立ちます。さらに、re、numpy、およびpandasを使用して、データのクリーンアップと処理を行うことができます。</p> <p>それでは、PythonによるWebスクレイピングの旅を始めましょう!</p> <h1 id="ステップ1:Pythonライブラリをインポートする"><a href="#%E3%82%B9%E3%83%86%E3%83%83%E3%83%971%EF%BC%9APython%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B">ステップ1:Pythonライブラリをインポートする</a></h1> <p>このチュートリアルでは、Yelpからレビューをスクレイピングする方法を示します。BeautifulSoupとRequestsの2つのライブラリを使用します。これらの2つのライブラリは、PythonでWebクローラーを構築する際に一般的に使用されます。最初のステップは、この2つのライブラリをPythonにインポートして、これらのライブラリの関数を使用できるようにすることです。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/ee38043b-1cf0-5edb-3018-cde7f861a517.png" alt="ライブラリをインポートする.png" /></p> <h1 id="ステップ2:WebページからHTMLを抽出する"><a href="#%E3%82%B9%E3%83%86%E3%83%83%E3%83%972%EF%BC%9AWeb%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8B%E3%82%89HTML%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B">ステップ2:WebページからHTMLを抽出する</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://www.yelp.com/biz/milk-and-cream-cereal-bar-new-york?osq=Ice+Cream">https://www.yelp.com/biz/milk-and-cream-cereal-bar-new-york?osq=Ice+Cream</a> からレビューを抽出しようとします。まず、URLという変数にURLを保存します。次に、このWebページのコンテンツにアクセスし、Requestsでurlopen()関数を使用して、HTMLを「ourUrl」に保存できます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/3ed8515c-2ae9-1692-e7c5-b4b5ca659249.png" alt="HTMLを抽出する.png" /></p> <p>それで、BeautifulSoupを使ってWebページを解析します。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/b0630902-1ea5-36fa-5050-415a3826eddf.png" alt="Webページを解析.png" /></p> <p>このWebサイトの生のHTMLである「Soup」ができたので、prettify()と呼ばれる関数を使用して生データを消去し、それを印刷して「Soup」のHTMLのネスト構造を確認できます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/19ab0e0e-7b15-0285-54d3-7e35f7db4357.png" alt="prettify.png" /></p> <h1 id="ステップ3:レビューを見つけて抽出する"><a href="#%E3%82%B9%E3%83%86%E3%83%83%E3%83%973%EF%BC%9A%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%A6%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B">ステップ3:レビューを見つけて抽出する</a></h1> <p>次に、このWebページでレビューのHTMLを見つけて抽出し、保存します。Webページの各要素には、唯一のHTML「ID」があります。IDを確認するには、Webページでそれらを検査する必要があります。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/d8e28b2b-84c3-c956-a4d8-dd482175c6b1.png" alt="要素の検証.png" /></p> <p>「Inspect element(要素の検証)](「Inspect(検証))をクリックすると、レビューのHTMLが表示されます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/0d48caf6-e20f-f695-5b4f-52fa0462a93c.png" alt="HTMLが表示されます.png" /></p> <p>この場合、レビューは「p」というタグの下にあります。そのため、まずfind_all()という関数を使って、これらのレビューの親ノードを見つけます。そして、ループ内の親ノードの下にタグ「p」を持つすべての要素を見つけます。すべての「p」要素を見つけたら、それらを「review」という空のリストに保存します。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/7d03c63a-5992-20ac-8922-44aea1eb3991.png" alt="レビュー.png" /></p> <p>これで、そのページからすべてのレビューを取得できます。いくつのレビューを抽出したか見てみましょう。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/944c1728-c0cc-3dec-345d-ae3c7100ae9f.png" alt="レビュー数.png" /></p> <h1 id="ステップ4:レビューを処理する"><a href="#%E3%82%B9%E3%83%86%E3%83%83%E3%83%974%EF%BC%9A%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%82%92%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B">ステップ4:レビューを処理する</a></h1> <p>各レビューの最初に<code><p lang = 'en'></code>、レビューの途中に<code><br/></code>、およびレビューの終わりに<code></ p></code>などの役に立たないテキストがまだあることに注意する必要があります。</p> <p><code><br/></code>は改行を表します。レビューに改行を入れる必要はありませんので、削除する必要があります。また、<code><p lang = 'en'></code>と<code></ p></code>はHTMLの始まりと終わりであり、これらも削除する必要があります。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/c31cad4a-2a12-047c-bf22-92ae926f411f.png" alt="レビューを処理する.png" /></p> <p>最後に、20行未満のコードですべてレビューをきれいに取得しました。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>以上はYelpから20件のレビューを収集するデモです。しかし、実際には、他の多くの状況に直面する必要があるかもしれません。例えば、他のページに移動してこのショップの残りのレビューを抽出するには、ページネーションなどの手順が必要になります。または、レビュアー名、レビュアーの場所、レビュー時間などのその他の情報も収集する必要があります。</p> <p>上記の操作を実装してより多くのデータを取得するには、Seleniumや正規表現などの関数とライブラリをさらに学習しなければなりません。Webスクレイピングの課題を掘り下げるのにより多くの時間を費やすことは興味深いでしょう。</p> <p>ただし、Webスクレイピングを行う簡単な方法を探している場合は、Octoparseのようなスクレイピングツールが一番いいソリューションになるかもしれません。Octoparseは、コードを各必要なく、Webサイトから情報を簡単に取得できる強力なWebスクレイピングツールです。Webスクレイピングをマスターして、Webデータの取得を自動化にしましょう!</p> Octoparse Japan tag:crieit.net,2005:PublicArticle/15400 2019-09-16T11:59:46+09:00 2019-09-16T16:18:27+09:00 https://crieit.net/posts/d799342f4d332dc3b4391978cb05134b お前らオブジェクト指向なんか真面目に信仰して勉強してもまともなプログラミングは書けないことについて☆(^~^)<書きかけ> <h1 id="それより写像"><a href="#%E3%81%9D%E3%82%8C%E3%82%88%E3%82%8A%E5%86%99%E5%83%8F">それより写像</a></h1> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 疑似コードで説明しよう☆ 日付を出したいとするぜ☆」</p> <p>Test:</p> <pre><code>Print Today </code></pre> <p>Output:</p> <pre><code>2019-09-16 </code></pre> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 プログラムを <code>Test:</code>、 <code>Output:</code> に分けて書くのは お父んの流行りか☆?」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 プログラムの親は数学で、数学がやる式の計算というのは写像なんで、写像を覚えろだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/03dce092de0195e973a57a7f7143225b5d7ef18f2cc8b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/03dce092de0195e973a57a7f7143225b5d7ef18f2cc8b.png?mw=700" alt="20190916comp1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 これを疑似コードで 当てはめると……☆」</p> <p><a href="https://crieit.now.sh/upload_images/353d17b1e469e6d916d2e470aa2ca2885d7ef259ca311.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/353d17b1e469e6d916d2e470aa2ca2885d7ef259ca311.png?mw=700" alt="20190916comp2.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 でも みんな <code>だから何?</code> って言って 飽きるのよ。<br /> 数学は もっと難しくて 理解しがたくて 複雑で 摩訶不思議で 掛け軸に飾るような精神論であってほしいのよ。<br /> 手に届かないものであってくれれば 今のままの自分で居られるから」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 現実より数学が難しかったら 誰が数学を使うんだぜ☆ 現実を使うに決まってんだろ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 じゃあ次は 年は要らないとしよう☆ 月日だけ欲しくて、<code>月/日</code> みたいに出したいとしよう☆」</p> <p>Test:</p> <pre><code>$text <= Format "MM/DD" $(Today) Print $today </code></pre> <p>Output:</p> <pre><code>09/16 </code></pre> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 コマンド・シンタックスだな☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 これを疑似コードで 当てはめると……☆」</p> <p><a href="https://crieit.now.sh/upload_images/bf3a87611711121ab2508b3edccb40f95d7ef5b127e94.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bf3a87611711121ab2508b3edccb40f95d7ef5b127e94.png?mw=700" alt="20190916comp3.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 Formatが2変数関数 なのに比べ、 Printは1変数関数☆ それだけの違い☆<br /> $text は分かりやすく説明するためだけに置いている 中間変数だぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 例えば 次のように $text を省く式も考えられるぜ☆」</p> <p>Test:</p> <pre><code>Print $(Format "MM/DD" $(Today)) </code></pre> <p>Output:</p> <pre><code>09/16 </code></pre> <p><a href="https://crieit.now.sh/upload_images/c53ea8ee15e80a8955bd9379be4541ff5d7ef7dbe158f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c53ea8ee15e80a8955bd9379be4541ff5d7ef7dbe158f.png?mw=700" alt="20190916comp4.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ただし これは 書き方を省いただけで、ステップは省けていない☆ どちらも同じだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 今日の日記を書くのに 1日かかっていたら 日記は半分しか書けないからな☆<br /> 書き方を省くことは 数学の本質だぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ただ、プログラムを コマンド・シンタックスで書くことは稀だぜ☆ だいたい次のような感じになる☆」</p> <p>Test:</p> <pre><code>Print( Format( "MM/DD", Today() ) ) </code></pre> <p>Output:</p> <pre><code>09/16 </code></pre> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 ファンクション・シンタックスだな☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 丸かっこと カンマが増えて 目がチカチカするんだけど」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 じゃあ 次のように書ければどうだろうか☆?」</p> <p>Test:</p> <pre><code>Today.Format("MM/DD").Print() </code></pre> <p>Output:</p> <pre><code>09/16 </code></pre> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 ドット・シンタックスだな☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 すっきりしたけど、なんで書き方には いろんな種類があるの?」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 最初は べつにシンプルでなければいけないほど 今の自分に困っていなかったが、<br /> だんだん 困ってきて シンプルを目指し始めたんだろ☆」</p> <p><a href="https://crieit.now.sh/upload_images/df95d227bbb26af4e12745c11d175dbe5d7f0e9c542fb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/df95d227bbb26af4e12745c11d175dbe5d7f0e9c542fb.png?mw=700" alt="20190916comp5.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑ 出口、終値、<strong>戻り値</strong>、呼び方はいろいろだが 出口が複数個あるのもある☆<br /> これらは Tuple(タプル)と呼ばれているのを見かけるぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 タプル自体は ただの <strong>名前なしリスト</strong> だけどな☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑ プログラム言語によって 使える機能、使えない機能 がマチマチなので、<br /> プログラムを勉強するとは 何なのか、については 誰かが音頭を取れるようなものでも ないと思う☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 数学をやればいいのよ。算数でも 高校数学でも 大学数学でもなく、数学」</p> <p><a href="https://crieit.now.sh/upload_images/7b9ce2c7dadca5df8283d4be3d0b885b5d7f1278e4142.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b9ce2c7dadca5df8283d4be3d0b885b5d7f1278e4142.png?mw=700" alt="20190916comp6.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑ <strong>写像が 本当に便利になるのは</strong> Map(マップ) からだぜ……、というか、<br /> 写像を英語で言うと Mapping(マッピング)☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 だが この話は またヒマなときにする☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 お父んは 初心者を叩いて回るスタイルだな☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 いや、今のうちに やってしまおう☆」</p> <p><a href="https://crieit.now.sh/upload_images/91c30501f6f743026baa316a11a4366b5d7f2c220f998.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/91c30501f6f743026baa316a11a4366b5d7f2c220f998.png?mw=700" alt="20190916comp7.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑こんな形の Map があれば……☆」</p> <p><a href="https://crieit.now.sh/upload_images/5d25d2e1cbbd0915349f702395279d1e5d7f2cdfc7b2f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5d25d2e1cbbd0915349f702395279d1e5d7f2cdfc7b2f.png?mw=700" alt="20190916comp7a1b1.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑結果も こんな感じになったり、都合により そうでなかったりする☆<br /> 詳しくは ドキュメント・コメントに だいたい書いてあるだろう☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 プログラム言語は <strong>数学を元ネタ</strong> にして 用語を借りてくるから、数学やった方が早い☆」</p> <p><a href="https://crieit.now.sh/upload_images/4c6a1a1735de096d6c4409857d66a6fe5d7f303e042c5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4c6a1a1735de096d6c4409857d66a6fe5d7f303e042c5.png?mw=700" alt="20190916comp8.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 で、ここで <strong>要素</strong> の個数は <strong>可変</strong> にしておく☆<br /> このマップは 入り口が5個、出口が5個 固定です、みたいなマップは 使いづらいからな☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 こんな 要素の個数が多いマップ、もう 絵図にできないわね」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 できる☆」</p> <p><a href="https://crieit.now.sh/upload_images/b0d50553757d8059d803b0dc1650e7fc5d7f3216e896f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b0d50553757d8059d803b0dc1650e7fc5d7f3216e896f.png?mw=700" alt="20190916comp9.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 ↑こう描く☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 どっかで見た図なんだけど!」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 <strong>まとまり</strong> を扱う Map を考えればいい☆<br /> というか、 まとまりを扱うのが Map、 写像 だぜ☆<br /> このとき 数学の集合論では まとまりのことを Sets(集合)というが、プログラム言語では Collection (コレクション)と呼ぶ例がよくある☆」</p> <p><a href="https://crieit.now.sh/upload_images/ad5ae16b43546f17daefb8ed4fc0ccab5d7f343b0e63c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ad5ae16b43546f17daefb8ed4fc0ccab5d7f343b0e63c.png?mw=700" alt="20190916comp10.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 C言語などの プログラム言語では、この Map に当たる部分を <strong>function(関数)</strong> と呼んでいる☆<br /> Map じゃないから 関数と呼ぶので合ってるんだが、 そのうち Map を使いたくなるんだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5326427e6f9848c406aab8428b16560d5d7f34e36c7cc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5326427e6f9848c406aab8428b16560d5d7f34e36c7cc.png?mw=700" alt="20190916comp11.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 Domain(ドメイン)に当たる部分は <strong>Parameter(引数)</strong> ☆<br /> Domain じゃないから パラメーターと呼ぶので合ってるんだが、そのうち Domain を使いたくなるんだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/537f2eab0f8c470fa1d6f866db19721c5d7f352cc895d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/537f2eab0f8c470fa1d6f866db19721c5d7f352cc895d.png?mw=700" alt="20190916comp12.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 Codomain(コドメイン)に当たる部分は <strong>Return(戻り値)</strong> と呼ぶ☆<br /> Codomain じゃないから戻り値と呼ぶので合ってるんだが、そのうち Codomain を使いたくなるんだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 昔のプログラムは 1ステップ ずつ書きたがる文法をしてるよな☆ ループ文書いたり。<br /> Python だとむしろ map を使え、みたいな感じだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 機械がどう動いているか 人間が判断して 書いていくのが 機械寄りのプログラムだからな☆<br /> 人間寄りのプログラムがあっていいし、機械学習世代では 人間寄りのプログラムの書き方も必須だぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 だが この話は またヒマなときにする☆」</p> <h1 id="ジェネリクス、ポリモーフィズム"><a href="#%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9%E3%80%81%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0">ジェネリクス、ポリモーフィズム</a></h1> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 昔のシンプルと 今のシンプルは違う☆ 例えば☆」</p> <p>Test:</p> <pre><code>$apple as char = 0 Print $($apple + 1) $banana as short = 127 Print $($banana + 1) $cherry as int = 32767 Print $($cherry + 1) $daikon as long = 2147483647 Print $($daikon + 1) </code></pre> <p>Output:</p> <pre><code>1 128 32768 2147483648 </code></pre> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 昔は変域を気にした☆<br /> 127に 1 を足したら -128 になってしまうかもしれないし、エラーで落ちるかもしれない☆<br /> だから C言語には 数が4種類あった☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 全部 long にしたらダメなのか☆?」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 メインメモリが 32MB(メガバイト) の時代とかあった☆<br /> 現代は メインメモリが 16GB(ギガバイト) とかだろ☆<br /> つまり 省スペース でどれだけ何ができるか、という時代があったんだぜ☆ 型とはメモリの使い方だった☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 だから例えば☆」</p> <p>Test:</p> <pre><code>$a as char = 2 $b as char = 3 Print $(MaxChar $a $b) $a as short = 2 $b as short = 3 Print $(MaxShort $a $b) $a as int = 2 $b as int = 3 Print $(MaxInt $a $b) $a as long = 2 $b as long = 3 Print $(MaxLong $a $b) </code></pre> <p>Output:</p> <pre><code>3 3 3 3 </code></pre> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 最大値の方を選ぶ関数 Max も、型に合わせて MaxChar、 MaxShort、 MaxInt、 MaxLong が用意されていた時代が<br /> 短いながらも歴史上に存在した☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 char 型と short 型を比較したいときはどうすんの?」</p> <p>Test:</p> <pre><code>$a as char = 2 $b as short = 3 Print $(MaxChar (short)$a $b) </code></pre> <p>Output:</p> <pre><code>3 </code></pre> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 いったん char を でかい方の short 型に 格上げしてから比較する☆<br /> これを <strong>型キャスト</strong> と呼んだ☆<br /> Python では こんなの見かけることもないだろ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 Rust では見かけるよな☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 Rust 使いは型に合わせて Max 型を何個も用意しているの?」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 そんなことはしない☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 しかし こんな話は <strong>インプリメント</strong> の話しであって <strong>プログラミング</strong> の話しではないことに<br /> 注意してもらいたい☆<br /> つまり、コーディングマン、 <strong>コーダー</strong> 寄りの話しなんだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 <strong>プログラミング</strong> の話しなのか、 <strong>コーディング</strong> の話しなのかは まず区別しろだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5ac9fa3b390b658160717a7c1ef5008a5d7eeaf5bfdb9.gif?mw=700" alt="KIFUWARABE_80x100x8_01_Futu.gif" /></a><br /> 「 お父んは コーダー寄り だけどな☆」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 <strong>プログラミング</strong> を基礎教養にして  <strong>型キャスト</strong> なんか知ってるやつが出てきても<br /> 他の分野に応用が利かないだろ☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 <strong>Visual Basic 2003</strong> を覚えたら もう Python 3 とか JavaScript ES6 とか覚えたくないのは人情よね。<br /> プログラミングを 基礎教養にするって 何なのかしら?<br /> <strong>覚える必要のある 1つのプログラム言語 だけ</strong> 教えてくれればいいの」</p> <p><a href="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3da2d4690cf2c3f101c5cbc0e48729f55d7eeae594449.gif?mw=700" alt="KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif" /></a><br /> 「 喜べ、フロントエンド、バックエンド、オフィスソフト、ゲーム、人工知能、組み込み、 <strong>それぞれ1個ずつ</strong> 覚えろだぜ☆」</p> <p><a href="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/058791c2dd4c1604ce1bd9ec26d490ae5d7eeb04596c8.gif?mw=700" alt="OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif" /></a><br /> 「 <strong>やだ</strong>!」</p> <p><書きかけ></p> むずでょ tag:crieit.net,2005:PublicArticle/15308 2019-08-08T16:59:44+09:00 2019-08-08T16:59:44+09:00 https://crieit.net/posts/b3bfd1bb9405f85d0729dc4ce3158049 お前ら、「コンパイルできて実行ファイルは高速に動作し、けれどもインタプリタ(スクリプト)言語みたいにプログラミングできる言語」が欲しいんだろ? <p>ネタにマジレス</p> <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">未来がない言語、私はPythonだと思っている。</p>— Ryou Ezoe(江添 亮) (@EzoeRyou) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/EzoeRyou/status/1158338266237526016?ref_src=twsrc%5Etfw">2019年8月5日</a></blockquote> <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">未来がない言語はSmalltalkだと思う。もうそろそろSmalltalkを超える言語ができると思うから。そういう言語を創る能力がある人たちも、それを発展させるコミュニティも、実現するのに十分な基盤技術もある。あとはポンと生まれるだけ。 <a target="_blank" rel="nofollow noopener" href="https://t.co/hL4EJLL91g">https://t.co/hL4EJLL91g</a></p>— 極端流形式仕様 初代𝕍𝕚𝕖𝕟𝕟𝕒𝕋𝕒𝕝𝕜𝕖𝕣 (@tomooda) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/tomooda/status/1158655901739307008?ref_src=twsrc%5Etfw">2019年8月6日</a></blockquote> <p>発言者達に認知バイアスが大いに掛かっているのはよーくわかる。C++は20の仕様を満たす実装が生まれれば、そりゃあ強いだろう。</p> <p>ただ如何せん蟠りを抱いているので、いつもの事ながらネタにマジレスポエムを書いてけちょんけちょんにされる。</p> <h1 id="俺の思う今日での「コンパイルできて実行ファイルは高速に動作し、インタプリタ(スクリプト)言語みたいにプログラミングできる言語」"><a href="#%E4%BF%BA%E3%81%AE%E6%80%9D%E3%81%86%E4%BB%8A%E6%97%A5%E3%81%A7%E3%81%AE%E3%80%8C%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AF%E9%AB%98%E9%80%9F%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%97%E3%80%81%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%EF%BC%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%EF%BC%89%E8%A8%80%E8%AA%9E%E3%81%BF%E3%81%9F%E3%81%84%E3%81%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E3%81%8D%E3%82%8B%E8%A8%80%E8%AA%9E%E3%80%8D">俺の思う今日での「コンパイルできて実行ファイルは高速に動作し、インタプリタ(スクリプト)言語みたいにプログラミングできる言語」</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://nim-lang.org/">Nim</a>では?</p> <p>JavaScriptとPythonを融合し、そのソースコードが出力するのは、最適化したC/C++やJavaScriptというど変態言語である。しっかりと <a target="_blank" rel="nofollow noopener" href="https://nim-lang.org/docs/nims.html">Nim Script</a> なんていうのもある。</p> <p>もう一つ紹介するなら、<a target="_blank" rel="nofollow noopener" href="https://haxe.org/">Haxe</a>もめちゃつよ言語だろう。C++, Python, Java, CSharp, PHP, Luaと大体行ける。</p> <p>とは言いつつも、やはり<a target="_blank" rel="nofollow noopener" href="https://dlang.org/">D</a>も捨てがたい。ただ友達(多分。私は勝手に彼のことをそう思っている)に「<a target="_blank" rel="nofollow noopener" href="https://github.com/tanitta/armos">D言語によるクリエイティブコーディングフレームワーク</a>を<a target="_blank" rel="nofollow noopener" href="https://tanitta.net/">作っている人</a>」が居るのでそう思ってしまう。これも私の認知バイアスだ。</p> <p>それと忘れちゃいけないのがLispやSchemeだな。その代わり、たくさんの実装があってどれから触ればいいか、ほぼ同じ言語なのに方言が違うため、色々困る。</p> <h2 id="インタプリタ言語とコンパイラ言語"><a href="#%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E8%A8%80%E8%AA%9E%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E8%A8%80%E8%AA%9E">インタプリタ言語とコンパイラ言語</a></h2> <p>今日のマシンスペックでは、どちらがどれだけ早いかなんて気にすることもない。<br /> 気にするのはよっぽどシビアな組み込みのや競技プログラミングやゲームプログラミングの世界だろう。</p> <p>昔はよく、<br /> 「インタプリタ言語は1行1行実行して結果を出してるから遅い」<br /> とは言われた。</p> <p>今でもそれはそうなのだが、マシンスペックが20年前のスーパーコンピューターよりも格段に良いデスクトップないしラップトップマシンがゴロゴロしている今日では、ボトルネックになるのは通信などによるI/O周りの問題ではなかろうかと思う。</p> <p>それを省けば、インタプリタだろうがコンパイラだろうが気にすることは特になくなった。</p> <h3 id="REPL搭載言語"><a href="#REPL%E6%90%AD%E8%BC%89%E8%A8%80%E8%AA%9E">REPL搭載言語</a></h3> <p>インタプリタ言語にはいつもくっついてくる、生真面目で物静かなやつがいる。<strong>REPL</strong>だ。</p> <p>律儀にソースコードを何行も書いてプログラミングしている方々には無縁なのかもしれないが、REPLは数行(むしろ1行)の実行結果を見たいときなんかに、ちょっと尋ねられる良き相棒である。隣の机でプレゼン資料を作るのに必死な先輩なんかより声を掛けやすいだろう。</p> <p>こいつと会話して、<em>エラーをちゃんと読み解く</em> 様にしたら、設計以降のコーディングの問題は割と片付く。</p> <p>ちょっと昔はインタプリタ言語を使う利点としてREPLが挙がっていたと思うが、今となってはほぼどの言語にも搭載しているといっても過言ではないだろう。</p> <p>誤解しないでいただきたいのが、今日のコンパイラ言語も1行1行実行して結果を出しているという訳では<em>ない</em>。</p> <p>コンパイラ言語だって、コンパイル時に<strong>最適化</strong>という処理を行い、あなたの書いたソースコードをコンピューターが読みやすくかつ実行しやすい処理に書き換えているのである。この辺の話は思い切って <a target="_blank" rel="nofollow noopener" href="https://llvm.org/">LLVM</a>の実装について調べてみても面白いのかもしれない。私はまだ踏み込んでいない。</p> <h1 id="Smalltalk環境はなぜ流行らなかったのか"><a href="#Smalltalk%E7%92%B0%E5%A2%83%E3%81%AF%E3%81%AA%E3%81%9C%E6%B5%81%E8%A1%8C%E3%82%89%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B">Smalltalk環境はなぜ流行らなかったのか</a></h1> <p>Smalltalk環境は本当にすごいと思った。<a target="_blank" rel="nofollow noopener" href="https://pharo.org/">Pharo</a>を一度どこかのドキュメントを読みながらでいいから触ってほしい。</p> <p>しかし、流行らなかった。なぜかは<a target="_blank" rel="nofollow noopener" href="https://sumim.hatenablog.com/">sumim</a>さんがよく存じ上げていると思う。</p> <p>また、これも確かに的を得ているのかもしれない。</p> <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Smalltalkは単なるプログラミング言語ではなくIDEですらあったので流行らないのは必然だった。</p>— Ryou Ezoe(江添 亮) (@EzoeRyou) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/EzoeRyou/status/1158656766617346048?ref_src=twsrc%5Etfw">2019年8月6日</a></blockquote> <p>「コンピューターを便利に使いたい<strong>だけ</strong>なのに、アプリ開発環境まで積んでいる」</p> <p>私の様に幼少期はおもちゃを分解して中身を覗くのが楽しくて仕方のない劣化知的生命体には、<br /> 「こんなに素晴らしい環境が流行らないのはおかしい!」<br /> と思ってしまうが、世の中そうではないらしい。</p> <p>みんな、道具を作るのは面倒だし難しいと思っているのだ。</p> <p>ましてや、<br /> 「ふとした拍子にプログラムの中身を開けてしまったら」<br /> と考えると、怖いのだろう。</p> <h2 id="でもさ、痒いところに手が届かなかったら、道具作りたいじゃん"><a href="#%E3%81%A7%E3%82%82%E3%81%95%E3%80%81%E7%97%92%E3%81%84%E3%81%A8%E3%81%93%E3%82%8D%E3%81%AB%E6%89%8B%E3%81%8C%E5%B1%8A%E3%81%8B%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E3%82%89%E3%80%81%E9%81%93%E5%85%B7%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%84%E3%81%98%E3%82%83%E3%82%93">でもさ、痒いところに手が届かなかったら、道具作りたいじゃん</a></h2> <p>自分はそうである。</p> <p>探したって良いのだろうけれど、手元に作れる環境があるのに作らないという選択に対して、とても面倒くさい印象を覚えがちである。これは自分がへたくそだけどプログラミングやイラストや3DCGモデリングや作曲ができてしまうからそう思ってしまうのかもしれない。</p> <h3 id="自分の欲しいコンテンツさえ自分で作りたがる"><a href="#%E8%87%AA%E5%88%86%E3%81%AE%E6%AC%B2%E3%81%97%E3%81%84%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%95%E3%81%88%E8%87%AA%E5%88%86%E3%81%A7%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%8C%E3%82%8B">自分の欲しいコンテンツさえ自分で作りたがる</a></h3> <p>私が欲しいものを誰かが作ってくれれば、それに越したことはない。でも世の中そうでもない。ましてや僕にはお金もない。毎月給料日から3日で現金が財布から無くなり、預金残高も0になるような劣化知的生命体なので。</p> <p>だったら、自分で能力を身に着けて作るという方向に発想が行きがちなのである。</p> <p>なので批評家という人種があまり好きになれない。<br /> 「お前の欲しいオカズくらい、自分で作れボケ」<br /> とつい思うし、自分に対しても、<br /> 「俺が欲しいオカズくらい、自分で作れクソムシ」<br /> と思う。</p> <h1 id="今日になってよくなったと思うけど、パソコンに思っていた「不自由」"><a href="#%E4%BB%8A%E6%97%A5%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%88%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E3%81%A8%E6%80%9D%E3%81%86%E3%81%91%E3%81%A9%E3%80%81%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E3%81%AB%E6%80%9D%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%80%8C%E4%B8%8D%E8%87%AA%E7%94%B1%E3%80%8D">今日になってよくなったと思うけど、パソコンに思っていた「不自由」</a></h1> <p>リンゴや窓のシンボルのOSは、せっかくそのパソコンに開発環境を作るポテンシャルがあったとしても、ユーザーをただのOS利用者として閉じ込めておこうという雰囲気をものすごく感じていた。</p> <p>15年前くらいだったら、下手すると開発環境を作るのに、小学生のお小遣いでは手に入れることのできない様な額が必要だった。Visual Studio 6が出たての頃の話。</p> <p>その辺りの意識が変わり始めたのは、やはりインターネットの影響だろうか。HTMLがWindowsのメモ帳でも組めることを知った私は、水を得た魚の様になっていたと思う。</p> <p>ソフトウェア開発などの不自由が最近のリンゴや窓のシンボルのOSでも改善された様子があるので、悪くはない世の中になったのかなとは思う。</p> <p>ただ、私としては、もっと気軽にちょっと便利なツールを、いろんな人たちが自由に作ってくれるといいと思っている。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>コンピューターを使った創作活動は楽しい。ついでに言うと、コンピューターと協力して作る創作活動は楽しい。だから私はプログラマでいることにこだわり続けるのだろうし、コンテンツ制作者になることにこだわり続けるのだろう。</p> <p>解ってくれる人が居ればそれでいいが、解ってもらえるきっかけがいろんな人に舞いこんだらなと思う。</p> <p>だからどの言語が将来性がないとか、どのフレームワークはお終いだとか。そんなのは少し脇に置いて、自由にモノを作りたいだけなのだ。</p> <p>確かに、使う道具は洗練されていた方がいいし、新しい考え方や古来からある優れた考え方を取り入れた道具・思考は積極的に取り入れるべきだ。</p> <p>「いつまで<em>不平不満を垂れているだけ</em>の<strong>ユーザー様</strong>でいるんだ? <a target="_blank" rel="nofollow noopener" href="http://www.spellbinder.org/jp/index.html">スペルバインダー</a>の世界じゃあるまいし」</p> まんじゅ(´ん`) tag:crieit.net,2005:PublicArticle/15282 2019-07-27T16:06:06+09:00 2019-07-27T16:06:06+09:00 https://crieit.net/posts/4fc1cf99350a61d8fa1d834537516cf5 僕がサービスを作る時の手順 <p>どうも<a target="_blank" rel="nofollow noopener" href="https://twitter.com/leavescomic1?lang=ja">@leavescomic1</a>です。</p> <p> </p> <h2 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h2> <p>僕はちょこちょことWebサービスを作っているのですが、今日は僕がサービスを作る手順を紹介します。これからweb系のサービスを作ってみたいと思ってる方に何か参考になれば幸いです。</p> <p> </p> <p>ただ、ここで1つ注意して欲しいのは僕はエンジニアとして働いたことがないので、サービスの進め方は<strong>完全に我流</strong>です。非効率なことだったり、プロからみたらおかしいと思う点も多々あるかと思いますので、あくまでも<strong>『こんなやり方もあるんだ』</strong>くらいの気持ちで読んで頂ければと思います。</p> <p> </p> <p>説明では自分が作ったサービスの1つで初心者向けのクラウドソーシング『<a target="_blank" rel="nofollow noopener" href="https://novice-work.com/">novice</a>』を例にして紹介します。</p> <p> </p> <h2 id="STEP1 サービスのコンセプトを決める"><a href="#STEP1+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88%E3%82%92%E6%B1%BA%E3%82%81%E3%82%8B">STEP1 サービスのコンセプトを決める</a></h2> <p>まずはどんなサービスを作るのか考え、そのサービスのコンセプトを決めます。僕はいつもノートに箇条書きで書き出しています。字がとてつもなく汚いのはご愛嬌。</p> <p><a href="https://crieit.now.sh/upload_images/76494dc06877378ef64e28536d3d03c85d3bf6b584a05.JPG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/76494dc06877378ef64e28536d3d03c85d3bf6b584a05.JPG?mw=700" alt="コンセプト" /></a></p> <p> </p> <h2 id="STEP2 必要な機能を書き出す"><a href="#STEP2+%E5%BF%85%E8%A6%81%E3%81%AA%E6%A9%9F%E8%83%BD%E3%82%92%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99">STEP2 必要な機能を書き出す</a></h2> <p>作るサービスのコンセプトが決まったら、そのサービスに必要な機能をノートに書き出します。この時色々と必要な機能が出てくると思いますが、実際に最初に作る段階では必要最低限の機能のみ実装するようにした方が良いです。</p> <p> </p> <p>僕はできるだけシンプルに最初は作ろうと考えてはいるのですが、開発途中であれも、これもっていう風にいろんな機能を付けてしまい、ユーザービリティが複雑なものを作ってしまいがちなので、皆さんはシンプルに、そのサービスの核となる部分のみ作ってリリースしてしまった方がいいと思います。リリースした後に、サブ的な機能はいくらでも追加していけますし、最初から完璧なものを目指すといつまでたってもサービスをリリースすることができないと思いますので。</p> <p><a href="https://crieit.now.sh/upload_images/ce31967201287a7c7866ca6473e0d9f55d3bf6d37afa1.JPG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ce31967201287a7c7866ca6473e0d9f55d3bf6d37afa1.JPG?mw=700" alt="機能一覧" /></a></p> <p> </p> <h2 id="STEP3 データベースの設計"><a href="#STEP3+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E8%A8%AD%E8%A8%88">STEP3 データベースの設計</a></h2> <p>作るサービスの具体的な機能が決まったら、次にデータベース設計を行います。ER図を書いて、パラメーター名、型、1対多などのテーブルの関係性を決めていきます。</p> <p> </p> <p>※今現在運用しているサービスのデータベース設計は公開できないので、以前にバックエンドだけ作った段階で開発を断念したポイント交換サービスのデータベース設計を載せます。<br /> <a href="https://crieit.now.sh/upload_images/4c0efe58c09a7f8e8707b56dc9b107325d3bf6ed12095.JPG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4c0efe58c09a7f8e8707b56dc9b107325d3bf6ed12095.JPG?mw=700" alt="ER図" /></a></p> <p> </p> <h2 id="STEP4 サービスのレイアウトを書き出す"><a href="#STEP4+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99">STEP4 サービスのレイアウトを書き出す</a></h2> <p>データベース設計まで出来たら、ノートに簡単なレイアウトを書き出していきます。UI/UXを考えて、できるだけユーザーが使いやすいようシンプルなレイアウトにした方が良いと思います。僕はここが一番苦手で、全然ユーザーが使いやすいレイアウトを考えることができません。<br /> <a href="https://crieit.now.sh/upload_images/b6816dc2ee09b88e7a6e3db47793696a5d3bf716a499c.JPG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b6816dc2ee09b88e7a6e3db47793696a5d3bf716a499c.JPG?mw=700" alt="ページレイアウト" /></a><br /> <a href="https://crieit.now.sh/upload_images/6d0bcf4338babd5d222e3595ae7598775d3bf729ed32b.JPG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6d0bcf4338babd5d222e3595ae7598775d3bf729ed32b.JPG?mw=700" alt="ページレイアウト2" /></a><br />  </p> <h2 id="STEP5 バックエンドのコーディング"><a href="#STEP5+%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0">STEP5 バックエンドのコーディング</a></h2> <p>フロントエンドから先にコーディングを行うやり方もあると思うのですが、僕は個人で全てやるので、バックエンドから先にコーディングしていきます。動作を確認するために、最低限のフロント部分をここで書く場合もありますが、基本はデザイン無視でバックエンドを書いていきます。</p> <p> </p> <h2 id="STEP6 Adobe XDでページのデザインを作成"><a href="#STEP6+Adobe+XD%E3%81%A7%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90">STEP6 Adobe XDでページのデザインを作成</a></h2> <p>バックエンドが大体完成したら、次はノートに書いたページレイアウトを参考にしながら、Adobe XDを使って1ページ毎にどんなデザインにするか考えて、書きだしていきます。Adobe XD便利ですよね。ノートにレイアウトを書いたりせず、いきなりAdobe  XDでUI/UXデザインを作成していっても良いかと思います。</p> <p> </p> <p>また、サービスのプロトタイプを作る時にもAdobe XDは非常に活躍してくれると思います。Adobe XD内でページ遷移の機能を付けて、本当の動いているサービスみたいに見せることができますし。非エンジニアの方にもオススメのツールです。<br /> <a href="https://crieit.now.sh/upload_images/3e69856fecff1721494154fac00022245d3bf74eb037a.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3e69856fecff1721494154fac00022245d3bf74eb037a.jpg?mw=700" alt="デザイン図" /></a></p> <p> </p> <h2 id="STEP7 フロントエンドのコーディング"><a href="#STEP7+%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0">STEP7 フロントエンドのコーディング</a></h2> <p>Adobe XDでデザインを完成させたら、そのデザインにそってフロント部分をコーディングしていきます。レスポンシブのコーディングもここでしていきます。必要ならばJavascriptでページに動きを出したりもしていきます。</p> <p> </p> <h2 id="STEP8 テストを書く"><a href="#STEP8+%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F">STEP8 テストを書く</a></h2> <p>僕はナマケモノなので、最後にまとめてテストを書きます。『わざわざテストまで書いて作った機能をやっぱり実装するのやめる』みたいなことになったら嫌なので。個人開発だし。テストも必要最低限の部分しか書きません。核となる機能部分だけです。</p> <p> </p> <h2 id="STEP9 周辺ツールの実装"><a href="#STEP9+%E5%91%A8%E8%BE%BA%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E5%AE%9F%E8%A3%85">STEP9 周辺ツールの実装</a></h2> <p>テストがかけたら、監視ツールやログ収集ツール等を実装していきます。僕はサーバーに大体Herokuを使っているので、アドオンとしてボタン一つで実装でき、とても楽チンです。</p> <p> </p> <h2 id="STEP10 リリース"><a href="#STEP10+%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9">STEP10 リリース</a></h2> <p>最後にもう一回テストを行い、全てOKであればいよいよリリースです。お金をかけて派手に宣伝していくも良し。お金をかけずに地道に宣伝していくも良し。いろんなやり方があると思います。とりあえず一旦ここでリリースまで漕ぎ着けたので、途中で投げ出さなかった自分を褒めてあげましょう。おめでとー!!</p> <p> </p> <h2 id="その他リリースまでにやること"><a href="#%E3%81%9D%E3%81%AE%E4%BB%96%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%BE%E3%81%A7%E3%81%AB%E3%82%84%E3%82%8B%E3%81%93%E3%81%A8">その他リリースまでにやること</a></h2> <p>STEP1〜STEP10に記載したこと以外にも実際はやることはたくさんあると思います。コーディング毎にGitにプッシュしたり、サーバーにデプロイしたり、外部APIについて調べたり。あと、サービスの宣伝は開発と並行して行うのがオススメです。また、作りたいサービスの内容によってはプログラミング以外のこともやっていかなくてはいけないと思います。そういう面も考慮して1歩ずつ完成に向けて計画していきましょう。</p> <p> </p> <h2 id="さいごに"><a href="#%E3%81%95%E3%81%84%E3%81%94%E3%81%AB">さいごに</a></h2> <p>冒頭でも書きましたが、ここで紹介した手順はあくまでも僕のやり方で、皆さんがサービスの開発をするときは各々のやりやすい手順で進めていって頂ければと思います。また、サービスの規模にもよりますが、フロントエンドまである程度しっかりとしたものを作ろうと思ったらそれなりの時間がかかります。そうなると一番大切なのは技術力ではなく、<strong>サービスに対する情熱です。</strong></p> <p> </p> <p>いくらスキルが高いエンジニアでもサービスに対して情熱がなければ、何週間、何ヶ月とサービスの開発を続けることは難しいです。とにかく『<strong>絶対作ってやる</strong>』『<strong>このサービスでみんなを喜ばせたい!</strong>』という情熱さえあれば、案外なんとかなるケースが多いと思います。</p> <p> </p> <p>今回紹介した開発手順が参考になるかどうか分かりませんが、少しで皆様のお役に立てれば嬉しいです。僕もサービスの開発頑張ります。</p> <p>  </p> Naoki Mizutani tag:crieit.net,2005:PublicArticle/15256 2019-07-18T21:03:08+09:00 2019-07-18T21:03:08+09:00 https://crieit.net/posts/d5dda83657f3d95f687067d96d0188d7 勉強でもスポーツでも成長は一定じゃない。成長曲線を理解しよう。 <h2 id="自分のスキル"><a href="#%E8%87%AA%E5%88%86%E3%81%AE%E3%82%B9%E3%82%AD%E3%83%AB">自分のスキル</a></h2> <p>僕はギターが弾ける。弾けるといっても早弾きはできないが、大体の曲はコード譜を見れば弾ける。学生時代から少しずつ練習して弾けるようになった。</p> <p>僕は英語が日常会話くらいだったら話せる。フィリピンへインターンするまで全く話せなかったが、毎日語学学校でマンツーマンレッスンを受けているうちに少しづつ話せるようになった。</p> <p>僕は簡単なWebサービスだったら作れる。1年半程前から少しづつプログラミングを独学で勉強するうちに作れるようになった。</p> <p>ギター、英語、プログラミング、全てに共通することは一朝一夕では習得することができないスキルということ。いや、人前に披露できる程のスキルは、どんなスキルであっても世の中のほとんどは一朝一夕で身に付けることはできないのではないかと思う。</p> <p>まあでも、そんなことは誰でも分かっていると思う。英語が1日でペラペラになったり、ギターが1日でジミヘンくらい弾けるようになるわけがない。ただ、成長の度合いが一定ではないということを、みんなは理解していないのではないだろうか。</p> <p>ほとんどのスキルの成長は下のグラフの通りに推移していくと思う。</p> <p><a href="https://crieit.now.sh/upload_images/ffe6fa04747356c0db0f3dfbbef597235d305f85ee453.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ffe6fa04747356c0db0f3dfbbef597235d305f85ee453.png?mw=700" alt="成長曲線" /></a></p> <p>このグラフから分かることは、スキルの勉強や練習を始めてからしばらくは成果がなかなか出ないということ。プログラミングとか良い例だと思う。</p> <p>最初どんな言語でも「Hello, World!」を出力するところから始まり、メソッドやフレームワークについて1つ1つ学んでいく。僕もRubyで「Hello, World!」と初めて出力できた時は嬉しかった。「自分でもプログラムを書くことができるんだ!」と感動した。でも勉強していく内に感動は薄れ、だんだん絶望に変わっていく。</p> <p>プログラミングの勉強を始めたばかりの人にとって、教科書に書いてある大抵のことは分からないと思う。とりあえず書いてあるコードをコピぺして動かして、またコピペして動かして、そのうちエラーが出て、必死にぐぐってみたいな感じで進めていく人が大半なのではないだろうか。(僕は少なくともそうだったし、今も分からないことがほとんど...)</p> <p>プログラミングの勉強を始めて数日はみんな楽しいと思う。ただ、次第に今のスキルと自分が目標とするスキルの間に、とてつもなく深い溝があることに気づき、絶望し、やめていく。</p> <p>例外なのは学校のテスト。学校のテストは上のグラフの水色で記した「自分が考える成長曲線」と結構近い形で点数もやればやるだけ上がっていくと思う。大抵の学校では事前にテスト範囲が教えられ、生徒は範囲に沿って勉強する。範囲は1日、2日程度あれば全て網羅できてしまうことがほとんど。僕たちは学生時代にその経験があるから、特に勉強するということ関してはどの分野の勉強でも「勉強すればした分だけ一定に成長していく」と勘違いしてしまうのではないかと思う。</p> <p>ただ、人間の成長速度は一定ではない。どれだけ勉強しても一向に成長せず、むしろ時には後退することだってある。それでも勉強を続ける先に、ある時いきなり成長する。プログラミングであればコードがスラスラ書けるようになったり、フレームワークの構造が急に分かるようになったり。英語であれば急に喋れるようになったり、リスニングができるようになったり。</p> <p>そんな急激な成長を何度か繰り返していく内に、基礎が身につき、新しく得た知識を即実践に生かすことができるようになっていく。プログラミング初心者が機械学習だけ勉強しても、その知識をどう活かせばよいか分からないが、ある程度の習熟者が機械学習のスキルを身につければ、その後機械学習を使ったサービスを作ったり、OSSの発展に協力したりすることができる。</p> <p>どのスキルでも習熟している人は基礎ができてる。基礎があるから、新しく身につけた知識をどう生かすか、方法がわかる。初心者は基礎ができていないから、新しいことを学んでも、その知識をどう活かせばいいか分からない。むしろ、最初のうちは自分が知らないことがまだまだたくさんあるということに気づいて、学べば学ぶほどやる気を失くすことだってある。</p> <p>初心者は勉強、練習を始めてから最初の数ヶ月間が一番しんどいと思う。それを乗り越えれば急激な成長が待っている。「どんなことでも最初のうちはなかなか成長しないんだよ。」ということを事前に知っておけば、理想と現実のギャップに苦しむ期間を何とか乗り越えることができるのではないだろうか。</p> <h2 id="終わりに"><a href="#%E7%B5%82%E3%82%8F%E3%82%8A%E3%81%AB">終わりに</a></h2> <p>何事も一朝一夕では身につかない。とにもかくにもスキルを身に付けるには<strong>継続力</strong>がめちゃくちゃ大事!「<strong>天才とは努力を続けられる人</strong>」って将棋の羽生さんが言ってたけどほんとそれだと思った。</p> Naoki Mizutani tag:crieit.net,2005:PublicArticle/15167 2019-06-25T23:08:27+09:00 2019-06-25T23:08:27+09:00 https://crieit.net/posts/Ruby-on-Rails 僕が今までやったRuby on Railsの勉強 <p>僕がプログラミングを初めて<strong>1年と9ヶ月</strong>ほど経ちました。</p> <p>ほぼ<strong>独学</strong>でこれまで勉強してきましたが、途中で挫折する人も多いかと思います。</p> <p> </p> <p>少しでも挫折する人を減らせるよう、参考になるか分かりませんが自分が今までやってきたプログラミングの勉強方法を紹介させて頂きます。</p> <p> </p> <p>とは言っても、実は結構昔にプログラミングスクールに2週間ほど通ったことがあります。</p> <p>でもそのとき「<strong>あっ、これ無理だ。</strong>」と思いすぐ挫折しました。</p> <p>※決してプログラミングスクールが良くないわけではありません。質問した時は丁寧に教えてくれました。僕の理解力の問題です(笑)</p> <p> </p> <p>そこからだいぶ期間が空いて、その2週間で学んだことの<strong>98%は忘れてしまっていましたが</strong>、どうしても作りたいサービスがあったため、プログラミングの勉強を開始しました。</p> <p> </p> <p>まずは<strong>ドットインストール</strong>でHTMLとCSSの勉強を始めました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://dotinstall.com/">ドットインストール</a></p> <p> <br /> HTMLはなんとなーくわかった気がしましたが、CSSはよくわからないまま動画を観ていました。</p> <p>とりあえずHTMLとCSSの動画をそれぞれ2周した後、次はドットインストールで「<strong>Ruby入門</strong>」の動画を観てみました。</p> <p> </p> <p>Rubyを選んだ理由は特になく、その当時たまたま出会ったプログラマーの方に「<strong>web系のサービス作りたいんだったらRubyが良いよ</strong>」と言われたのでそのまま鵜呑みにしてRubyの勉強を始めました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://dotinstall.com/lessons/basic_ruby_v3">ドットインストール Ruby入門</a></p> <p> <br /> HTMLやCSSの動画もそうですが、1つの動画が全て3分以内に収められているため、全部で26個の動画がありますがサクッと一気に観れました。</p> <p>ただ、<strong>後半はさっぱり分けもわからず「とりあえず観る」</strong>といった感じで進めていたのを覚えています。Ruby入門の動画も分からないなりになんとか2周しました。</p> <p> </p> <p>ドットインストールでHTML、CSS、Rubyをそれぞれ学んだ後は<strong>Progate</strong>でHTML、CSS、Rubyをそれぞれ1周しました。</p> <p><a target="_blank" rel="nofollow noopener" href="prog-8.com">Progate(プロゲート)</a></p> <p>Progateは前に自分が書いたコードも使いながら次に進んでいくため、ローププレイングゲームをやっているみたいで面白かったです。</p> <p><strong>ただ、どのコースも後半につれて訳分かんなくなってました(笑)</strong></p> <p> </p> <p>次にRuby on Railsというフレームワークを使うとwebサービスが作れるとネットにいっぱい書いてあったので、Railsの勉強を始めました。</p> <p>まずはプログラミング初心者御用達のドットインストールで「Ruby on Rails5入門」の動画を2周しました。</p> <p><strong>Railsに関しては始めから何が何だかちんぷんかんぷんでした。</strong></p> <p><a target="_blank" rel="nofollow noopener" href="https://dotinstall.com/lessons/basic_rails_v3">ドットインストール Ruby on Rails5入門</a><br />  </p> <p>最近になってようやく慣れましたが、ドットインストールの動画って3分に収めているからかめっちゃ早くないですか?</p> <p>最初の頃はその早さについていけず、何度も動画を戻して繰り返し観てました。</p> <p> </p> <p>その後にまたまたプログラミング初心者御用達のProgateにてRuby on Rails5コースに取り掛かりましたが、<strong>後半は難しすぎてやめました(笑)</strong></p> <p> </p> <p>その頃に初めてプログラミングに関する本である「<strong>Ruby on Rails4 アプリケーションプログラミング</strong>」を買いました。 </p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/exec/obidos/ASIN/4774164100/hatena-blog-22/">Ruby on Rails4アプリケーションプログラミング</a><br />  ※今は最新版の「Ruby on Rails5 アプリケーションプログラミング」も発売されています。</p> <p> <br /> 後にこの本は僕にとってかなり神的な本になったのですが、その頃の僕にとっては訳が分からず、すぐ読むのをやめてしまいました。</p> <p> <br /> その後、Railsを学ぶなら「<strong>Railsチュートリアル</strong>」が良いとネットに書いてあったので、Railsチュートリアルを始めました。</p> <p> <br /> <a target="_blank" rel="nofollow noopener" href="https://railstutorial.jp/">Ruby on Rails チュートリアル:実例を使って Rails を学ぼう</a><br />  </p> <p>ただ、本での勉強は理解しにくいと感じていたので(今は本での勉強めっちゃ大事だと感じてます!)、Railsチュートリアルの動画が販売されていたので、その動画を購入して勉強しました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://railstutorial.jp/trial">解説動画お試しプラン - Railsチュートリアル</a></p> <p>動画の価格が<strong>29,800円(税別)</strong>なので、決して安くはなかったですが、結果的にこの動画は僕にとって神動画になりました!</p> <p>この動画を観てやっと<strong>RubyとRailsの違いをようやく少しだけですが理解できました。</strong>(それまでRubyとRailsがそれぞれ何なのかすらよくわかってなかった...)</p> <p> </p> <p>ただ、ProgateのRailsコースを途中で挫折する僕です。</p> <p>神的な解説のおかげで前半部分はなんとなく理解できましたが、<strong>当然後半は訳わからず、「コードをコピペして分からんけど動いた」みたいなことをしてました。テストはもちろん書いてません!(笑)</strong></p> <p> </p> <p>Railsチュートリアルを訳分からないなりになんとか2周した後に、当時UdemyにRailsを使ってAirbnbみたいなサービスを作ってみる動画があり、評判がよかったためそれを見て勉強しました。</p> <p> </p> <p><strong>結果的にその動画は今までRailsを勉強してきた中で一番役に立った神動画でした!</strong></p> <p>Progateやドットインストールで勉強した後、「<strong>一からどのようにサービスを作ったら良いか分からない問題</strong>」に必ずプログラミング初心者にはぶち当たると思うのですが、</p> <p>その動画はrails newから実際の現場でどのようにサービスを作っていくか丁寧に説明してくれていました。</p> <p>現在ではUdemyから削除されているのですが、今になってもまたもう一回観てみたいと思う動画です。</p> <p> </p> <p><strong>ただ、神動画でも僕の理解力の低さには勝てません(笑)</strong></p> <p>動画の後半はかなり難しい内容になってきて、最後の方はお得意の「<strong>コピペしてなんか分からんけど動いた</strong>」みたいなことばかりやってました。</p> <p> </p> <p>それで何とかその動画も全て見終わった後、出版のサービス(サービス名は<strong>nospri</strong>といいます)を作ってみたいと考えていたので、そのサービスの制作に取り掛かりました。</p> <p><a target="_blank" rel="nofollow noopener" href="www.nospri.com">無料で紙の本を出版できるサービス</a></p> <p><strong>途中100回くらい挫折しそうになりましたが</strong>、どうしてもサービスを作りたかったので気合いで何とか分からないなりに<strong>4ヶ月</strong>くらいかけて作りました。</p> <p> </p> <p>この出版サービスを作っている時に、Javascriptも勉強しないとまずいと思い、サービスを制作しながらとりあえず<strong>jQueryの勉強もしてました。</strong></p> <p> </p> <p>ちなみに、サービスの中でHerokuのH12 Error( 30 second timeout )を回避する為に、Ajaxを使って大容量データファイルをAmazon S3に直接送信する機能があるのですが、そこが僕にとって特に難しく泣きそうになったのは良い思い出です。。。</p> <p> </p> <p>出版サービスを完成させた後、改めて前に購入していた「<strong>Ruby on Rails4 アプリケーションプログラミング</strong>」を読んでみたのですが、<strong>知識の点と点が繋がるとはまさにその時のこと</strong>で、Railsについての理解度が今まで<strong>2%くらいだったのがやっと5%くらいまで上がったと思います(笑)。</strong></p> <p> </p> <p>そこから本での勉強も大事だと言うことに気づき、RubyとRails、jQueryに関する様々な本を書いました。</p> <p>それぞれ僕にとって一番よかった本は以下の通りです。</p> <p> </p> <p>RubyはRuby界隈で有名な伊藤淳一さんが書いた「<strong>プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで</strong>」</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/exec/obidos/ASIN/4774193976/hatena-blog-22/">プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)</a><br />  <br />  </p> <p>Railsはすでに紹介済みの「Ruby on Rails4 アプリケーションプログラミング」の最新版にあたる「<strong>Ruby on Rails5 アプリケーションプログラミング</strong>」 </p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/exec/obidos/ASIN/4774188832/hatena-blog-22/">Ruby on Rails5 アプリケーションプログラミング</a><br />  </p> <p> jQueryは「<strong>Web制作の現場で使うjQueryデザイン入門[改訂新版] </strong>」</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/exec/obidos/ASIN/4048913913/hatena-blog-22/">Web制作の現場で使うjQueryデザイン入門[改訂新版] </a></p> <p> <br />  <br /> 今ではjQueryは古く、ReactやVue.js等のモダンなフレームワークを使うケースが多いため、今から必ずしもjQueryを学ぶ必要はないんじゃないかと思います。(じゃあ、RubyよりもPythonやGo勉強した方が良いんじゃないの?とかは言わないで...)</p> <p> </p> <p>RubyやRails、jQuery等の本を10冊くらい読んで勉強した後に、webのメディアサイトを作ってみたくなり、僕は京都が大好きなので、京都の鴨川に関する記事を誰でも投稿することができるwebメディアサイト(サービス名は「<strong>鴨川へ行こう</strong>」)を1ヶ月くらいで作りました。</p> <p> <br /> <a target="_blank" rel="nofollow noopener" href="https://www.kamogawa-go.com/">鴨川へ行こう | 京都鴨川のあらゆる情報を発信するサイト</a></p> <p> </p> <p>2つ目のサービスを作ってやっとここでRuby on Railsへの理解度が<strong>7%くらいまで上がりました!</strong></p> <p>ここから絵本を投稿できるサービスを作ったり、感謝の気持ちをポイントに変えて自由に送り合うことができるサービスを作ったり、小さいのも合わせると全部で5個くらいサービスを作りましたが、公開までに至りませんでした。</p> <p> </p> <p>原因は1つです。</p> <p><strong>デザインセンスがないからです。</strong>服はほぼユニクロで買う僕にデザインのセンスなんてあるわけありません。<strong>ってかCSS書くのがめんどいです。。。</strong></p> <p> </p> <p>ただ、今となっては最低限CSS書いて、いくつかのサービスは「<strong>公開しとけばよかった</strong>」と思っています。なので今後ちょこちょこデザイン整えて、公開できるまでもっていきたいです。</p> <p> </p> <p>一方、サービスの公開まではいきませんでしたが、そこでポイント機能やフォロー・フォロワー機能、stripeを使った決済機能など、いろんなサービスで応用できそうなスキルを何となく学ぶことはできたのでまあ良い面もありました。。。</p> <p> </p> <p>今年に入ってから僕が今までで一番時間をかけて初心者向けのクラウドソーシングサービスを作りました。(サービス名は<strong>novice</strong>、日本語で「初心者」という意味です。)</p> <p><a target="_blank" rel="nofollow noopener" href="https://novice-work.com/">novice | 失敗しても大丈夫! 初心者・未経験者のためのクラウドソーシングサービス</a></p> <p>何とかリリースまでもっていきましたが、今まで発信等を全然していなかった為、<strong>全然ユーザーが増えません。よかったらTwitterフォローしてください(笑)</strong></p> <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/leavescomic1">@leavescomic1</a></p> <p><strong>発信力が弱小な人にとってやっぱりto C向けのサービスは難しいですね。。。</strong></p> <p>今後は情報を発信しつつ、UXの面でも超絶使いにくいところが山ほどあるので、そこらへんを徐々に直していこうと思います。</p> <p> </p> <p>あと、プログラミングを勉強してサービスを作るのもいいけど、<strong>作ったサービスを広めることにも注力した方が良いと今はひしひしと思います。</strong>僕はサービスを作っただけで満足していたから今かなり痛い目にあってる。(前から痛い目に遭ってばっかりだけど。)</p> <p> </p> <p>まあ、今までめちゃくちゃ小規模でくだらないサービスも含めて全部で<strong>8個</strong>くらいサービスを作ってきましたが、ようやくRailsのことを<strong>9%くらい理解できるようになりました。</strong></p> <p>何とか今年中に10%くらい理解できるよう頑張りたいです(笑)</p> <p> </p> <p>また、Swiftを勉強してiOSアプリリリースして、友達に自慢したいです。プログラミングやってない人から見たら、クソみたいなアプリでも自分のアプリがAppleストアに載ってるだけですごいと思ってくれるじゃないですか!?</p> <p> </p> <p>色々書きましたがとにかくまとめると、プログラミングの勉強で一番大事なのは「<strong>情熱</strong>」だと思います。(なんじゃそりゃ。。。)</p> <p>もっとがんばります。はい。。。</p> Naoki Mizutani tag:crieit.net,2005:PublicArticle/15155 2019-06-23T17:06:57+09:00 2019-06-23T17:10:40+09:00 https://crieit.net/posts/7cd9ab785e8538bbd0ea7bed7c70d69e インスタグラムのブログパーツを作った📷 <h1 id="作ったもの"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE">作ったもの</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://insta-window-tool.web.app/">Insta Window Tool</a></p> <p>こんな感じでインスタの写真をサイトに貼り付けられます。</p> <p><a href="https://crieit.now.sh/upload_images/b8f32a7ff24dbbdad55883ff65403fdb5d0f31171640c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8f32a7ff24dbbdad55883ff65403fdb5d0f31171640c.png?mw=700" width="50%"></a></p> <h1 id="作った背景"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E8%83%8C%E6%99%AF">作った背景</a></h1> <p>インスタグラムの写真をサイトに貼る必要があったので調べたところ、ブログパーツは既にあったのですがブログパーツのサイトにリンクしてしまう残念仕様だったので自作しました。</p> <h1 id="技術スタック"><a href="#%E6%8A%80%E8%A1%93%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF">技術スタック</a></h1> <ul> <li>VueJs</li> <li>FirebaseHosting</li> <li>UIKit</li> </ul> <p>くらいかな?</p> <h1 id="今後の予定"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E4%BA%88%E5%AE%9A">今後の予定</a></h1> <p>ブログパーツのサイズや色など設定できるようにしていくつもりです(いつか)</p> <p>突貫で作ったものなのでキレイにしてくれたり機能追加してくれる方募集中です😉<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/akinov/insta_window">https://github.com/akinov/insta_window</a></p> <p>なにかあれば<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kuronekopunk">@kuronekopunk</a>へ💁‍♀️</p> あっきー💃 tag:crieit.net,2005:PublicArticle/15139 2019-06-21T12:06:10+09:00 2019-06-21T12:20:30+09:00 https://crieit.net/posts/novice 僕が一人で「novice」という新サービスを作ったきっかけ <p>ミズタニといいます。Twitterアカウントは@leavescomic1です。</p> <p>僕はここ1年半ほどプログラミングを独学で勉強しています。<br /> 開発言語は主にrubyでフレームワークにRuby on Railsを使っています。</p> <p>今まで公開したサービス、公開していないサービス、全部合わせると6個ほどサービスを作りました。</p> <p><strong>Amazonで紙の本で誰でも出版できるサービス</strong>とか<br /> <a target="_blank" rel="nofollow noopener" href="www.nospri.com">nospri</a></p> <p><strong>京都の鴨川に関するメディアサイト</strong>とか<br /> <a target="_blank" rel="nofollow noopener" href="鴨川へ行こう">www.kamogawa-go.com</a></p> <p> <br /> <strong>しかし全部作って満足。</strong></p> <p><strong>それだけ。</strong></p> <p> <br /> 誰かが勝手に見つけて使ってくれたら嬉しいけど、自分から積極的に宣伝しようとは思わなかった。</p> <p> </p> <p>なぜかというと、「<strong>こんなしょぼいサービス見られたら恥ずかしい</strong>」とか「<strong>デザインセンスがない</strong>」とか「<strong>宣伝のために営業したり、発信したりするのがめんどい</strong>」とか</p> <p> </p> <p>とにかく作って満足。そこで終わり。という感じでした。</p> <p>でも2019年に入ってから、やっぱり誰かに自分のサービスを使ってもらいたいと思うようになりました。</p> <p> </p> <p>確かに新しいサービスを作ることは楽しいけど、自分のサービスを他の人に使ってもらえる喜びには勝りません。<br /> 顔も知らない誰かが自分のサービスを使って喜んでくれたら、やっぱりめちゃくちゃ嬉しいです。<br /> それから新しいサービスを作り始め、先日ついに完成し、リリースしました。</p> <p>サービス名は「<strong>novice</strong>」、サービスの内容は一言で言うと、<strong>初心者・未経験者向けクラウドソーシングサービス</strong>です。</p> <p><a target="_blank" rel="nofollow noopener" href="https://novice-work.com">novice</a></p> <p> </p> <p>このサービスのアイデアは自分がプログラミングを独学し、ちょっと受託で開発にチャレンジしてみたいと思ったことがきっかけでした。</p> <p>試しにクラウドワークスやランサーズといったクラウドソーシングサービスを使って応募してみましたがその時、<strong>全然受注することができませんでした。</strong></p> <p>(「単価が安いクラウドソーシングを使うのは良くない」みたいな意見は一旦置いといて下さい...)</p> <p> <br /> いろいろ調べてみましたが、初心者・未経験者が案件を受注するためにはかなり努力をしなければなりません。以下のようなことが必要とのことです。</p> <p> <br /> * 自分のポートフォリオサイトを作る<br /> *  応募段階で顧客が望むモノをある程度まで作って、依頼者に提案する<br /> * 他の応募者よりも安く、短い納期を提案する</p> <p>やっぱり最初の一件の仕事を受注するのは、こちらから<strong>かなり積極的に提案して行かないと難しいようです。</strong></p> <p>また、<strong>安い単価の仕事でもお金をもらって受注することに怖いと感じる人も多いのではないでしょうか。</strong>僕はそうでした。</p> <p>初めての受託開発は「<strong>本当に完成させられるかな?</strong>」とか「<strong>失敗したらどうしよう?</strong>」と考えてしまい、それが原因で仕事の応募を躊躇している方もいると思います。</p> <p> <br /> それらの経験から「<strong>もし初心者や未経験者が気軽に仕事にチャレンジできるクラウドソーシングがあれば、喜んでくれる人がいるかもしれない</strong>」と考え、4ヶ月半ほどかけてnoviceを作りました。</p> <p>novice-work.com</p> <p>noviceは<strong>様々な分野での初心者・未経験者のためのクラウドソーシングサービス</strong>であり、<strong>最大の特徴は受注した仕事は失敗してもOK</strong>という点です。</p> <p>最初から<strong>失敗してもOK</strong>という形で依頼してくれれば、受注する側の心理的負担はかなり軽減されると思います。また、他の応募者も<strong>初心者・未経験者が多いため過去の実績がない人でも仕事を獲得しやすいです。</strong></p> <p> </p> <p>noviceを使うメリットを以下にまとめました。</p> <p> </p> <p><strong><仕事を依頼するユーザーのメリット></strong></p> <p>①仕事を相場より安く依頼できる</p> <p>②受注者はプロではないことが多いため、近い目線でコミュニケーションを取ることができる。</p> <p> </p> <p><strong><仕事を受注するユーザーのメリット></strong></p> <p>①受注した仕事はチャレンジした結果、失敗に終わってしまってもOK。だから安心して仕事にチャレンジできる。</p> <p>②noviceは様々な分野の初心者・未経験者が集まる場所なため、過去の実績・経験がない方でも仕事を受注しやすい。</p> <p>③お仕事を受注し完了すれば、受注者の実績となり、経験を積むことができる。</p> <p> </p> <p>例えば個人開発であれば、バックエンドは得意だけど、デザインは苦手という人は結構いるかと思います。僕は個人開発でバックエンドのシステムだけ作ってそこで放置.....みたいなことよくやってます。どうせだったら、デザイン勉強中の人にデザインお願いしてみるのも1つの手だと思います。</p> <p> <br /> 受注する側の人にとって<strong>単価が安くても経験が積めて、それが実績になる</strong>のであれば、キャリア形成のファーストステップとしては良いのではないかと思います。</p> <p>ただ、いつまでも単価が安い仕事ばかり受注するのは良くないと思っています。<strong>noviceはあくまでのキャリア形成のファーストステップとして活用</strong>して頂き、実績を積んだら、それを生かして高単価の仕事を獲得したり、転職したり、次に生かして欲しいです。</p> <p> <br /> プログラミングでも、語学でも、何か新しいスキルを身につけたけど、実績がないような方がいましたら、是非ファーストステップとしてnoviceを使ってみてください!</p> <p> <br /> ちなみに <br /> クラウドソーシングサイトの「<strong>求めるスキル</strong>」ってレベル高すぎません?</p> <p>ちょっとクラウドソーシングサイト内に載っていたマッチングサービスの開発案件の募集要項を引っ張ってきました。</p> <p> <br /> ▽使用するプログラミング言語/ツール/特殊技術(テクノロジー)<br /> ・Java / PHP / Ruby / Pythonなどの技術<br /> ・MySQL / PostgreSQLなどのデータベース技術<br /> ・Javascript(jQuery、react、vue.js)の技術<br /> ・サーバ構築、管理の技術(AWS、VPSなど)<br /> ・HTML / CSSの技術(ウェブページのコーディング技術)</p> <p>JavaにPHPにRubyにPythonが書けて、MySQLとPostgreSQLなどのデータベース技術に精通してて、ReactとVue.jsが書けて、AWSやVPSのサーバ構築ができて、HTML/CSSのコーディングができる人ってどんだけいるの?<br />  </p> <p>web業界である程度経験がある方であれば、上記のスキルを網羅している方も多くいるかと思います。むしろ中級者、上級者の人から見れば出来て当たり前のスキルなのかもしれません。ただ、そのようなある程度スキルがある人がわざわざクラウドソーシングを使うのだろうか....少し疑問です。</p> <p> <br /> もちろん上に記載されていることは全て必要ではなく、あくまでも目安で、いづれかの経験があれば良いってことはわかってます。ただ、<strong>プログラミング初心者や業務未経験の人にとってこういう募集要項を見るとビビります。そして絶望します。</strong></p> <p> <br /> 「そうか、受託で仕事を取るにはあとあの言語とあの言語が書けるようになって、あのデータベースを使えるようになって、あのサーバを使えるようになって......」</p> <p><strong>いや、あとどれだけ勉強すればいいんだよってなります。</strong></p> <p> <br /> <strong>僕は過去にIT系の企業で働いたことがなく、プログラミングの業務経験が全くありません。</strong>だからなかなか普通に受託で仕事を取ってくるのは難しいし、それでは生きていけないから今も別でバイトしながらサービス開発してるし。(今一応法人を持っていますが、それもただ持っているみたいな感じになってます。)</p> <p>普通、多くの人は独学でプログラミングを少し勉強して、ポートフォリオ作って、どこかのweb企業に入ってある程度実績積んでから独立するみたいな流れになるんだと思います。</p> <p> <br /> まあ、それが当たり前なんだと思いますけど、業務未経験でもいきなり独立していける環境ができたら面白いのになぁと考えています。(IT系だけでなく全ての業界で)</p> Naoki Mizutani tag:crieit.net,2005:PublicArticle/14914 2019-04-09T23:38:18+09:00 2019-04-11T22:57:31+09:00 https://crieit.net/posts/Markdown Markdownで書いてみよう <p>技術系のブログを書く場合、Markdownで書くのがおすすめです。Markdownというのは、記号を含めたテキストの書き方で、簡単に見出しや強調など、文字の装飾、コード表記を行うことができます。</p> <p>例えば強調する場合は</p> <pre><code class="markdown">**ここを強調**する </code></pre> <p>のように書くと</p> <p><strong>ここを強調</strong>する</p> <p>のように表示されます。</p> <pre><code class="markdown">## 見出しです </code></pre> <p>のように書くと</p> <h2 id="見出しです"><a href="#%E8%A6%8B%E5%87%BA%E3%81%97%E3%81%A7%E3%81%99">見出しです</a></h2> <p>のように表示されます。</p> <p>はてなブログ、Qiita等、技術系の記事を書くことができる様々なサービスで使われており、GitHubのREADMEも書くことができるため、とにかく一番オススメの書き方になります。</p> <p>色々な書き方がありますので下記などで見てみてください。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/Minalinsky_1911/items/b684cfabe0f2fde0c67b">Markdown書き方メモ - Qiita</a></p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/14564 2018-10-10T16:22:08+09:00 2018-10-31T08:40:20+09:00 https://crieit.net/posts/74aebb50db1a2a2fa869c3b449ce85dc プログラミングという自己表現、或いは社会に何を与えれるか <p>もう30歳になるおじさん(?)がこんなこと言っても説得力ないけどさ、<br /> プログラミングって、良いよな。って話。</p> <h1 id="プログラミングはコンピューターを自在に操れる"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E8%87%AA%E5%9C%A8%E3%81%AB%E6%93%8D%E3%82%8C%E3%82%8B">プログラミングはコンピューターを自在に操れる</a></h1> <p>当然の話かな。中間にOSやらなんやらは入るので、もしかしたら無理なことがあるかもしれないが、ほぼ自在に操れるも同然だろう。</p> <p>むしろ、自在に操れないのなら、OSを作ってしまっても良いだろう。<br /> もはやパーソナルコンピューターさえも自分の融通が利かないというのであれば、ハードから設計してしまってもいいし。</p> <p>ということで、まずは当たり前のことを当たり前に述べたつもり。</p> <p>結局コンピューターは計算機なんだ。手計算では骨が折れるようなことも、平気で黙々と超高速でやってくれる。<br /> とはいえ、やっぱり数学がわかってると、もっと早くコンピューターに計算させることもできる。</p> <h1 id="プログラミングはコンピューターを経由して自己表現できる"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E7%B5%8C%E7%94%B1%E3%81%97%E3%81%A6%E8%87%AA%E5%B7%B1%E8%A1%A8%E7%8F%BE%E3%81%A7%E3%81%8D%E3%82%8B">プログラミングはコンピューターを経由して自己表現できる</a></h1> <p>うん、ここから胡散臭くなってくるんだ、すまない。</p> <p>そんな計算機というかコンピューターだが、今は演算結果を映像や音にもすることができたり、音を映像にしたり、とりあえず数値化できるものは別の形に置き換えることができる。</p> <p>たかが数値だと思うかもしれないが、その数値が映像になったり音になったりした時の感動は、プログラミングをやった人なら分かるだろう。</p> <p>絵も、画材は色々あるが、キャンバスに木炭を擦り付けて、モノのシルエットを描いたり、絵の具を混ぜ合わせたりして別の色が作れるし、色を重ね合わせるだけでも味わいが出る。<br /> 音楽も、楽器は色々あるが、弦をピンと張って弾いたら音がなるし、それを半分のところで押さえたりすると別の音がでるし、ましてや音と音を重ね合わせると、また違う味わいを持つ。</p> <p>一見これらと無縁な数値の世界も、重ね合わせたり混ぜたりすると、それはまた味わいが出るのかと思う。</p> <p>それで、その良い塩梅を見つけていくのが楽しい。そしてその良い塩梅に共感を感じられると、また楽しいわけで。</p> <p>だから自己表現としてのプログラミングも、普通にありだと私は思う。</p> <h1 id="プログラミングはコンピューターを経由して世界を作れる"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E7%B5%8C%E7%94%B1%E3%81%97%E3%81%A6%E4%B8%96%E7%95%8C%E3%82%92%E4%BD%9C%E3%82%8C%E3%82%8B">プログラミングはコンピューターを経由して世界を作れる</a></h1> <p>ちょっとアートの話になった、確かにここでのお題はテレビゲームを作る的な意味も入ってるが……、</p> <p>世界を作れるのだ、それがコンピューターで演算し尽くした仮想環境で閉じてるか、或いは人の感情が入り乱れる実世界で行うか。それだけの違い。</p> <p>今はありがたいことに、インターネットで海の向こうの人ともコミュニケーションが取れるようになった。<br /> なったけど、秩序があるかどうかはまた別問題で。</p> <p>なんでもかんでも自由にすると、なぜか人は殴り合いを始めがちであるし、制約がある方が面白いこともある。スポーツが特にそうではなかろうか。</p> <p>コミュニケーションも何らかの制約があると、また違った味わいがある。140文字以内での投稿や、コメントが残せないとか、誰が読んでくれるか分からないメッセージを流すとか、一度しか読めない手紙をうけとるとか。</p> <p>そういう、世界に対する自分の求めるコミュニケーション方法を実装するのも、面白いと思う。</p> <h1><code>Hello world...</code> の後に続く世界を実装してこうぜ</h1> <p>プログラミングの決まり文句 <code>Hello world</code> 、<br /> 「コンピューターの世界にこんにちは」<br /> と、挨拶しているのである。そしてそれに答えるコンピューターがいる。</p> <p><code>Hello world</code> というワードは、実は僕たちの過ごしている実世界にも言えるのではないだろうか。<br /> 生誕した時に限らない。 <code>Hello world</code> は、いつだって言える。実際、コンピューターでとりあえず知らない言語を触る時は、とりあえず <code>Hello world</code> で感覚を掴む、その言語の世界の雰囲気を読むと思う。</p> <p><code>Hello world</code> 、この言葉の後に何か付け加えても良いのではないだろうか。<br /> あなたなら、なんと付け加えるだろう。</p> <p>お金儲けのプログラミングも良いと私は思う。でも、せっかくコンピューターで魔法が使えるなら、自分だけの法を作って、世界を作ってしまっても楽しいかもしれないと私は思う。</p> <p>そんなことを、お金儲けのプログラミングをしつつ、思ったのだった。</p> <p><code>Hello world... {ここにあなたの暮らしてみたい世界を入れてください}</code></p> まんじゅ(´ん`) tag:crieit.net,2005:PublicArticle/14224 2018-04-18T17:51:23+09:00 2018-10-29T19:03:03+09:00 https://crieit.net/posts/Windows3-1 プログラミングをはじめた時のこと Windows3.1編 <p>プログラミングをはじめたのは確か中学生か高校生の頃。</p> <p>もうはっきり覚えてないけど、中学で年に数回しかなかったPCの授業でタッチタイピングをして驚かれた記憶があるので、多分中学ではやっていたんじゃないかと思う。</p> <p>はじめて実家で買ったPCは富士通のFM-V。Windows3.1が入っていた。まだファイル名が8文字+拡張子だった頃。</p> <p>家ではほとんどゲームばかりしていたので、その関係でゲームを作りたいと思うようになっていった。普段から頭の中で自分で作った新しいゲームの妄想などをしていた。<br /> なのでプログラミングについてはずっと興味津々だった。</p> <p>一度PCを持っている友達の家にいき、ゲームを見せてもらったことがある。しかもそれがその友達の知り合いが作ったゲームということですごく興奮したのを覚えている。<br /> 自分でも作れるようになりたかった。</p> <p>とはいえまだインターネットをやってる人もあまりいなかった時代。まだパソコン通信という名前で一部の人がやっているっぽいことを雑誌か何かで知っていただけだった。<br /> 当然うちでは繋がってなかったので、今みたいにネットで調べて勉強、みたいなこともできなかった。ほんとに時間がもったいなかったなと思う。<br /> 今の若い人はとてもうらやましい。</p> <p>しかしある日、とある雑誌を見つけた。なんとそれは、Visual Basicの体験版が同梱されている雑誌。<br /> 早速その雑誌を買って、自宅のPCでプログラミングをはじめた。<br /> 僕のプログラミングの第一歩。</p> <p>体験版なので作ったものを保存したりができなかったのだが、それでも毎日すごく夢中になって頑張って何かを作っていた。<br /> 多分ちょっとした使い方なんかはその雑誌についていたんじゃないかと思うので、それで色々やっていたと思う。<br /> ウィンドウの背景を青のグラデーションにするのにハマっていたので、作るアプリケーション全て背景がそんな感じになってた。</p> <p>多分ゲームやプログラミングなど好きなことばかりやって引きこもっていたので、<br /> 友達も少なく、どうやって楽しく遊んでいいかもわからず、その後もしばらくは周りと馴染めずに過ごしていたけど、<br /> こうやって楽しくプログラミングをしていた姿が今となると、<br /> 将来自分の幼い息子がこうやって何かに夢中になって励むのだろうというまだ見ぬ姿に重なり、<br /> なんとなく誇らしく、微笑ましい気持ちになる。</p> <p>その後はあまり記憶が定かではないのだが、恐らくおじいちゃんにたのんで、多分学生向けの激安VBの製品版を買ってもらったのではないかと思う。多分高校生くらい?</p> <p>製品版ともなると、拡張子exeの実行ファイルを作ることができるようになる。それだけでものすごく興奮した。</p> <p>色々なものを作った記憶がある。一問一答のカードリストを自分で作れるソフトとか、<br /> スタートアップに登録してPC起動時に起動するようにして、10秒以内にパスワードを入力しないとPCをシャットダウンさせるソフトとか。<br /> (弟に文句を言われたので外した。当時は自分の好みにPCの中を整理したかったので、他の人に使われるのが嫌だった)</p> <p>このあたりも情報収集方法は本屋だけだった。毎月フリーソフトが100個とか入っているCDがついた雑誌を購入していた。<br /> あとは立ち読みして情報収集していたんじゃないかと思う。学校帰りにいつもPCコーナーに立ち寄って本を見ていた。</p> <p>そういえばふと思い出したけど、すごくハマっていたフリーソフトがあった。<br /> ボールみたいなキャラクタを操作してハンバーガーを集めるゲームで、ステージがテキストで作られているので自分で改造できるという代物。</p> <p>とても面白くて、しかもフリーソフトということで普通の人が作っているということなのでとても興奮してファンになった。<br /> その人に憧れて、自分も何か作ると似たような体裁の説明書txtを作ったりしていた。<br /> (ネット繋がってないから公開もできないのに)<br /> 確か1000円寄付した覚えがある。<br /> 作者名もゲーム名も思い出せない。なんだろ…<br /> (※思い出しました。FlyingJumpというゲーム)</p> <p>あと雑誌で、スクリーンセーバーも作れるという方法を見たので、試して作ってみたりした。<br /> 手に入れたフリーソフトで自分の声を録音してそれをかもめの声のように高くなるよう変換し、かもめが海を飛んでいるスクリーンセーバーとかを作っていた。<br /> 春夏秋冬4パターンを作ろうと思ったが途中で飽きてやめてしまっていた気がする。</p> <p>スクリーンセーバーを作れるということは描画はできるっぽいんだけど、その時ゲームを作っていたかは全然覚えていない。</p> <p>そういえば、センター試験の選択問題はBASICのプログラミングがあったので、いつもそれを選んでやっていた。<br /> 普通に数学解くよりめちゃくちゃ簡単だった。</p> <p>あとはすごい技術がたくさん詰まった5000円くらいの分厚い本を買ったのだが、多分他のことにハマったのか受験で忙しくなったのかは忘れたが、<br /> ほとんど使わずじまいになってしまった。</p> <p>まあそんな感じで、自分では気づいていなかったかもしれないが非常に充実した時間を過ごしていたと思う。<br /> プログラミングが好きな人は、せっかくなのでガッツリハマって楽しんで欲しい。<br /> この時代、やりたいことは何でも調べてできるのだから。</p> だら@Crieit開発者