表次郎更新2024年07月15日 07:04

今回は前回の予告同様、
ユーザーからの要望による修正でした。
早速試されて便利になったとの報告をうけました。
よかったです。

予定以外で増えた機能はマクロからcell()でセル内の値を取得
できますが計算式の場合は結果のみ取得できます。
計算式を取得するための関数を追加しました。
厳密には現状、表示する方法のいくつかを取得するようにですが
関数の追加そのものは特に難しくはなかったですが
表示している内容についての説明は難しかったです。
・入力した値そのものを表示
・結果を表示(カンマは除く)
・結果を表示(カンマを含む)

ここまでは特に難しくないですがカード入力を絡めると
難しかったです。
基本的には上記3つの表示方法だけでもいいのですが
せっかくある機能だったのでそちらも追加してます。

説明の難しさとはたとえばカード入力は連携先と連携元の
情報があるのですがどっちの書式が有効なのかという
ところです。結構微妙な違いなので詳細はヘルプを見てください。

あとサンプルに勤怠表と家計簿を追加しました。
https://net-sakuya.sakura.ne.jp/hyoed/hyo_sample/sample_list.htm
上記の関数を追加しようと思ったのはサンプルで家計簿を
作っていたら関数漏れてるなというのに気がつきました。
サンプルはまだ少ないのし、作っているとテストにもなるので
少しの間サンプル作成をやってみようかなと思ってます。

あと、まだ公開はしてないですがいまさらながら命名規則を
ヘルプに書いてます。マクロ使ってるユーザーもいるんだなと
思うと書いておくかという気分になりました。
書いていると例外もいくつかありますが改めてこういう名前にしようと
か思っていることもあります。

CSVイディーの22H2印刷対応もやらんなと思いつつ。

命名規則について2024年07月16日 19:14

表次郎のマクロの命名規則をヘルプに書いたので
こちらにも公開します。

本来最初に決めてユーザーの付ける名称とシステム側で付ける名前が
ぶつからないようにするために命名規則を設けると思います。
ただ、基本的にユーザーがいないので自分のなかでもうけたルール
だけで作ってましたがマクロについての要望がユーザー側から
あったことから命名規則を文面化しておこうかなという
気分になったので作ることにしました。
(2024/07/16記述、マクロ公開から数年たっている)

何がいいたいかというと命名規則といいながら一部結構な部分もある
こと。
includeファイルの関数については現状の命名はあまりよくないの
ですが使っていることもあって存在は残すのですが
今後は修正しようかなと考えているということです。

以上、注意ください。
あと、アドオンマクロで作者がマクロを作ってるわけですが
命名はかなり適当な面もあるので良い見本ではないので注意ください。


【システム側で付ける名称】
・命令関係は小文字で統一。(例外:RGB())
 文字列と文字列の区切りをアンダーバー

・定数(表次郎的にはシステム側が事前に値を割り振った変数)では
 大文字で統一。(例外:true, false)
 文字列と文字列の区切りをアンダバー

・includeで取り込む関数:頭に"func_"を付けるようにして小文字で統一。
 文字列と文字列の区切りをアンダーバー
 ※例外としてcalendr.hsh, tool.hshで定義している関数は除く
  (利用している処理もあるのでファイルそのものは残す。)

・include内で使うグローバル変数は値をセットする関数名の頭に"g_"
 を付けて関数名の後ろにそれぞれの変数名を記述する。
 例:関数func_get_cell_range()で使うグローバール変数は
 g_func_get_cell_range_col1など

【ユーザー側推奨の名称】
・基本的には大文字小文字を混ぜた名前の場合は問題なしとする。
 ※例外としてcalendr.hsh, tool.hshのincludeファイルで定義している
  関数名は大文字小文字が混合したものになりますがルールなき
  時代のもので
  多分普通には名前がかぶることはないと思います。
  今後はシステム側が用意するものとしては大文字小文字の混合
  の名称は用意しないようにしたいと思っています。

・ローカル変数名:
 プレフィックス的な変数名。
 厳密に変数の頭に型を書いてほしいというわけではなく
 大文字小文字を混ぜた変数にしてもらうという意味です。

・グローバル変数名:
 小文字のみにする場合で頭に"g_"を付ける場合、"g_func_"とならな
 いようにする。

・定数は大文字で頭に"C_"を付けるようにする。

・関数の引数の名前はもし小文字だけにするなら頭に"i_"を付ける。
  (大文字小文字を混ぜるなら問題なし)
 ※作者は関数パラメータは小文字だけの略字にすることが多い
 ですが絶対に関数に名前を付けない自信があるからなので
 小文字だけにするなら"i_"を付けた方が無難です。
  作者が良くパラメータに小文字だけで指定してる名前の例は
  stringのデータならstrとか長さならlen、セルの位置はcol,rowなど
  str、lenについては関数で発生しそうですが既にstring, lengthと
  いう命令があるので短縮名の関数は用意するつもりはありません。

命令の名称について2024年07月21日 17:34

命名規則について話したので少し命名(?)についても書いときます。
ベース部分はC言語、セルの扱いとしてはエクセルVBAを
大きく意識して作っていたと思います。
結果としては独自色が強いものとなった気はしますが。

特にcell()についてはエクセルVBAがこんな命令でセルを操作
してたなとぼんやり思い出しながら付けました。

結果としてはVBAのほうはcells()という風に複数系のsが
付いてましたが、表次郎のcell()命令は単一セルにのみ
操作するものなのでcell()のままでいいかなという感じです。

実はcell()は最初内部処理に合わせてcell(列,行)の0開始位置と
いう仕様でした。
0開始を1開始にしたのは使っていく上で表示される表示が1から
だったので合わせないと使いにくいから合わせたと思います。

列、行だったのを行、列にしたのは試しにエクセルVBAを
動かしたら逆だったのでさすがにVBAはよく使うのに
反対だったらややっこしくて仕方ないなという思いで
行、列に修正しました。

独自色の命名はcell_keisen()ですね。
英語だとruled lineらしいからcell_ruled_line()かcell_ruled()が
正しかったんでしょうか?

そもそも下記のように関数っぽいものに値を入れたり出したりする
感じの動きがめずらしいのかもという気はします。
  cell_keisen() = 値;
  値 = cell_keisen();

VBAの"Cells() = 値"は確か略だけで厳密には"Cells().Value = 値"という
風にCellsのオブジェクトのプロパティのやりとりだったような?

表次郎ではオブジェクトとかの概念はなくそんな意味あいでは命名してない。
単純に変数への代入という概念を拡大解釈して作った感じになっている
ところが世間の言語とは違うのかなと思ったり思わなかったりです。

ちなみにこの方法にすることでget_xxx(), set_xxx()みたいに名前を
増やす必要ない点が気に入っています。
ただ、代入出来るもの、出来ないもの。または実行のみ可能なもの
が存在するがどの命令がどんな動きなのかはヘルプに依存する
感じになってしまっています。

set出来ないものはget_を頭に付けることで明確にわかるようには
してる命令もあります。
ただ全てかというとそうでもなく文字列操作系なんかはgetしか
できないけどget_は付いてないです。
この辺は完全に自己の感覚で付けているからなんともですね。

以上、少し命令の名前について振り返ってみました。
cellsにしなかった理由とかは何でかなと思ってましたが書いていて
思い出したりもしたので記録としては振り返るのも
悪いことではないかなと思いながら締めたいと思います。