TeXで起案する公文書・公用文書(kianマクロ)

ツール

UNIX系OSで業務をする際に,必要に迫られて作成したプログラムです。

せっかく作ったので,たくさんの方に使っていただきたいと思い,公開しました。

目次

zsh macro

sazae(栄螺)

sazae-v23.zip Released)

UNIX系OS(macOS,Linux,WSL(Windows Subsystem for Linux)等)のシェルzsh(Z shell)のコマンドラインで,migemo(cmigemo)を使い,ローマ字の文字列から,日本語のファイル名(ディレクトリ名を含む。)も含めて,補完候補を表示し,実際に補完するソフトウェアです。

日本で生活し仕事をする以上,一部の特殊な状況を除き,日本語のファイル名は避けて通れません。

zshは非常に優れた補完機能を有していますが,日本語のファイル名の場合は,簡単に補完できない状況もあります。

そこで,migemo(cmigemo)を使って,ローマ字の文字列から,候補となる日本語のファイル名を選び出し,補完候補を表示し,実際に補完させることができるようにしました。

  
    zsh> cd todo (Ctrl-i or Tab)
    zsh> cd 都道府県/

    zsh> ls
    愛知県.txt   宮城県.txt   埼玉県.txt   新潟県.txt   長崎県.txt   富山県.txt
    愛媛県.txt   京都府.txt   三重県.txt   神奈川県.txt 長野県.txt   福井県.txt
    茨城県.txt   熊本県.txt   山形県.txt   青森県.txt   鳥取県.txt   福岡県.txt
    岡山県.txt   群馬県.txt   山口県.txt   静岡県.txt   島根県.txt   福島県.txt
    沖縄県.txt   広島県.txt   山梨県.txt   石川県.txt   東京都.txt   兵庫県.txt
    岩手県.txt   香川県.txt   滋賀県.txt   千葉県.txt   徳島県.txt   北海道.txt
    岐阜県.txt   高知県.txt   鹿児島県.txt 大阪府.txt   栃木県.txt   和歌山県.txt
    宮崎県.txt   佐賀県.txt   秋田県.txt   大分県.txt   奈良県.txt

    zsh> cat yama (Ctrl-d)
    山形県.txt 山口県.txt 山梨県.txt
    zsh> cat yama (Ctrl-i or Tab)
    zsh> cat 山 (Ctrl-i or Tab)
    zsh> cat 山形県 (Ctrl-i or Tab)
    zsh> cat 山口県 (Ctrl-i or Tab)
    zsh> cat 山梨県
    甲府市

    zsh> cat *yama (Ctrl-d)
    岡山県.txt   山形県.txt   山口県.txt   山梨県.txt   富山県.txt   和歌山県.txt
    zsh> cat *yama (Ctrl-i or Tab)
    zsh> cat  (Ctrl-i or Tab)
    zsh> cat 岡山県 (Ctrl-i or Tab)
    zsh> cat 山形県 (Ctrl-i or Tab)
    zsh> cat 山口県 (Ctrl-i or Tab)
    zsh> cat 山梨県 (Ctrl-i or Tab)
    zsh> cat 富山県 (Ctrl-i or Tab)
    zsh> cat 和歌山県
    和歌山市

    zsh> cat yamaguchi (Ctrl-i or Tab)
    zsh> cat 山口県
    山口市
  
(栄螺の実行例)

このソフトウェアを導入するまでは,すべての日本語名のファイルについて,"TO-東京都.txt"や"OS-大阪府.txt"のようにローマ字のインデックスを先頭に付けて,名付けておりました。このソフトウェアを導入した今では,"東京都.txt"や"大阪府.txt"のように自然なファイル名で,名付けられるようになりました。

macOSのデフォルトシェルが,Catalina(10.15)からzshになったと聞きました。ぜひMacユーザーの皆様にお使いいただければと思います。

詳細は,zipファイル内の「README.txt」をご覧ください。

shell script

same(鮫)

same-v15.zip Released)

UNIX系OSのコマンドラインで使うゴミ箱です。

間違ってファイルを消してしまうことを防止するため,一時的にゴミ箱ディレクトリ「$HOME/.same」にファイルを保存します。

ゴミ箱がいっぱいになると,古いものから順に完全に削除するので,ゴミ箱の中を掃除したり,ゴミ箱の中を空にする必要がないのが特徴です。

  
    sh> ls *.txt
    a.txt b.txt c.txt

    sh> same b.txt c.txt
    ...(b.txtとc.txtの情報が表示)
    (max=100) eat?> y

    sh> ls *.txt
    a.txt

    sh> same -l
    ...(過去に削除したファイルの一覧が表示)

    sh> same -r 012(復元するファイルの番号)
    ...(復元するファイルの情報が表示)
    restore?> y
    ...(b.txtとc.txtを復元)

    sh> ls *.txt
    a.txt b.txt c.txt
  

使用感はrmと変わりませんので,rmの代わりに使っていただければと思います。

詳細は,zipファイル内の「README.txt」をご覧ください。

bera(倍良)

bera-v01.zip Released)

コマンドラインでバックアップを取るシェルスクリプトです。

ハノイの塔方式で,バックアップを取ります。ハノイの塔方式とは,古いデータはちょっとだけ,新しいデータはたくさん,バックアップを残す方式です。バックアップは時間が経つにつれて価値が下がっていくので,非常に合理的なバックアップ方式です。

次のように実行するだけで,簡単に,指定したファイル(ディレクトリを含む)を,指定したディレクトリの下にバックアップを取ることができます。

  
    sh> bera <file> <directory>
  

UNIX系OSにおいてハノイの塔方式でバックアップを取るパッケージソフトを探したのですが,見付けることができなかったので,もしかしたら需要があるのではないかと思い,公開することにいたしました。

バックアップを取るデータの性質に合わせて,(1)データを更新するたびに手動で実行する方法,(2)ログイン時又はログアウト時に実行するスクリプトに登録する方法,(3)crontabに登録して毎時又は毎日に実行する方法等で使っていただければと思います。

私は,crontabに登録して,毎日丑三つ時に,業務のデータのバックアップを取っています。

開発の経緯については,ハノイの塔方式でデータのバックアップを取るのが合理的かつ効率的な話をご覧ください。

詳細は,zipファイル内の「README.txt」をご覧ください。

emacs lisp

asari(浅蜊)

asari-v04.zip Released)

Emacs上で数値を計算するためのEmacs Lisp(elisp)です。

「100000+十万+100,000+10万+10万0000」のように,表現方式非依存で計算が出来ます。

  
    ;; 指定領域から式の作成
    ;; ※ カーソルは領域の末尾
    ;; 1(領域始->)2            3            4
    ;; 5            6            7(<-領域終)8
    ;; 2+3+4+5+6+7
    ;;
    ;; 矩形領域から式の作成
    ;; ※ カーソルは領域の先頭
    ;; 1(領域終->)2            3            4
    ;; 5            6            7(<-領域始)8
    ;; 2+3+6+7
    ;;
    ;; 表現方式非依存で計算
    ;; 100000+十万+100,000+10万+10万0000=50万0000
    ;;
    ;; 多彩な表現方式で計算結果を出力
    ;; 100000+十万+100,000+10万+10万0000=500000
    ;; 100000+十万+100,000+10万+10万0000=五十万
    ;; 100000+十万+100,000+10万+10万0000=500,000
    ;; 100000+十万+100,000+10万+10万0000=50万
    ;; 100000+十万+100,000+10万+10万0000=50万0000
    ;;
    ;; 四則演算
    ;; 1+2=3
    ;; 1+2-3*4/5=.6
    ;; 7-(6-5)=6
    ;;
    ;; 平方根
    ;; sqrt(2)=1.41421356237309504880168872420969
    ;;
    ;; 三角関数(単位はラジアン)
    ;; sin(pi/4)=.70710678118654752440084436210484
    ;; cos(pi)=-1
    ;;
    ;; 指数関数(底はネイピア数)
    ;; exp(2)=7.389056098930650227230427460575
    ;;
    ;; 対数関数(底はネイピア数)
    ;; log(2)=.69314718055994530941723212145817
    ;;
    ;; 円周率
    ;; pi=3.14159265358979323846264338327948
    ;;
    ;; ネイピア数
    ;; eu=2.71828182845904523536028747135266
    ;;
    ;; 1970年1月1日から1970年1月2日までの日数
    ;; days(700102)=1
    ;;
    ;; 1970年1月1日から2016年11月12日までの日数
    ;; days(161112)=17117
    ;;
    ;; 1970年1月1日から平成28年11月12日までの日数
    ;; days(H281112)=17117
    ;;
    ;; 平成28年11月1日から平成28年11月12日までの日数
    ;; days(H281112)-days(H281101)=11
  
(浅蜊の実行例)

仕事で金額や日数を計算することが多いのですが,このソフトウェアを導入してから,電卓というものを使うことが全くなくなりました。

詳細は,zipファイル内の「README.txt」をご覧ください。

kaki(牡蠣)

kaki-v01.zip Released)

Emacs上で,kianマクロ(http://hata-o.jp/kian/)に含まれるTeX関数と,「抵当権者」などの法律用語等に色を付けてカラフルにし,起案作業を支援する法律家のためのEmacs Lispです。

「原告」や「被告」など混乱しやすい法律用語に色を付けますので,kianマクロを使っておられない方でも,使う意味は大きいと思います。

(牡蠣の実行例)

開発の経緯については,背景色が白でも黒でも目立つ鮮やかな色をたくさん見付けてEmacsなどをカラフルにする話をご覧ください。

詳細は,zipファイル内の「README.txt」をご覧ください。

python

keiji(鮭児)

keiji-v01.zip Released)

取引履歴から利息や残債務額を計算するためのPython Scriptです。

法定利率(利息制限法の制限利率,民法所定の法定利率)に対応しておりますので,過払金の計算にも使えます。

  
    sh> cat 取引履歴.txt
    S45.01.01   10000       -
    S46.01.01  100000       -
    S47.01.01 1000000       -
    S48.01.01       -  500000
    S49.01.01       -  500000
    S50.01.01       -  500000
    S51.01.01       -  500000
    S52.01.01       -  500000
    S53.01.01       -  500000

    sh> keiji 取引履歴.txt
    日付----- 借入----- 返済---- 年利 日数 利息---- 増減----- 残利息--- 残元金----
    S45.01.01    10,000        0  =20    +        -    10,000         0     10,000
    S46.01.01   100,000        0  =18  365    2,000   100,000     2,000    110,000
    S47.01.01 1,000,000        0  =15  365   19,800 1,000,000    21,800  1,110,000
    S48.01.01         0  500,000  =15  367  166,956  -311,244         0    798,756
    S49.01.01         0  500,000  =15  365  119,813  -380,187         0    418,569
    S50.01.01         0  500,000   =5  365   62,785  -437,215         0    -18,646
    S51.01.01         0  500,000   =5  365     -932  -500,000      -932   -518,646
    S52.01.01         0  500,000   =5  366  -25,932  -500,000   -26,864 -1,018,646
    S53.01.01         0  500,000   =5  366  -51,071  -500,000   -77,935 -1,518,646
    --------- --------- -------- ---- ---- -------- --------- 【合計】  -1,596,581

    sh> keiji --help
    Usage: keiji [オプション]... [ファイル]

    取引履歴から利息等を計算します

    オプション
      -h, --help         この使い方を表示して終了します
      -v, --version      このプログラムのバージョンを表示して終了します
      -e, --exclude      初日を参入しません(デフォルトは算入する)
      -d, --daily        年未満は閏年を考慮せずに日歩で計算します
      -D, --Daily        全期間を閏年を考慮せずに日歩で計算します
      -n, --no-comma     桁区切りのコンマを出力しません
      -3  --3jc          日付を和暦(元号イニシャル+2桁年数)で出力します
      -2  --2wc          日付を西暦2桁年数で出力します
      -4  --4wc          日付を西暦4桁年数で出力します
      -t, --tex          LaTeX形式で出力します
      -c, --csv          CSV形式で出力します
      -m, --math         数式形式で出力します
      -w, --web          HTML形式で出力します
          --sample       サンプルデータを出力します
          --debug        デバッグのためのメッセージを出力します

    ファイルの指定がなかったり、"-"であった場合、標準入力から読み込みます
    入力データの仕様は、次のとおりです
      日付 借入額 返済額 年利 設定
        日付:    年月日の区切りは、"."を使います
                  元号は"MTSHR"が使えます。
                  元号がない場合、69未満は2000年代、70以上100未満は1900年代です
                  元号がない場合の100以上は、そのまま西暦です
                  例:  H01.02.03(平成元年2月3日)
                         69.02.03(  2069年2月3日)
                         70.02.03(  1970年2月3日)
                       2001.02.03(  2001年2月3日)
        借入額:  金額又は"-"を指定してください
                  桁区切りの","があっても構いません
                  金額の先頭に"_"を付けると、利息ではなく、元金に充当します
                  例:   10000(過払利息、過払元金の順に、1万円を充当します)
                        _10000(過払元金に、1万円を充当します)
        返済額:  金額又は"-"を指定してください
                  桁区切りの","があっても構いません
                  金額の先頭に"_"を付けると、利息ではなく、元金に充当します
                  例:   10000(利息、元金の順に、1万円を充当します)
                        _10000(元金に、1万円を充当します)
        年利:    パーセント単位で指定してください
                  "="にすると、利息制限法及び民法所定の利率になります
                  "*"にすると、遅延損害金となり1.46倍になります
                  2行目以下で指定がない場合は、前の設定を引き継ぎます
        設定:    初日だけ指定できます
                  "_"を指定すると桁区切りのコンマを出力しません
                  ";"を指定すると日付を和暦で出力します("-3"又は"--3jc"と同じ)
                  "."を指定すると日付を西暦2桁で出力します("-2"又は"--2wc"と同じ)
                  ":"を指定すると日付を西暦4桁で出力します("-4"又は"--4wc"と同じ)
                  "+"を指定すると初日参入です(デフォルトと同じ)
                  "-"を指定すると初日不参入です("-e"又は"--exclude"と同じ)
                  "?"を指定すると年未満を日歩計算します("-d"又は"--daily"と同じ)
                  "!"を指定すると全期間を日歩計算します("-D"又は"--Daily"と同じ)
                  "t"を指定するとLaTeX形式で出力します("-t"又は"--tex"と同じ)
                  "c"を指定するとCSV形式で出力します("-c"又は"--csv"と同じ)
                  "w"を指定するとHTML形式で出力します("-w"又は"--web"と同じ)
      例:  S64.01.02    10,000        -    = +!
            H01.02.03         -    5,000   5%
            H01.03.04         -   _5,000   5%

    行頭の"#"を除き、行の"#"以降は、無視されますので、コメントになります

    "---"を含む行は、無視されますので、コメント行に使えます

    年計算の場合、利息の計算は、次のとおりです(東京地裁等の取扱い)
      年単位にできるものは年単位にし、残りは非閏年と閏年に分けます
      年単位は年利で、非閏年は365日の日割り、閏年は366日の日割りで計算します
      例:  H02.09.01 ------> H03.08.31 ------> H04.01.01 ------> H04.05.01
            年利 -----------> 日割(非閏年) ---> 日割(閏年) ----->
    日歩計算の場合、利息制限法の利率を指定しても、同法に違反する場合があります

    よくわからない方は、「keiji --sample | keiji」を実行してみてください
  
(鮭児の実行例)

付属のEmacs Lispを使うことにより,Emacs上から使うこともできます。

(鮭児の実行例)

表計算ソフトでも同様の計算ができるソフトウェアを作ったのですが,汎用性等の理由からこのソフトウェアの方が便利であるため,こちらを使っています。

詳細は,zipファイル内の「README.txt」をご覧ください。

java

(準備中)

keymap

akauni(赤海胆)

akauni-v08.zip Released)

キーボードのキーマップを変更する設定ファイル集です。打ちやすさを重視して,作成しました。

キーボードの一般的なキー配列(Qwerty配列)の由来には,様々な見解がありますが,中央にFGHとJKLの並びがあるように,アルファベット順を修正したものと思われます。打ちにくい配列と言われており,あえて打ちにくく作ったという見解もあるほどです。

また,マウスに頼らず,アプリケーションを直接操作するショートカットキーは,Control-fが検索(find),Control-cがコピー(copy)であったりするように,押しやすさよりも,覚えやすさを優先して定められているように思われますし,アプリケーションによって,動作が違う場合もあります。

さらに,マウスは非常に直感的で使いやすいものですが,その性質上,ホームポジションから手が離れるため,作業効率が落ちることは否めません。

本設定ファイル集は,これらの問題点の改善を目的として,作成いたしました。

具体的には,アルファベットについては,Dvorak配列を少しだけ修正しました。Dvorak配列は,英文入力において打ちやすさを優先して設計された配列ですが,日本語の使用頻度を考えて,fとvは入れ替えました。

日本語入力については,Dvorak配列そのままを使ってローマ字入力した場合,か行と拗音が少し打ちにくいので,DvorakJPのアイデアでこれを修正しました(DvorakJPは非常に優れたアイデアです。心より敬意を評します。)。

ショートカットキーについては,打ちやすさを優先して,独自に配列しました。

マウスについては,キーボードから左手だけで使えるようにしました。

  
    一般キー(まとめ)
    --------------------------------------------------------------------------------
    [Esc] [6/`] [2/'] [0/"] [4/~] [8/^] [9/_] [5/|] [1/@] [3/=] [7/%] [?/!] [&/$]
    [Con]   [-/+] [,/;] [./:] [p/P] [y/Y] [v/V] [g/G] [c/C] [r/R] [l/L] [[/(] [{/<]
    [Mod]    [a/A] [o/O] [e/E] [u/U] [i/I] [d/D] [h/H] [t/T] [n/N] [s/S] []/)] [}/>]
    [Shi]      [//\] [q/Q] [j/J] [k/K] [x/X] [b/B] [m/M] [w/W] [f/F] [z/Z] [*/#]
                   [Alt/Met] [Sup/Hyp] [Space] [Zen/Cap] [Ret/Lin]
    --------------------------------------------------------------------------------
    Esc: Escape                             Con: Control
    Mod: Mode_switch                        Shi: Shift
    Alt: Alt                                Met: Meta
    Sup: Super                              Hyp: Hyper
    Zen: Zenkaku_Hankaku                    Cap: Caps_Lock
    Ret: Return                             Lin: Linefeed

    ショートカットキー(Mode_switch(又はControl)と同時押し)(まとめ)
    --------------------------------------------------------------------------------
    [   ] [F1 ] [F2 ] [F3 ] [F4 ] [F5 ] [F6 ] [F7 ] [F8 ] [F9 ] [F10] [F11] [F12]
    [Con]   [Spe] [MoU] [ScL] [ScU] [ScR] [Qui] [Pas] [Sea] [Up ] [Hom] [PgU] [End]
    [Mod]    [MoL] [MoD] [MoR] [ScD] [Tab] [Cut] [Bac] [Lef] [Dow] [Rig] [PgD] [Exe]
    [   ]      [ClR] [ClC] [ClL] [Sy1] [Sy2] [Sy3] [Ent] [Und] [Sav] [Fr1] [Fr2]
                   [       ] [       ] [Clear] [       ] [       ]
    --------------------------------------------------------------------------------
    MoU: Mouse move up                      MoD: Mouse move down
    MoL: Mouse move left                    MoR: Mouse move right
    ScU: Mouse scroll up                    ScD: Mouse scroll down
    ScL: Mouse scroll left                  ScR: Mouse scroll right
    ClL: Mouse click left                   ClC: Mouse click center
    ClR: Mouse click right
    Sy1: System 1(window manager)           Sy2: System 2(window)
    Sy3: System 3(application)
    Up:  Up                                 Dow: Down
    Lef: Left                               Rig: Right
    PgU: PgUp                               PgD: PgDn
    Hom: Home                               End: End
    Cut: Cut                                Pas: Paste
    Spe: Special                            Qui: Quit
    Sea: Search                             Tab: Tab
    Cut: Cut                                Bac: Backspace
    Exe: Execute                            Ent: Enter
    Und: Undo                               Sav: Save
    Fr1: Free 1                             Fr2: Free 2

    ショートカットキー(Mode_switch(又はControl)と同時押し)(日本語入力)
    --------------------------------------------------------------------------------
    [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ]
    [Con]   [   ] [   ] [   ] [   ] [   ] [   ] [   ] [Shr] [Pri] [Exp] [   ] [   ]
    [Mod]    [   ] [   ] [   ] [   ] [   ] [   ] [   ] [Lef] [Nex] [Rig] [   ] [   ]
    [   ]      [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ]
                   [       ] [       ] [     ] [       ] [       ]
    --------------------------------------------------------------------------------
    Shr: 文節の縮小                         Exp: 文節の拡大
    Pri: 前の候補                           Nex: 次の候補
    Lef: 前の文節                           Rig: 次の文節
  

長い間,キー配列について研究してきておりますが,このソフトウェアは完成形の一つだと考えています。

詳細は,zipファイル内の「README.txt」をご覧ください。