※ 本記事で紹介する姉妹サイト「和風スパゲティのソース」は既に閉鎖しております。
要約すると「安易にサイト分けするより適した方法を探すべき」という結果でした。
経緯と考察については以下の記事を参照ください。
一応、本記事も開設の記録として残しておきます。
このブログを開設して3年が経過しました。
いつもご愛読いただいている皆様ありがとうございます!
3年といっても今年は8本しか公開できなかったので、
「3年続けてます!」といえるかは怪しいところですが、
4年目もマイペースに進めていきたいと思います。
今後ともどうぞよろしくお願いいたします。
さていきなりですが、ブログ執筆4年目に入るにあたり、
姉妹サイト「和風スパゲティのソース」を開設いたしました。
本サイト「和風スパゲティのレシピ」はコード+解説で記事を構成したサイトですが、
姉妹サイト「和風スパゲティのソース」は、ソースコードのみ・解説なしの記事で構成するサイトとなります。
「まどろっこしい解説いらない。ソースコードだけ見たい。」
というときには、是非ともご活用ください。
新サイトのコンセプトは、ぶっちゃけこの
「まどろっこしい解説いらない。ソースコードだけ見たい。」
がすべてといっても過言ではないのですが、
それ以外にもいくつか狙いがありますのでつらつら書いておきます。
お暇な方はお付き合いください。
この姉妹サイトを作った目的は以下の4つです。
- 既に知っているコードを調べるときは必要最低限の記事が便利だから
- 抽象化されたコードを書く場所が欲しかったから
- ソースコードのみで処理を説明するのに日本語変数が強力だから
- 時間がなくても書けるから
順に説明していきますね。
既に知っているコードを調べるときは必要最低限の記事が便利だから
プログラミングの調べ物は、大きく分けると
- はじめて使う機能や処理を勉強する
- すでに知ってるコードの正確な記述を調べる
この2つの目的があります。
例えばマクロブックxlsmを新規に保存するとき
保存ブック.SaveAs Filename:=保存フォルダパス & "\" & 保存ファイル名 _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled
こんなコードを書きます。
さてこのコード、初めて学習するときは当然コード全体をじっくり見ますし、解説も読みます。
しかし、2回目以降にこのコードを調べに来た方は、
xlOpenXMLWorkbookMacroEnabled
このスペルだけが見たかった、という方も相当いると思うんですよね。
この「どんな感じのコードかはわかってるけど正確な記述はうろ覚え」という状況は、
プログラミングをやっていると相当な頻度で出くわします。
初めて学ぶ機会というのは当然ながら一生に1回ですが、
正確な記述調べは2回目以降、暗記できるまで(≒永遠に)続きますからね。
そしてこの「正確な記述調べ」においては、
コードの解説テキストは結構邪魔だったりします。
皆さんがネットの記事を読んでいて
「まどろっこしい解説いらない。ソースコードだけ見たい。」
と感じる、一番の原因なのではないでしょうか。
このまどろっこしさは私が私のサイトを読むときにも感じるくらいなので、
結構な人がこの不満を抱えているような気がします。
とはいっても初めて勉強する用に解説記事というのは必須ですし、
どちらも満たす記事なんていうのは書けません。
それならサイトを分けてしまおうということですね。
この「正確な記述を調べるためのコード辞典」を作りたいというのが、
姉妹サイト設立の最大の目的です。
抽象化されたコードを書く場所が欲しかったから
続いての目的がこの「抽象化」です。
初学者に向けてコードの解説を書こうとすると、
どうしても「実際の値」や「すぐ実行でき結果が見れるコード」が必要になります。
このため、ネットに公開されているVBAコードは、
Workbooks("○○").SaveAs Filename:=Range("A1") & "\" & Range("A2")
と、使用する値に実際のシートやセルが使われているものが多いです。
この他にも、結果をMsgBoxで出力しているコードなんかも多いですよね。
これは「はじめてこの処理を勉強する」人にとってはとてもやさしい記述です。
サンプルファイルをダウンロードすれば実際の動きがすぐにわかりますし、
コードをそのまま利用して、セルアドレスを変えるだけで活用もできます。
がしかし、ある程度慣れてくると、このベタ打ちのセル指定が非常に邪魔になります。
コードを読むためにいちいちサンプルシートも見なければならず、
いざコピペして書き換えるときも、書き換えがかなり面倒です。
そこで姉妹サイト「和風スパゲティのソース」では、このコードを
Sub xlsm形式でブックを保存する _ (保存ブック As Workbook, 保存フォルダパス As String, 保存ファイル名 As String) 保存ブック.SaveAs Filename:=保存フォルダパス & "\" & 保存ファイル名 _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub
このように、書き換え部分を変数や関数の引数で表現して書こうと思います。
こうすることで、実物のシートやセルを指定しない、
「なにか架空の値で動くコード」になります。
この「なにか架空の値で動くコード」にすることを、
プログラミング用語で「抽象化」と呼びます。
実際に使う際は「保存ブック」などの部分をセルや変数に書き換えれば動きますし、
関数であることを活用して、
Call xlsm形式でブックを保存する(Thisworkbook, Range("A1"), Range("A2"))
と、紹介している関数をそのままCallして使うこともできます。
この「使いまわししやすいコードにする」ことこそが、抽象化の目的です。
抽象化されたコードはブック名という「文字列」に対して処理が書かれていますので、
実際にその文字列にセルを使おうが変数を使おうが、
同じコードを使いまわせるようになっているということですね。
もちろんこれは良し悪しがあり、初学者にとっては
「変数宣言やプロシージャ分割に慣れないといけない」
「動かすときにテストデータを自作しないといけない」
などいらぬ負担になります。
だからこそサイトを分けようと思いました。
- 説明に特化した具体的なコードは「レシピ」に
- 実用に特化した抽象的なコードは「ソース」に
と書き分けることで、幅広いレベルの方々に使い分けていただきたいなと。
そしてこれは、私自身が「和風スパゲティのレシピ」を執筆しやすくしたいという思惑もあります。
「レシピ」の記事を書くとき、結構「うーんこれだと抽象化しすぎかなぁ」「ここにセルベタ打ちしちゃうと使いづらいかなあ」と判断に迷うことが多いです。
「ソース」を作ったことで、そういった迷いを「まあ抽象化はあっちのサイトでやればいいか」と減らせるといいな~と目論んでいます。
コードのみで処理を説明するのに日本語変数&関数が強力だから
これはもうそのまんまです。
Sub xlsm形式でブックを保存する _ (保存ブック As Workbook, 保存フォルダパス As String, 保存ファイル名 As String) 保存ブック.SaveAs Filename:=保存フォルダパス & "\" & 保存ファイル名 _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub
↑このノー解説どころかノーコメントのコードを見ればわかりますよね。
構文の構成は読めばわかるし、処理の内容はそっくり関数名に書いてあります。
コードを読めばわかる状態になるのは母国語の強みですね。
さらにこのコードを活用する上での実用的な話では、
- 書き換えるときは日本語の部分を書き換えればいい
- うろ覚えの構文スペルを見たければ英語の部分だけ見ればいい
と使い分けをすることもできます。
この「どこが書き換える部分で、どこがそのまま使う(≒コピペでOKな)部分かが明瞭になる」というのは、母国語がアルファベットではない民族の特権です。
そういう日本語変数/関数の良さをPRするのが私の最終目的ですので、
この姉妹サイトにもその役割を担ってもらいましょう。
時間がなくても書けるから
これももうそのまんまですね。
本サイト「レシピ」の記事は、コード+解説を書かなければいけないので、
まとまった時間がないと仕上がりまで行きません。
時間がないときは、コードとちょっとしたメモだけを下書きに残しているのですが、
気づいたらまた30近い下書きがたまっていました。
じゃあもうこのコードのまま上げてしまえばいいかなと。
とりあえず「ソース」の方で公開だけしてしまって、
あとで「レシピ」に解説をつけて上げるのもありだなと。
閲覧数を見て、需要が多い記事から解説をつけていけるメリットもありそうですしね。
と、以上が姉妹サイト「和風スパゲティのソース」を作った理由です。
そんな目論見通りうまくいかない(特にソースだけなら短時間で済むというは楽観が過ぎるのでは?)と思いますが、
4年目も頑張って記事を書いていきたいと思います。
「和風スパゲティのレシピ」「和風スパゲティのソース」ともども、
今後ともどうぞよろしくお願いいたします。