knmsc (勤務予定表作成手伝い) 取扱説明書
v.1.06 KinJ
【概要】
knmsc は20人以下程度の小規模事業所向けの勤務予定(スケジュール)表の作成を支援するソフトウェアです。
本プログラム(knmsc )専用のスクリプトに記述された設定条件や勤務予定データなどをもとに勤務予定表を作成するだけ の比較的コンパクトなWindowsデスクトップアプリケーションソフトウェアです。
knmsc は Windows PC であれば単独で動作します。また Linux の Wine 環境でも(一部の機能制限はありますが)動作します。
このスクリプトは本プログラムのスクリプトエディタで作成および編集できますが、世の中に豊富にある汎用テキストエディタを用いて作成・編集することも可能です。
テキストエディタの操作に不慣れのかたには「スクリプトウィザード」によりスクリプトの主要なデータ部分をGUIベースで比較的簡単に編集できます。(スクリプトウィザードに関しては説明書「スタートガイド 」をお読みください。)
作成したスクリプトにもとづき勤務予定表を表示・印刷するほか、GUI(マウスドラッグ)で勤務時刻の変更を行ったり、メール等に添付し易いように画像ファイルとして出力したり、画像データをオフィスソフト等に貼り付けるためにその画像データをクリップボードにコピーしたり、テキストデータとして一部のメールクライアント(ソフト)にメール送信を依頼する機能などを備えています。
なお、始業・終業時刻がほぼ固定された数種のシフト勤務を比較的厳格に運用するような事業所には knmsc はあまり適さず、そのような事業所にはもっと適したソフトが多くあると思います。
起動時に読込まれ初期設定するスクリプトファイルにはサンプルデータも記述されておりますので、まずは knmsc .exe を起動してみてください。
【基本操作】
左上段を「枠A」もしくは「図A」と呼び、右枠を「枠B」もしくは「図B」と呼ぶ
枠A(図A)には、期間内のある一日 のメンバー全員 の勤務(時間)予定表(time schedule chart)
枠B(図B)には、あるメンバー の期間内の全ての日 の勤務(時間)予定表
枠C(図C)には、枠Aのデータに対応するマンパワー(HP="Human resources Power")合計値のチャート
が表示される
上記の図A、図B、図Cには、基本的には本プログラム専用のコマンド言語の仕様に従ったスクリプトファイル(.kss)に記述された情報に従って作図・表示される
(具体的には、スクリプトの exit コマンドでスクリプトの実行が完了したのちに作図・表示される)
この情報データは、スクリプト実行後に後述の【勤務時間の変更】などで説明されるマウス操作等により変更可能である
枠A(図A)の左側のメンバー欄をクリックすると枠B(図B)に表示されるメンバーが切り替わる
枠B(図B)の左側の日付欄をクリックすると枠A(図A)と枠C(図C)に表示される日付が切り替わる
図A、図Bおよびそれらのデータは、上部のメニューや上部のボタン等により、画像ファイル(.png, .emf, .pdf)やテキストファイル(.txt, .tsv, .csv)、クリップボード、プリンタ、eメールなどに出力できる
本プログラム(knmsc )は、スクリプトファイル(.kss)を閲覧・編集するためのスクリプトエディタを備えているが、ユーザーが選択した汎用テキストエディタでの閲覧・編集も可能であり、本プログラムはそれらのテキストエディタソフトウェアを起動する機能を備える
(汎用テキストエディタとしては、多くの使い易いフリーソフトが一般に利用可能で、またWindows付属のメモ帳も利用可能なので、わざわざ本プログラムがその機能を備える必然性は無いと思っています)
スクリプトのデータ部分は「スクリプトウィザード」でも編集できる
【上部のメニュー】
ファイル ファイル関連
ユーザーフォルダを開く エクスプローラー(Windows Explorer)を起動してユーザーフォルダを開く
終了 本プログラムを終了させる
スクリプト スクリプト関連
スクリプトファイルを指定して読込 スクリプトファイルを選択してスクリプトエディタに読込んでから実行する
スクリプトウィザード (スクリプト簡易編集) スクリプトエディタに読込まれているスクリプトのおもなデータを スクリプトウィザードウィンドウに表示する
スクリプトエディタ表示/非表示 スクリプトエディタのウィンドウの表示/非表示を切替える
スクリプトファイルを 外部エディタで編集 直前に実行したスクリプトファイルを外部テキストエディタで編集する
スクリプト再読込 直前に読込・実行したスクリプトを再読込・実行する (外部エディタでの編集結果で表示を更新)
システムスクリプト再読込 プログラムフォルダにある初期設定用スクリプト(knmsc_ini.kss)を再読込&実行する
システムスクリプトを 外部エディタで編集 プログラムフォルダにある初期設定用スクリプト(knmsc_ini.kss)を外部テキストエディタで編集する
スクリプトのファイル保存 スクリプトエディタやウィザード等での編集結果をスクリプトファイルとして名前をつけて保存
ログファイルの閲覧・編集 ログファイルを外部エディタで閲覧・編集する
デバッグモード スクリプトを一行ずつ実行して一時停止をする
印刷 プリンタ(実(物理)プリンタもしくは仮想プリンタ)に印刷したり、プリンタの設定を行う
デフォルトプリンタに印刷 knmsc でのデフォルトプリンタに登録されたプリンタに印刷する
プリンタを選択して印刷 Windowsの印刷ダイアログボックスもしくは Print property sheet を開いてプリンタを選択して印刷する
デフォルトプリンタの選択 knmsc でのデフォルトプリンタを選択する
図出力 図Aや図Bなどの図表を出力する
Copy EMF 拡張メタファイル(EMF)形式でクリップボードにコピーする (Word/Excel等の文書にドロー系の図として拡縮して貼付けられる)
拡張メタファイル(EMF) 拡張メタファイル(EMF)形式でファイルに保存する (Word/Excel等の文書にドロー系の図として挿入できる) ディスプレイモニタに収まらない部分も作図される
ビットマップ画像ファイル(PNG) PNG形式のビットマップ画像をファイルに保存する (スマホ等で閲覧するメンバーへのメールに添付するのに便利) ディスプレイモニタに表示された範囲の画像が保存されるので、 メンバー数や日付が多い場合には収まらない場合がある
PDF ファイル 仮想プリンタに印刷データを送り、仮想プリンタからPDFを出力する (PCで閲覧するメンバーへのメールに添付するのに便利)
PDFファイルのページ分割 複数ページのPDFファイルを PDFtk™ を用いてページ分割する
スクリーンショット 表示ウィンドウをPNG(8bit)ファイルとして出力する
データ 出力 勤務予定表をテキスト(文字列)データとして出力する
Copy txt (space区切り) to CB 通常のテキストデータをクリップボード(CB)にコピー (メール本文に挿入するときなどに用いる)
Copy tsv (tab区切り) to CB タブ区切りのデータをクリップボードにコピー (Excel 等のスプレッドシートに貼付けるときに用いる)
Copy csv (comma区切り) to CB カンマ区切りのデータをクリップボードにコピー
Save .txt file (space区切り) 通常のテキストデータをファイルに保存
Save .tsv file (tab区切り) タブ区切りのデータをファイルに保存 (タブ区切りのデータ(.tsv)は、おもにクリップボード経由で利用され、 ファイルとして利用されることはあまりは無い)
Save .csv file (comma区切り) カンマ区切りのデータをファイルに保存 (.csv ファイルとして Excel 等で読込可能)
メール送信 枠Aもしくは枠Bの勤務予定表データにヘッダを付けてメール本文を作成し 件名とともにメールクライアント(メールソフト)に送信依頼する
HTML出力 フォルダを作成しHTMLファイルや画像(PNG)ファイルを出力 関係者連絡用の(イントラネット)ウェブサーバーにフォルダごと転送し掲示するなどに利用
出勤時刻予定表出力 出勤時刻予定表をプリンタや仮想プリンタ(PDF)、もしくはHTMLに出力する
表示 ディスプレイなどへの表示設定
表示時刻範囲の変更 表示左端時刻(時), 右端時刻(時), 刻み(分) を入力
表示拡縮 ディスプレイに表示する図の拡大・縮小率を変更する
始終独立⇒連動 マウス左ドラッグで勤務時間バーを変更する際に、始業時間と終業時間を独立にするか、連動させるか。 ・独立:その日の実働時間が変わる ・連動:その日の実働時間は変わらない
HPower表示形式 図Cの表示形式 供給&需要(S,D) もしくは 差分(S-D) を切替える
フォント変更 図A図B図Cで使用できる日本語フォントを選択し変更 選択したフォント名のテキストはクリップボードにコピーされる
ヘルプ ヘルプ情報
取扱説明書 ブラウザを起動し、この取扱説明書を表示させる
スタートガイド(入門書) ブラウザを起動し、「スタートガイド」を表示させる
knmsc について本プログラムのバージョンや使用中のPCの環境情報等を表示する
【上部のボタン】
マウスカーソルをボタンの上に重ねると表示される「ツールチップ」の補足説明を参照のこと
表示するボタンの項目の並びと選択はスクリプトコマンド place_button でカスタマイズ可能
スクリプトコマンド place_button での略号↘と標準↓
枠 A 前日 枠Aに前の日の時間表を表示する DayP 〇
翌日 枠Aに次の日の時間表を表示する DayN 〇
印刷(全日) 期間の全ての日の図A(全メンバー時間表)をデフォルトプリンタに印刷する プリンタを選択して印刷する場合は上段メニューの「印刷」から行う 仮想プリンタを指定した場合は、PDFファイルとして出力される その場合の印刷条件は「プリンタ」になる DAPr 〇
印刷(月/日) 表示中の一日分の図A(全メンバー時間表)をデフォルトプリンタに印刷する D1Pr 〇
PNG(月/日) 現在枠Aに表示されている図Aを PNG形式のビットマップ画像ファイルとしてユーザーフォルダに保存。 現在枠の範囲の画像が保存されるので、必要なら直前に Resize ボタン等で調整すること。 保存直後に Explorer で保存先フォルダが開かれるので、保存された PNG の確認・メール添付が容易。 D1Pn 〇
PDF(月/日) 現在枠Aに表示されている図Aの印刷データを仮想プリンタに送り、仮想プリンタからPDFファイルが保存される。
・PDFファイルの保存先フォルダは仮想プリンタ側で指定する
・PrimoPDF™ v4.1 ではPDFファイル名に全角文字を使えなかったため半角英数字だけで指定 D1Pd 〇
ス ク リ プ ト Script読込 スクリプトファイル(.kss)を指定してスクリプトエディタに読込んでから実行する ※スクリプトエディタのツールバーのアイコンボタン「開く」と同じ ExUS 〇
Script再読込 直前に読込んで実行したスクリプトファイルを再読込して実行する (「直前に読込んだスクリプトファイル」の名前は最下段のステータスバーに表示されている) スクリプトファイルを外部のテキストエディタで編集し上書き保存してからScript再読込すれば、 編集で追加・削除・変更した内容が反映される ※本ボタンはスクリプトファイルを外部のテキストエディタで編集することを想定して残している スクリプトエディタを用いる場合にはメインウィンドウのこのボタンは使用せずに スクリプトエディタのツールバーのアイコンボタンを使用したほうがよい ReUS
ScriptWizard スクリプトウィザードを表示する WzUS 〇
全 体 %表示 ディスプレイに表示する図の拡大・縮小率を変更する DsSc
Resize 枠Aと枠Bが適切に表示できるようウィンドウの大きさを調整する ・横幅は枠Aと枠Bに合わされる ・縦は枠Aと枠Bの長いほうに合わされる 但し、それより長い状態のときは変更しない DsRs 〇
始終独立/連動 マウス左ドラッグで勤務時間バーを変更する際に、始業時間と終業時間を独立にするか、連動させるか。 ・独立:その日の実働時間が変わる ・連動:その日の実働時間は変わらない StEn
枠 B 名前< 枠Bにひとつ前のメンバーを表示 MemP 〇
>名前 枠Bに次のメンバーを表示 MemN 〇
印刷(全員) 全員分の図Bをプリンタに出力する MAPr 〇
印刷(名前) 枠Bに現在表示されているメンバーの図Bをプリンタに出力する M1Pr 〇
TextCopy (名前) 枠Bに現在表示されているメンバーのこの期間の勤務予定表をテキストデータでクリップボードにコピーする。 スクリプトで定義したヘッダ文も挿入され、メール本文などに「貼付け」可能。 M1Tx 〇
メール(名前) スクリプトの member 行にメールアドレスが登録されていれば、 そのPCで使用しているメールクライアント(Thunderbirdなど)を起動して、上記のTextCopyの内容を貼付ける。 (送信前の確認の有無などは ShellExecute/MAPI およびメールクライアント側の仕様により異なる) M1ML 〇
PNG(名前) 現在枠Bに表示されている図Bを PNG形式のビットマップ画像ファイルとしてユーザーフォルダに保存。 現在枠の範囲の画像が保存されるので、必要なら直前に Resize ボタン等で調整すること。 保存直後に Explorer で保存先フォルダが開かれるので、保存された PNG の確認・メール添付が容易。 M1Pn 〇
PDF(名前) 現在枠Bに表示されている図Bの印刷データを仮想プリンタに送り、仮想プリンタからPDFファイルが保存される。
・PDFファイルの保存先フォルダは仮想プリンタ側で指定する
・PrimoPDF™ v4.1 ではPDFファイル名に全角文字を使えなかったため半角英数字だけで指定 M1Pd 〇
【スクリプトエディタ上部のツールバーのアイコンボタン】
マウスカーソルをボタンの上に重ねると表示される「ツールチップ」の補足説明を参照のこと
実行 実行 編集中のスクリプトを実行
保存 上書き保存 編集中のスクリプトを上書き保存
名前をつけて保存 編集中のスクリプトを名前を付けて保存
読込 再読込 編集中のスクリプト破棄して 元のスクリプトファイルを再読込&実行
開く 別のスクリプトファイルを読込&実行
新規作成 新規スクリプト作成
編集 元に戻す これらは スクリプトエディタのウィンドウ内での マウス右クリックにより現れる ポップアップメニューでの動作と同じ
切り取り
コピー
貼り付け
削除
検索 置換 [検索文字列] 検索(順方向/逆方向)する文字列を入力
検索(順方向) 下に向かって文字列を検索
検索(逆方向) 上に向かって文字列を検索
検索 検索ダイアログボックスを開く
置換 置換ダイアログボックスを開く
【スクリプトウィザード】
スクリプトウィザードの操作に関しては説明書「スタートガイド」(knmsc_tutor.htm ) を参照のこと。
スクリプトウィザードの位置づけとスクリプトエディタほかとの関係については下図。
knmsc プログラム
スクリプト
ファイル
メイン
ウィンドウ
スクリプト
エディタ
スクリプト
ウィザード
外部テキスト
エディタ
図描画
マウス編集結果
open
save
show
Ok
open
save
・スクリプトファイルのスクリプト(テキスト)がスクリプトエディタのメモリにロードされ、スクリプトエディタでスクリプトのCUI(CLI)編集が可能になる
・スクリプトウィザードは、スクリプトエディタ(で編集中)のスクリプトのうち勤務時間表データ生成に関するコマンド行を抽出し表形式に整理して表示しGUI編集を可能にする
・スクリプトウィザードで編集後の[Ok]ボタンにより、スクリプトウィザードでの編集結果がスクリプトエディタのスクリプトに反映され、スクリプトエディタ経由でそのスクリプトに従いメインウィンドウに描画される。
[OkSave]ボタンの場合は、これに加え、スクリプトエディタのメモリ上のスクリプトがファイルに保存される。
・なお、次々項の【勤務時間の変更】 で説明されるメインウィンドウでのGUI編集も上図の「マウス編集結果」としてスクリプトエディタのメモリ上のスクリプトに反映される。
【勤務時間の設定範囲】
勤務時間は 0:00~47:59 の範囲で定義される
但し「始業時刻」の設定可能範囲は 0:00~23:59 で
終業時刻=始業時刻+労働時間+休憩時間 は 0:01~47:59 が可能
24:00 を跨ぐ勤務の場合でも「始業時刻」は「当日」の 0:00~23:59 で指定すること
前日の 24:00~47:59 の勤務分は当日の勤務時間バーの 0:00~23:59 にも表示される
表示範囲が24:00以降もある場合、翌日の 0:00~23:59 の勤務分は当日の 24:00~47:59 にも勤務時間バー表示される
※【勤務時間の変更】に関し、現バージョンでは、前日もしくは翌日の勤務分が当日に反映された勤務時間バーの(おもに終業時刻)部分をマウスドラッグしても【勤務時間の変更】はできないので、「メニュー⇒表示⇒表示時刻範囲の変更」か draw_param,hours コマンドで当日の終業時刻が表示されるように表示時刻範囲を拡大し、勤務時間バーの当日表示部分をドラッグする必要がある
図Cの合計マンパワーの割当量(供給)は勤務時間バーと同様に 24:00 以降の割当量は翌日の 0:00 以降にも表示されるが、要求量(需要)は 0:00~48:00 で定義される(翌日分には反映されない)
現バージョンでは、終業時刻が 24:00 以降になる場合でも、翌日の始業時刻とのオーバーラップはチェックされない
現バージョンでは、休憩は1回だけで、複数の休憩を設定することはできない
【勤務時間の変更】
始業時刻の変更:勤務時間バーの左端付近をマウス左ドラッグ
終業時刻の変更:勤務時間バーの右端付近をマウス左ドラッグ
※ノートPC等のタッチパッドでは、上記の「マウス左ドラッグ」は
(a) 左タッチパッドボタンを押したままスライド(ドラッグ)
(b) タップした直後にもう一度タップ(ダブルタップ)し2回目のタップ後に指を上げずにドラッグ(「タップ&ハーフ」)
のいずれか
(※「タップ&ハーフ」の機能の有無はPCの機種・設定に依存する)
※現バージョンでは、前日もしくは翌日の勤務分が当日に反映された勤務時間バーの(おもに終業時刻)部分をマウスドラッグしても【勤務時間の変更】はできないので、「メニュー⇒表示⇒表示時刻範囲の変更」か draw_param,hours コマンドで当日の終業時刻が表示されるように表示時刻範囲を拡大し、勤務時間バーの当日表示部分をドラッグする必要がある
始業時刻と終業時刻を連動させるか独立させるかは上段のボタンで変更可
その日を休暇取得するかなどは、マウス右クリックでポップアップメニューを選択する 「休暇日」:(年次)休暇取得 「出勤日」:休暇取得にする前の勤務時間になる 「出勤日(基本時間)」:スクリプトの member 行で決めた勤務時間に戻す
「休憩開始時刻」と「休憩時間」の個別日の設定や変更は上記のマウス右クリック等ではできず、スクリプトの member および change_hrs コマンドで行うことになる
始業時刻もしくは終業時刻を「休憩開始時刻」~「休憩終了時刻」の間に設定することはできない
始業時刻が休憩終了時刻後になる場合や、終業時刻が休憩開始時刻前になる場合は、その日の休憩は無いということになる
マウスによる「勤務時間の変更」はスクリプトエディタで編集中のスクリプトの有効な exit コマンドの直前行に挿入される。 但し、この時点ではスクリプトファイルに直接追加書き(更新保存)は行われないので、編集操作完了後にスクリプトファイルを保存すること
マウスによる「勤務時間の変更」の履歴は、ログファイル(次節で説明)に追加記録されマウス操作ごとに更新保存されているので、スクリプトファイルを外部のテキストエディタで変更(編集)する場合には操作後にログファイルを利用することができる
スクリプト実行後のマウスによる「勤務時間の変更」の回数は最下段のステータスバーに chg_hrs として表示される(スクリプト実行ごとに回数はリセット)
【半日休暇の取扱い】
「半日休暇」は労働基準法で定められた休暇ではなく、それぞれの会社・事業所の就業規則で決められており、会社・事業所により運用が異なるため、knmsc では下記の独自基準で「半休」の機能を追加した。
半休の定義:
前半休(午前休):出勤時刻を休憩終了時刻に変更して「半日休暇」と申請
後半休(午後休):退勤時刻を休憩開始時刻に変更して「半日休暇」と申請
半休の出退勤時刻となる上記の休憩開始・終了時刻は
(スクリプトコマンド "member" で定義した)基本勤務時間セットの休憩時刻
(スクリプトコマンド "change_hrs" での変更が反映された)現設定の休憩時刻
のいずれかにスクリプトコマンド "wrkhrs,hdayoff," で設定される
前半休の場合の退勤時刻、後半休の場合の出勤時刻は変更されない
基本勤務時間セットに「休憩」が設定されていないメンバーには「半休」は適用できない
基本勤務時間セットに複数の休憩が設定されている場合は最初の休憩時刻が対象
半休取得(付与)での年次休暇日数の算定は
前半休・後半休とも 0.5日 とする
前半休では基本勤務時間セットの (出勤時刻~休憩開始時刻)÷(労働時間) 日
後半休では基本勤務時間セットの (休憩終了時刻~退勤時刻)÷(労働時間) 日 とする
のいずれかにスクリプトコマンド "wrkhrs,aplcal," で設定される
半休取得(付与)は、図Aもしくは図Bにおける右ボタンクリックで現れるポップアップメニューの「⇒前半休(h1off)」、「⇒後半休(h2off)」で行う
スクリプトでの半休取得(付与)は change_hrs コマンドの time_or_attr パラメタで "h1off"(前半休)、"h2off"(後半休)を指定する
上記操作によらず、単に出勤時刻を休憩終了時刻以降に変更した場合は「半日休暇」とはせず、通常の勤務時間変更として扱う
図Aの名前の右、図Bの日付の右の時刻欄には「半休」等の表示はされないが、前半休では上段の出勤時刻、後半休では下段の退勤時刻が青文字で表示される
勤務属性の状態遷移は勤務日属性 を参照のこと
【ログファイル】
「勤務時間の変更」の操作を行った履歴は、ログファイルに記録されている。
ログファイルの格納場所は、スクリプトの log_folder コマンドで定義したフォルダ(例えば、ユーザーフォルダの log_chg フォルダ)の中の期間初日名のフォルダ
スクリプトの alloc_period コマンドが実行されたあとに、「勤務時間の変更」の操作が行われると新しいログファイルが生成される。 ファイル名は、記録を開始した日時と時刻(yyyymmdd_hhmmss.kss)
ログファイルはスクリプトの change_hrs コマンドとして記録しているので、それ自身をスクリプトファイルとして実行できる。 また、コピー&貼付けで既存のスクリプトファイルに貼付けすれば、変更操作履歴をスクリプトに反映できる。 ※スクリプトエディタを用いている場合はログファイルを用いる必要はあまりない。
【出勤時刻予定表作成機能】
出勤時刻枠ごとの出勤者が示された一覧表(出勤時刻予定表)を作成する機能
[メインメニュー]>[データ出力]>[出勤時刻予定表出力]で開かれるダイアログボックスから実行
画面には出力せず、基本的にプリンタや仮想プリンタ(PDF)に出力する
直接プリンタに出力するよりは、仮想プリンタに出力して表示された PDF を確認したうえでそれを印刷したほうが良い。
仮想プリンタからのPDFファイルは knmsc のユーザーフォルダではなく、仮想プリンタのウィンドウで示されたフォルダに出力される。
モノクロプリンタに印刷する場合は「セル背景カラー」のチェックを外したほうが良い。
直接もしくはPDF経由でカラープリンタに印刷する場合は「セル背景カラー」にチェックを入れる。
カラーの場合は「文字背景白」にチェックを入れたほうが見易くなる。
印刷する必要が無い場合は[HTML]を選べば、HTMLファイルが生成され、ブラウザに表示される。
「印刷倍率」は外枠の左上角を中心に拡縮される
「印刷の向き」は[出勤時刻予定表出力]ダイアログボックスの説明に従って設定する
以前は、スクリプトコマンド sttbl,orientation,1 などで「印刷の向き」を設定できるはずだったが、最近の Windows では Win32 アプリケーションからは直接設定できなくなっているようである
印刷の向きを指定してPDFを作成する場合は[プリンタを選択して印刷]で「印刷の向き」を設定し仮想プリンタを選択する
スクリプトでは "sttbl," で始まるコマンド で出勤時刻予定表関係のパラメタを設定できる
【印刷時の表(table)挿入機能】
table コマンドで格子状の枠を持つ表を印刷ページに挿入できる
表の作成はプリンタ(実プリンタもしくは仮想プリンタ)への印刷もしくはPDF出力時のみ
〔用途〕出勤確認チェック欄、特記事項欄など
表を挿入できるページ位置は図Aの下側で、図Cに替えて表を印刷
行数・列数の異なる複数の表を生成可能
行高さや列幅を任意に指定可能だが、セルの結合はできない
セルに表示する文字列を定義済み変数 (後述)によって指定することも可能
table コマンドでの定義済み変数 はスクリプト実行時ではなく印刷時に文字列に置換される
【メール送信依頼機能】
knmsc で作成した勤務表を電子メールクライアント(メールソフトなどとも呼ばれる)にメール送信を依頼する機能
knmsc はスクリプトコマンド text_data_header で予め指定された書式に従って「件名」と「本文」を自動生成し、メールクライアントにメール送信を依頼する
「本文」にはヘッダテキスト(文頭に挿入される文字列)に続き、当該の勤務予定表(テキスト)が記載される
メール送信依頼方法は下記のいずれか(mail,dll で指定)
ShellExecute(mailto機能)
・多くのメールクライアントが mailto 機能に対応している
・添付ファイルを自動で添付できない
・メールクライアントによっては、その送信ウィンドウが表示されたときに手動でファイルを添付させることができる
簡易MAPI(Simple Messaging API)
・一部のメールクライアントが MAPI に対応している
・添付ファイルを自動で添付できる
・現在、knmsc から添付できるファイルは勤務予定表の画像ファイル(.png)のみ
・メールクライアントによっては送信前に送信確認が無い
これらの機能の動作確認は Mozilla Thunderbird のみで実施済み
その他のMAPI対応メールクライアント(Outlook や Becky! 等)では動作確認未実施
メールの宛先(送信先)はスクリプトコマンド member の[メールアドレス ]に指定する
サンプルスクリプトの[メールアドレス ]には RFC 2606 の「例示用に予約されたセカンドレベルドメイン名(example.com, example.net, example.org)」を用いて記述しているが、メール(SMTP)サーバーによっては「例示用として無視」してくれないこともあるので、テストの際には必ずユーザー自身が管理し受信可能なメールアドレスを指定すること
ShellExecute の mailto機能や 簡易MAPI の SendMail機能等は、間接的にメールクライアントを介するもののアプリケーションソフトから勝手にメールを送信できてしまうので、セキュリティの観点から使用が制限される傾向にある
使用したくない場合はスクリプトの member コマンドに[メールアドレス ]を記載しないこと
【スクリプトの実行方法】
・システムスクリプト :knmsc.exe があるプログラムフォルダにある "knmsc_ini.kss" という名前のスクリプトファイルで、おもに knmsc の初期設定を行う
・ユーザースクリプト :上記のシステムスクリプト以外のスクリプトファイル。拡張子が ".kss" である任意のファイル名で、保存先フォルダも任意だがユーザーフォルダに保存されていると呼出し易い。
knmsc 起動時には上記のシステムスクリプト ファイル(knmsc_ini.kss)が自動的に実行される
("knmsc_ini.kss" が見つからない場合はシステムスクリプトのサンプルファイル "_knmsc_ini.kss" が実行される)
knmsc が起動されたあとはユーザースクリプト(もしくはシステムスクリプト)を下記のいずれかで実行できる
(a) スクリプトエディタのウィンドウ上部のツールバーの最左の「実行」ボタン
(b) スクリプトエディタのウィンドウ上部のツールバーの「開く」ボタン
もしくは、メインウィンドウ上部の
メニュー⇒スクリプト⇒スクリプトファイルを指定して読込
もしくは、メインウィンドウ上部の「Script実行」ボタン
(c) スクリプトエディタのウィンドウ上部のツールバーの「再読込」ボタン
もしくは、メインウィンドウ上部の
メニュー⇒スクリプト⇒スクリプト再読込
もしくは、メインウィンドウ上部の「Script再読込」ボタン
※(c)は直前に読込・実行したスクリプトファイルを再読込して実行するもので、おもに外部テキストエディタでスクリプトを編集し上書き保存した結果で図表の表示を更新するために用いる
(d) エクスプローラー(Windows Explorer)からスクリプトファイル(.kss)をドラッグして本プログラムのウィンドウにドロップする
(e) スクリプト中の exit コマンドのパラメタに記述されたスクリプトファイル(.kss)
スクリプトファイル(.kss)は、一旦スクリプトエディタに読込まれた後に実行される。
スクリプトエディタのスクリプトは編集等を施したあとに更新保存することなく上記の(a)により実行することができる。
一方、上記の (b)~(e) は、スクリプトファイルを読込み、その直後一回のスクリプト実行を行う。
スクリプトファイル拡張子(.kss)が knmsc.exe に関連付けされている場合、ユーザースクリプトをダブルクリックするか、knmsc.exe のショートカットアイコンにドロップすることにより knmsc を起動できる。
この場合は、起動時にシステムスクリプト(knmsc_ini.kss)は実行されずに、当該のユーザースクリプトが最初に実行される。(そのため当該ユーザースクリプトには初期設定が記述されている必要がある。)
【スクリプトエディタ】
v.1.03 以降ではknmscスクリプト専用のスクリプトエディタを別ウィンドウで使用可能とした。
従来通りに外部の汎用テキストエディタでスクリプトファイルを編集して実行することも可能であるが、knmscスクリプトエディタを使うことで下記のメリットがある。
スクリプトエディタのメリット
・編集中のスクリプトをファイル保存しなくても実行できる
・エラー発生行やデバッグモード中の現在行を確認できる
・スクリプト実行後に行ったマウスなどGUIによる勤務時間変更等が直ちに編集中のスクリプトに反映される(ログファイルからコピーする必要が無い)
・knmsc のために新たにテキストエディタをインストールする必要が無い
スクリプトエディタのデメリット
・Win32 API のエディットコントロール機能だけを利用した簡易エディタのため、外部の汎用テキストエディタに比べると下記など編集機能が格段に劣る(「メモ帳」の編集機能と同程度)
・改行や全角空白・タブ等の表示機能が無い
・「元に戻す」が一段階しか記憶されていない
・折り返し表示ができない
・複数のスクリプトを同時に編集できない
・改行コードは CR+LF に限定される
注)スクリプトエディタはシフトJISで動作する。文字コードが UTF-8 のスクリプトファイルは読込時にシフトJISに変換されるが、編集後の保存時には UTF-8 に戻して保存される。
【スクリプトの構成】
knmsc のスクリプトは、下記のような機能をもつ「環境設定」と「データ作成」のコマンドで構成される
〔1〕本プログラムの環境設定 (Configuration and Settings)
・フォルダの登録、画像ファイルの設定、フォントの指定
・ディスプレイへの表示、プリンタ、仮想プリンタ(PDF)、メール送信依頼などの設定
〔2〕グループやメンバー構成などの基本データ
・業務グループの定義
・各メンバーの基本情報(名前、基本勤務時間、メールアドレスなど)
〔3〕作成期間の事業所営業/休日等のデータ
・所定休日(週休、祝日、事業所休日など)
・記念日(行事)、備考(特記事項)
〔4〕作成期間の勤務時間データ
・メンバーごとの休日、勤務シフトの設定
・メンバーごとにシフトのローテーション(規則的なシフトの振分け)
・シフトごとにメンバーのローテーション(規則的なメンバーの振分け)
〔5〕個別日のデータの変更・修正
・休暇取得、代休付与・取消等
・個別日の勤務時間の変更
スクリプト処理完了後は自動的に作図(表示更新)されるが、スクリプトには作図、印刷、ファイル出力などを実行するコマンドは用意されていないので、それらはメニューやボタンなどGUIで行う
環境設定とデータ作成をひとつのスクリプトに記述することも複数のスクリプトに分けて記述することもできる。 例えば、以下のようないくつかの運用方法が考えられる。
(a) 〔1〕~〔5〕の全てをひとつのスクリプトファイルに記述
(b) 〔1〕はシステムスクリプトに記述し、〔2〕~〔5〕をユーザースクリプトに記述
(c) 〔1〕と〔2〕をシステムスクリプトとし、グループ変更や新規メンバー追加などメンバー構成を変更したときだけ更新&上書き保存し、〔3〕~〔5〕をユーザースクリプトとして毎月作成もしくは更新&別名保存する
インストールアーカイブに付属されるシステムスクリプトのサンプル(_knmsc_ini.kss)は(a)のように〔1〕~〔5〕が記述されているが、このうち〔1〕の環境設定でデフォルト設定を適用すれば注釈行(行頭が#)を除く実質的なコマンド行は数行程度で済むので、ユーザースクリプトにも〔1〕を含ませて使い廻したほうが手軽かもしれない
knmsc 起動時の設定状態に戻す「リセット」コマンドは用意されておらず、複数のスクリプトを実行する場合、前のスクリプトのコマンドで設定したパラメタを次のスクリプト実行時にデフォルト設定に戻すためには、同一のコマンドでパラメタを設定し直す必要がある
後述する initialize_group_and_member と alloc_period コマンドは作業領域を確保し初期化するため、それぞれ〔2〕と〔3〕の先頭に記述する必要がある
【スクリプトの規則】
#(半角の井桁)以降はその行の末尾まで「コメント(注釈)」と解釈され実行時は無視(読み飛ば)される
〔コマンド〕,〔第1パラメタ〕,〔第2パラメタ〕, .....
〔コマンド〕や〔パラメタ〕の区切りは半角カンマ(,)
(一般的なスクリプトでは〔コマンド〕と〔第1パラメタ〕の間は半角スペースであることが多いが、knmsc のスクリプトではここも半角カンマ(,)であることに注意)
〔コマンド〕は全て半角。大文字でも小文字でもよい
日付等も半角
〔コマンド〕〔パラメタ〕とも前後の半角スペースは無視される
半角スペース( )とアンダースコア(_)を間違えないこと
半角スペース( )と全角スペース( )も間違えないこと
タブは半角スペースや半角カンマなどの代替には扱われない
殆どの汎用テキストエディタでは、半角スペース、全角スペース、タブが判別できるように表示されるが、「メモ帳」の表示では判別できないため注意
文字コードは シフトJIS(Shift_JIS,SJIS,CP932)を用いること
絵文字(Unicode Emoji 等)やShift_JIS非対応文字(「鷗」「蔣」など)は使えない
(スクリプトファイルの文字コードが UTF-8 と推定された場合は Shift_JIS に変換して読込みを試みる。但し、UTF-8 の文字集合(文字セット)は Unicode であるため、Shift_JIS もしくは CP932 が参照する文字集合 JIS X 0208 に無い「絵文字」や「Shift_JIS非対応文字」を含んでいる可能性があるが、それらの文字は Shift_JIS に変換できない)
【スクリプトコマンドに後続するパラメタの記述形式】
[値 ]:一般には数値
[日付 ]:yyyy/mm/dd(内部では 2001/01/01 からの通算日に変換して保持)
1. スラッシュ(/)区切り 2019/02/04, 2019/2/4, 2/4
2. ピリオド(.)区切り 2019.2.4
3. ハイフン(-)区切り 2019-2-4
(ハイフン区切りは [期間 ] には使えない)
4. 8桁数字 20190204
[期間 ]: [日付 ]-[日付 ] (日付2つをハイフンで結合)もしくは "all "
[曜日 ]: 日 月 火 水 木 金 土 Sun Mon Tue Wed Thu Fri Sat
[週 ]: 月曜を起点とする週に属するすべての日
(ISO 8601 規格に従い、週の最初の日は月曜日、最後の日は日曜日とする)
w 0 : 作成期間内の最初の月曜日より前の日
w 1 : 作成期間内の最初の月曜日から7日間
w 2 : 作成期間内の2番目の月曜日から7日間
w .....
[時刻 ]:hh:mm 24時間制(内部では 00:00 からの分に変換して保持)
1. コロン(:)を含む 8:00, 7:15 など 00:00 ~ 47:59 まで有効
2. 最後が 'H' 8.0H 7.5h 8h など
3. 数字のみは「分」とみなす 60, 240 など
[時間 ]:記述形式は [時刻 ] と同じ
[勤務時間セット ]:[時刻 ]/[時間 ]/[時刻 ]/[時間 ]
「始業時刻/ 労働時間/ 休憩開始時刻/ 休憩時間」
※「勤務時間セット」を「シフト」と読み替えてもよい
・拘束時間=労働時間+休憩時間
・午前勤務など休憩時間を含まない場合は休憩時間はゼロ
・始業時刻:設定可能範囲は 0:00~23:59
・終業時刻=始業時刻+拘束時間 は 0:01~47:59 が可能
[勤務形態名 ]:[勤務時間セット ]を識別できる文字列(シフト名)
[勤務日属性 ]:対象日の勤務属性の「状態遷移」もしくは「遷移後の状態」
勤務日属性
勤務日属性 属性状態 状態遷移 Action
off 休暇 休日通常出勤⇒休暇 休日出勤⇒休日(※) 休暇取得 休日出勤取消
on 出勤 休暇⇒通常出勤 代休⇒通常出勤 半休⇒通常出勤 休日⇒休日出勤 休暇取消 代休取消 半休取消 休日出勤
doff 休日 労働日⇒休日 休日付与 振替休日
don 労働日 休日⇒労働日(通常出勤) 労働日化
coff 代休 通常出勤⇒代休 休暇⇒代休(※) 代休付与 代休割当
con - 代休⇒通常出勤 代休取消
h1off 前半休 通常出勤⇒前半休 前半休取得
h2off 後半休 通常出勤⇒後半休 後半休取得
※「休日出勤⇒休暇」とするためには「休日出勤⇒労働日⇒休暇」とする必要がある
※「休暇⇒代休」は休暇取消を伴うため、本来は「休暇⇒通常出勤⇒代休」の手順が望ましい
※ con は coff の対称性のために設けており、on で代替可能
┏━━━━━━ 労働日(don) ━━━━┓ ┏━ 休日(doff) ━┓
┃┏━━┓hoff┏━━━━━━━━┓ ┃doff┃ ┏━━━━┓ ┃┐
┃┃半休┠←─┨ 通常出勤 ┃ ┠→┐┃ ┃休日出勤┃ ┃├出勤日
┃┃hoff┠─→┨ don ┠←╂┐│┃ ┃ ┃ ┃│
┃┗━━┛on ┗┯┯━━━━┯┯┛ ┃││┃ ┗━┯┯━┛ ┃┘
┃ on↑↓off con↑↓coff┃││┃ on↑↓off ┃
┃ ┏┷┷┓ ┏┷┷┓ ┃││┃ ┏━┷┷━┓ ┃┐
┃ ┃休暇┃ ┃代休┃ ┃│└╂→┨ 休日 ┃ ┃├お休み
┃ ┃off ┠─→┨coff┃ ┃└←┨ ┃ doff ┃ ┃│
┃ ┗━━┛coff┗━━┛ ┃don ┃ ┗━━━━┛ ┃┘
┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━┛
遷移前後の状態変化
勤務日 属性 遷移前の状態
休日 休暇 休出 出勤 代休
off 遷 移 後 の 状 態 (休日) (休暇) 休日 休暇 --
on 休出 出勤 (休出) (出勤) 出勤
doff (休日) 休日 休日 休日 休日
don 出勤 出勤 出勤 (出勤) 出勤
coff -- 代休 -- 代休 (代休)
con -- 出勤 -- (出勤) 出勤
h1off -- -- -- 前半休 --
h2off -- -- -- 後半休 --
[勤務日属性 ] に関する補足説明
knmsc では労働基準法を参考にして下記の用語を用います
休日(広義の所定休日):労働者が労働義務を負わない日
法定休日:毎週1回 or 4週4日
法定外休日(狭義の所定休日)
労働日:労働者が労働する義務がある日(休日でない日)
通常の出勤日(「出勤日」という用語は労基法には無い)
代休
休暇(休業も含む):労働日に会社がその労働義務を免除する日
法定休暇:年次有給休暇、育児休暇、介護休暇など
特別休暇:夏季休暇、リフレッシュ休暇、病気休暇など
・出勤日は「通常の出勤日」と「休日出勤日」のいずれかになる
・法定休日と法定外休日(狭義の所定休日)では時間外労働の割増賃金の割増率が異なる
但し、knmsc では賃金計算は行わないので、法定休日と法定外休日の区別はしない
・knmsc は「休暇」に関し年次休暇支給日数や有給/無給などを関知しないため、法定休暇や特別休暇を含め細目の区別はしない
[メンバー名 ]:メンバーを識別できる文字列
[メンバー別名 ]:メンバーを識別できる文字列(英数字)
[メールアドレス ]:使用するメールクライアントに依存する。
名前 <account@domain.com> など
account@domain.com だけであればほぼ問題無い
[グループ名 ]:グループを識別できる文字列
[グループ別名 ]:グループを識別できる文字列(英数字)
※別名は全角文字非対応の外部アプリを利用するためなどに英数字で定義する
具体的には HTML での URL や仮想プリンタでのPDFファイル名およびグループコンボ
[マンパワー指数 ]:「人的資源(HR)として割当可能な能力の期待できる値」で、当該メンバーの当該グループ業務に対する能力指数
・当該グループ業務に対して「一人前」の能力が期待できる場合は 1.0
1.5人分の能力が期待できれば 1.5、半人前なら 0.5
・マイナス値(足を引っ張る)も設定は可能
・同時に複数のグループ業務を担当するケースは未
[色コード ]:rrggbb 形式 (Hex triplet)
rrggbb の6桁の16進数(000000~ffffff)
rr 赤成分(00~ff)
gg 緑成分(00~ff)
bb 青成分(00~ff)
ウェブカラーと同様だが先頭の # は記載しない(スクリプトの注釈との混同を避けるため)
[時刻vs値 ]:<[時刻 ]>[値 ]<[時刻 ]>[値 ]....<[時刻 ]>[値 ]<[時刻 ]>[値 ]
[時刻 ] と [値 ] を交互に連結する。[時刻 ] は <> で囲む。時区間(time segment)における一定値を表す。
例 <7:00>0.5<10:00>0.15<12:00>0<13:00>0.13<15:00>0.8<17:00>0.5<20:15>0
[時刻vsグループ ]:[グループ名 ]<[時刻 ]>[グループ名 ]<[時刻 ]>[グループ名 ]....<[時刻 ]>[グループ名 ]<[時刻 ]>[グループ名 ]
[時刻 ] と [グループ名 ] を交互に連結する。[時刻 ] は <> で囲む。時区間(time segment)におけるグループを表す。
[グループ名 ] は [グループ別名 ] でもよい。
【スクリプト変数】
knmsc スクリプトでは、一般の変数はまだサポートされておらず、一部の「定義済み変数 」のみサポートされている
knmsc スクリプトでの「定義済み変数 」は、% と % に挟まれた特定の英小文字、記号、数字で定義され、文字列を保持する
定義済み変数 の書式指定子
関係 m メンバー(member) 添字が後続
d 日(day) 添字が後続
添字 1 番号(number)
_ 現在(current)
+ 番号を+1
表示 項目 n 名前(name)
a 属性(attribute)
r 備考(remark) 添字番号が後続
定義済み変数 の表記例
%m1d_n% メンバー1(m1)の表示日(d_)の名前(n) テンポラリーメンバーは出勤日以外は空白に置換
%m_d_n% 表示中の(m_)の表示日(d_)の名前(n)
%m1n% メンバー1(m1)の名前(n) テンポラリーメンバーも出勤日によらず表示
%m_n% 表示中のメンバー(m_)の名前(n)
%m+n% 次のメンバー(m+)の名前(n)
%m1d_a% メンバー1(m1)の表示日(d_)の属性(a)
%d_r1% 表示日(d_)の備考1(r1)
定義済み変数 は table コマンドと text_data_header コマンドのパラメタ内でのみ使用可能
【スクリプト コマンド リファレンス】
太字 はコマンドなどの定数(既定文字列)を表す
斜体 は変数(パラメタ)を表す
コマンド行の [ ] 内はオプションパラメタ
★ は必須コマンド
[データ ] 等 [ ] と下線で示された箇所は【パラメタの記述形式】で定義されたデータ型
《例》においても # 以降行末までは注釈(コメント)
プログラムフォルダのシステムスクリプト(knmsc_ini.kss)のコメント行(#)も参照してください。
《利用するPC環境での初期設定》
folder,user , user_folder
★利用者が knmsc に関するデータを格納・保存もしくは作業するためのユーザーフォルダの登録
user_folder : ユーザーフォルダ名をフルパスで記述
《例》folder,user,C:\user\data\勤務表
当該フォルダが無い場合、
上位フォルダがある場合は、当該フォルダを生成する
上位フォルダも無い場合には、上位フォルダも生成するかを確認する
(上位フォルダを生成しない場合はプログラム実行を中止する)
folder,distribution , distr_folder
★勤務表配付用ファイルを格納するフォルダの登録
distr_folder : 勤務表などの配付用ファイルを格納するフォルダ名をフルパスで記述
《例》folder,user,C:\user\data\勤務表\dstr_files
folder,log , log_folder
★ログファイルを格納するフォルダの登録
log_folder : ログファイルを格納するフォルダ名をフルパスで記述
《例》folder,log,C:\user\data\勤務表\log_chg
image,png,bpp , bits
PNGファイル書出のときの減色を指定
bits : Indexed Color のときの bpp (bits per pixel)
《例》image,png,bpp,8
image,png,lib , library
PNGファイル書出(エンコード)のときに使用するライブラリ
library : libpng (libpng を使う場合) もしくはそれ以外の文字列(GDI+ を使う)
《例》image,png,lib,gdiplus # PNG の読み書きに GDI+ を使う
《例》image,png,lib,libpng # PNG の読みにGDI+,書込みに libpng を用いる
《注》libpng を指定した場合でもPNG読込(デコード)は GDI+ で行われる
image,png,cmp , cmplevel
PNGファイル書出のときにlibpng を用いるときのzlib圧縮レベル
cmplevel : zlib圧縮レベル(0~9)、GDI+ でのPNG書込みでは無視される
《例》image,png,cmp,9
image,logo , filename [,left ,top ,width ,height [,rcol ,out_file ]]
事業所のロゴ(ロゴマーク、ロゴタイプ)の画像ファイルの指定
filename : 画像ファイル名
left : 表示座標左(数値ではなくアスタリスク(*)は右寄せを示す)
top : 表示座標上
width : 表示幅
height : 表示高さ
rcol : 減色数
《例》image,logo,shidashiya.png,*,0,70,35
《例》image,logo,.\ourlogo.gif,625,0,125,30
《注》
・対応する画像ファイルの種類は .jpg, .gif, .png, .bmp など
・filename が、パスが省略されファイル名だけの場合(\ が無い場合)は (1)カレントフォルダ(実行中のスクリプトのあるフォルダ) (2)システムフォルダ(knmsc.exe 格納フォルダ) (3)ユーザーフォルダ(folder,user で定義されたフォルダ) の順番に指定されたファイルを探す
・カレントフォルダのみ探索する場合には、カレントフォルダを示す相対パス ".\" を使い ".\logo1.jpg" などと指定する
(Windowsで「パス名」という場合は「ファイル名(ベース名+拡張子)」を含むが、上記の説明の「パス」は「パス名」のうち「ファイル名」を除く部分でフォルダを示す部分のこと)
・ロゴ画像を非表示とする場合はfilename を含めそれ以降のパラメタを記載しない
・画像ファイルの読み込みはデフォルトでは Windows の GDI+ を用いている
・rcol を指定しない場合は 256色減色
GDI+ で rcol に256以下の数値を指定した場合は、その色数に減色する
・勤務時間バー等に使う色数は少ないので、「ロゴ」の画像の色数を減らすと出力する画像ファイルのファイルサイズを(少し)小さくできる場合があるが、ロゴを伸縮貼付けする際は HALFTONE 指定のために色数は増加してしまう
caption , x ,y ,height ,string
キャプション(主にロゴ画像の代替)を定義する
x : X座標
y : Y座標
height : フォント高さ
string : 表示する文字列
《例》caption,610,0,18,仕出屋本舗||佃島店
・複数行を表示させる場合、改行を "||" で表す
・caption は実行コマンドではないので1箇所のみ指定可
・image,logo と併用もできるが、表示座標によっては重ね書きになる
font,general , font_name
時刻などの数字以外の文字の表示に使用する日本語フォントを指定する
font_name : フォント名
《例》font,general,Meiryo UI
font_name 採用時期 備考
UD デジタル 教科書体 N Windows11/22H2
UD デジタル 教科書体 N-R Windows10/1709 Windows11/24H2以降不可
Yu Gothic UI Windows10 User Interface用
Yu Gothic Windows10
游ゴシック Windows10
Meiryo UI Windows8(Win7で限定採用) <デフォルト>
メイリオ Windows Vista 和文部は等幅,欧文部は可変幅
MS UI Gothic Windows 98 可変幅,画面表示用
MS Pゴシック Windows 95 可変幅
MS ゴシック Windows 3.1 等幅
font,numbers , font_name
時刻の数字のフォント(日本語を含まず半角英数用フォントを指定可)
font_name : フォント名
《例》font,numbers,Arial
implicit,year , yyyy
日付で年を省略したとき設定される年
yyyy : 西暦年
《例》implicit,year,2019
《注》initialize_group_and_member でクリアされ未設定になる
基本的には alloc_period より前で設定すること
implicit,year を省略するなど、alloc_period の時点で未設定の場合は、alloc_period で指定した初日の年が設定される
alloc_period より前に設定されているときは alloc_period 設定時に期間初日の年と一致するかのチェックが行われる
alloc_period より後に指定したときは alloc_period で設定した期間初日とのチェックは行われない
date_style , format
年月日(曜) の表示形式を指定する
format : 書式化文字列(C言語の printf の書式に準ずる)
《例》date_style,%04d年%d月%d日(%s) # 2019年2月4日(月) <デフォルト>
《例》date_style,%04d/%d/%d(%s) # 2019/2/4(月)
《例》date_style,%04d/%02d/%02d(%s) # 2019/02/04(月)
《例》date_style,%04d-%02d-%02d(%s) # 2019-02-04(月)
《例》date_style,%04d.%02d.%02d(%s) # 2019.02.04(月)
day_of_week_style , style
曜日の表示形式
style : Japanese か English
《例》day_of_week_style,Japanese # 日 月 火 水 木 金 土 <デフォルト>
《例》day_of_week_style,English # Sun Mon Tue Wed Thu Fri Sat
display,scale , scale_factor
ディスプレイモニタ(液晶モニタ(LCD)等)に表示する拡大・縮小率
scale_factor : 拡大・縮小率(%)
《例》display,scale,65
・デフォルトは 100(%)
・knmsc での表示サイズは上記の scale_factor と「Windows のディスプレイ設定の拡縮率(論理dpi)」とを掛け合わせた拡縮率になる
・knmsc は「高DPI」に対応しているため、縦と横のそれぞれの表示ピクセル数は、この掛け合わせた拡縮率に比例する
・WindowsノートPCの出荷時のディスプレイ設定の拡縮率(論理dpi)は、Full-WXGA(1366x768)では100%(96dpi)、Full-HD(1920x1080)では125%(120dpi)もしくは150%(144dpi)に設定されていることが多い
show_script_editor , on_off
スクリプトファイル読込後にスクリプトエディタを表示するかどうか
on_off : on 表示 もしくは off 非表示
・コマンド実行時にも表示/非表示の切り替えが行われる
・スクリプトエディタを使用せずに外部テキストエディタでスクリプト編集を行う場合には二重編集を避けるためにスクリプトエディタを非表示にしておいたほうが良い
・その時点での表示/非表示の状態はメインウィンドウのメニューで切り替えできる
place_button , 1or2 , buttons
スクリプトファイル読込後にスクリプトエディタを表示するかどうか
1or2 : 1 左枠の上部 もしくは 2 右枠の上部
buttons : 表示するボタンの略号をセミコロンでつないだ文字列
「ボタンの略号」は【上部のボタン】 の表を参照
《例》place_button,1,DayP;DayN;DAPr;D1Pr;ExUS;WzUS;D1Pn;D1Pd;DsRs # 左枠 標準
《例》place_button,1,DayP;DayN;DAPr;D1Pr;ExUS;ReUS;DsSc;DsRs;StEn # 左枠 v1.03互換
《例》place_button,2,MemP;MemN;MAPr;M1Pr;M1Tx;M1ML;M1Pn;M1Pd # 右枠 標準
《例》place_button,2,MemP;MemN;MAPr;M1Pr;M1Tx;M1Pn;M1Pd # 右枠 メール無し
debug_mode , on_off
スクリプトを一行ずつ実行して一時停止をするモードを切り替える
on_off : on 開始 もしくは off 解除
・スクリプト内の一部分にデバッグモードを適用する際に用いる
《プリンタ設定》
printer,default , printer_name
knmsc でのデフォルトプリンタの指定
printer_name : プリンタ名
《例》printer,default,Brother MFC-L3770CDW Printer
・printer_name で指定できる文字列は、
default :OS(Windows)に設定されている「通常使うプリンター」
・Windows10 の初期設定では最後に使用したプリンターが通常使うプリンターとして設定されている
・Windows 8.1 までは「通常使うプリンター」は固定されている
実(物理)プリンタ名(上記の《例》など)
仮想プリンタ名(CubePDF, PrimoPDF など)
のいずれか
《省略時》knmsc 起動時に「通常使うプリンター」とされているプリンタが設定される
printer,pdf , vprt_name
仮想プリンタ(紙に印刷するかわりにPDFを出力)の指定
vprt_name : 仮想プリンタ
《例》printer,pdf,CubePDF
《省略時》CubePDF, PrimoPDF, Microsoft Print to PDF のいずれかの仮想プリンタがインストールされている場合はこの優先順位で設定される
優先順位を変更したり、上記以外の仮想プリンタを指定する場合は本コマンドで指定すること
printer,scale , scale_factor
印刷データの拡大率
scale_factor : 印刷データの拡大率(%)
《例》printer,scale,850
《注》knmsc は入力データの画素密度が 600dpi 相当のプリンタへの拡大率を想定している
例えば入力データの画素密度の仕様が1200dpiのプリンタに対して knmsc はAPI(GDI)へのデータの値を2倍する
※プリンタの入力データの画素密度(dpi)は印刷時の(出力)解像度(dpi)とは異なる
プリンタの入力データの画素密度は印刷設定⇒詳細設定⇒印刷品質にあたる
printer,margin , left_margin , top_margin
印刷時の左側と上側余白
left_margin : 印刷時の左側余白(600dpi相当のpixel単位)<デフォルト=283>
top_margin : 印刷時の上側余白(600dpi相当のpixel単位)<デフォルト=283>
《例》printer,margin,283,283
《注》600dpi で 283pixel の余白は 283/600*25.4=11.98mm に相当
(printer,scale の影響は受けない)
printer,new_page , np
図Aもしくは図B の印刷時の改ページの有無
np : 数字
0:改ページを行わない(1ページに収まらない部分は印刷されない)<デフォルト>
1:図Aもしくは図Bがそのページに収まらない場合は改ページを行う
《注》図Cや表(Table)の部分では改ページは行われない(そのページに収まらない部分は印刷されない)
printer,orientation , pl
用紙の向き
pl : 用紙の向き 縦(PORTRAIT)=1 横(LANDSCAPE)=2
《例》printer,orientation,1
《注》プリンタによってはここでの設定は無視される
その場合は、「プリンタを選択して印刷」の詳細で用紙の向きを指定する
emf,scale , scale_factor
拡張メタファイル(EMF)出力の拡大率
scale_factor :拡大率(%)
《例》emf,scale,100
《注》拡張メタファイル(EMF)はベクトル画像のため、拡縮による画質の劣化は小さいが、整数値の丸め誤差による分解能の影響が顕著な場合は拡大率を大きくすると改善される可能性がある
print_item , num , item1 [, item2 [, item3 [, item4 ...]]]
印刷項目の指定(ここでの項目はプリンタ(PDFを含む)印刷用でディスプレイへの表示はできない)
num : 1 (左枠)もしくは 2 (右枠)
・メニュー⇒印刷 と「印刷」ボタンに対応
item1 : 1番目(最上段)に印刷する項目(A(図A)かB(図B))
item2 : 2番目(第2段)に印刷する項目(C(図C),表ID のいずれか)
item? : ?番目(第?段)に印刷する項目(表ID)
・item? は A (図A),B (図B),C (図C),表ID のいずれかだが、現状では
・num =1 では item1 は A に固定
・num =2 では item1 は B に固定し、item2 以降を指定しないこと
《例》print_item,1,A,C # 初期状態
《例》print_item,1,A,T1,T2 # 項目2と項目3には表(table)を印刷
《例》print_item,2,B # 初期状態(固定)
table , id , create , row , col
表(table) を新たに生成する
(表(table)は print_item から参照されディスプレイには表示できない)
id : 表ID (任意の英数文字列)
row : 行数
col : 列数
《例》table,T1,create,6,10 # 行(row)×列(column)の表T1を作成
table , id , pos , x , y
表(table) の左上の位置(座標)をmm単位で指定する
id : 表ID (任意の英数文字列)
x : 表の左側余裕距離(mm)
y : 表の上側余裕距離(mm)
《例》table,T1,pos,0,4
table , id , height , h1 , h2 , ....
表(table) の各行ごとの高さをmm単位で指定する
id : 表ID (任意の英数文字列)
h1 : 第1行の高さ(mm)
h2 : 第2行の高さ(mm)
《例》table,T1,height,8,18,8,18,8,18
table , id , width , w1 , w2 , ....
表(table) の各列の幅をmm単位で指定する
id : 表ID (任意の英数文字列)
w1 : 第1列の幅(mm)
w2 : 第2列の幅(mm)
《例》table,T1,width,18,18,18,18,18,18,18,18,18,18
table , id , text , n , string , string ,....
表(table) 第n行の各列に表示する文字列を指定する
id : 表ID (任意の英数文字列)
n : 行番号
string : 文字列
・文字列中に%で挟まれた定義済み変数 を用いることができる
%m 5n% は5番目のmemberコマンドで定義された[メンバー名 ]の文字列(n)に展開
%m 5d_a% は5番目のmemberコマンドで定義されたメンバー(m)の当該日(d_)の勤務状態の文字列(a)に展開
《例》table,T1,text,1,%m1d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n%,%m+d_n% #第1行の各列の文字列
《例》table,T1,text,2,%m1d_a%,%m2d_a%,%m3d_a%,%m4d_a%,%m5d_a%,%m6d_a%,%m7d_a%,%m8d_a%,%m9d_a%,%m10d_a% #第2行の各列の文字列
《例》table,T2,text,2,20:00~21:00,時間外予約 %d_r1% 様
《本プログラムから起動させるアプリのパス名の指定》
apps,text_editor , path
スクリプトを編集するテキストエディタの指定
path : テキストエディタの実行ファイル(.exe)のパス
《例》apps,text_editor,C:\Program Files (x86)\Mery\Mery.exe # 64bit版Windows で 32bit版.exe をインストールした場合
《例》apps,text_editor,C:\Program Files\Mery\Mery.exe # 上記以外
《例》apps,text_editor,notepad.exe # Windows付属の「メモ帳」を使う場合
《注》デフォルト(起動時の初期値)では拡張子.txt に関連付けされている実行ファイル(.exe)のパスが設定されているので、適切に関連付けされていればとくに設定する必要はなく省略できる
apps,pdftk , path
PDFファイルのページ分割ツール(PDFtk™) の指定
path : pdftk.exe のパス
《例》apps,pdftk,pdftk
《注》PDFtk™を既定の手順でインストールした場合は PATH が通されているのでフルパスで記述する必要はない
パス(PATH)が通っていない場合は、下記のように pdftk.exe をインストールしたフォルダをフルパスで指定
(PDFtk のWindows版バイナリは 32bit版の .exe のみ)
《例》apps,pdftk,C:\Program Files (x86)\PDFtk\bin\pdftk.exe # 64bit版Windows で 32bit版.exe をインストールした場合
《例》apps,pdftk,C:\Program Files\PDFtk\bin\pdftk.exe # 上記以外
apps,inkscape , path
拡張メタファイル(EMF)をSVGに変換するために用いる Inkscape の実行ファイルのパスを指定
path : inkscape.exe や inkscape.com のパス
《例》apps,inkscape,pdftk
《注》Inkscape の公式版はバージョン1.4系以降から64ビット版のみ
フル版でもポータブル版でも同じ
Windows アプリの場合は(Windows環境でも、Linux/Wine環境でも)パス区切りは \ であり、~\bin\inkscape.exe もしくは ~\bin\inkscape.com となる
Linux ネイティブアプリの Inkscape を Linux/Wine環境での knmsc.exe から起動する場合は、パス区切りは / となる
但し、Linux ネイティブアプリを knmsc.exe から起動する場合は不具合が起こることがある
《例》apps,inkscape,C:\Program Files\Inkscape\bin\inkscape.exe # Windows native Inkscape を使用
《例》apps,inkscape,/usr/bin/inkscape # Linux Wine で Linux native Inkscape を使用
《勤務時間バーの表示形式》
disp,display , disp_type
ディスプレイモニタへの勤務時間バーの表示形式
disp_type : 表示形式
・塗りつぶし方法
+1 (grayscale)グレイスケール(256階調)で塗りつぶし
+2 (color)カラーで塗りつぶし
+4 (hatch)ハッチングで塗りつぶし ←未実装
・輪郭線(border)
+8 輪郭線を描画
+0 輪郭線を描画しない
・文字の背景
+16 文字の背景を白で塗りつぶし(OPAQUE)
+0 文字の背景を塗りつぶさない(透過 TRANSPARENT)
《例》disp,display,26 # 2+8+16 # カラー(デフォルト)
《例》disp,display,25 # 1+8+16 # グレイスケール
《例》disp,display,2 # 2+0+0 # カラー、 輪郭線を描画しない、背景透過
disp,pdf , disp_type
PDF出力するときの勤務時間バーの表示形式
disp_type : 表示形式
《例》disp,pdf,26 # 2+8+16 # カラー(デフォルト)
disp,printer , disp_type
プリンタへ出力するときの勤務時間バーの表示形式
disp_type : 表示形式
《例》disp,printer,26 # 2+8+16 # カラープリンタ(デフォルト)
《例》disp,printer,25 # 1+8+16 # モノクロプリンタ
《メール送信関連》
mail,dll , method
knmsc からメールクライアント(メールソフト)にメール送信を依頼する方法の選択
method =none : ShellExecute を用いる(添付ファイル不可)
method =mapi : 簡易MAPI(Simple Messaging API)を用いる
《例》mail,dll,mapi
mail,attach , item
メールクライアントに送信を依頼するメールに添付する項目を指定する
item =png : PNG画像ファイルを添付する
《例》mail,attach,png
《注》MAPIを指定した場合に添付するが、MAPIを指定しない場合でもPNGファイルを生成する
text_data_header , a_b , subject , body
テキスト出力の文頭に挿入される文字列を定義
a_b : A もしくは B
A は枠Aの一日分、B は枠Bの一人分の「テキスト出力」や「メール送信」に適用
subject : 件名の文字列
body : 本文の文頭に挿入される文字列
「メール送信」もしくは「テキスト出力(スペース区切り)」で文頭に挿入される文字列を定義する。
・A の場合、subject や body の中で、%d_n% は「この日」の日付に置換される
・B の場合、subject や body の中で、%m_n% は「このひと」のメンバー名に置換される
・body での改行は "||" で表す
《例》text_data_header,A,明日の勤務予定表,各位|||| 明日 %d_n% の勤務予定表を送付致します。||ご確認願います。||||勤務担当||||
《例》text_data_header,B,来月度の勤務予定表(%m_n%様),%m_n%様|||| %m_n%様の来月度の勤務予定表を送付致します。||ご確認願います。||||勤務担当||||
《出勤時刻予定表の設定》
sttbl,days , num_of_days
表示する日数
sttbl,minutes , minutes
時刻枠(分)
sttbl,orientation , 1_or_2
印刷方向 1:縦 2:横 (プリンタによっては無視される)
sttbl,bkmode , mode
名前枠背景/文字背景 18:カラー/白抜き 2:カラー/透過 0:なし
sttbl,scale , scale
印刷拡縮率(等倍=1.0)
sttbl,hleft , mm
表枠の左余白(mm)
sttbl,vtop , mm
表枠の上余白(mm)
sttbl,vcap , mm
表枠上~キャプション下の余白(mm)
sttbl,vfont , mm
表枠内文字のフォントサイズ(mm)
sttbl,vfont_c1 , font_mm
表のキャプションのフォントサイズ(mm)
sttbl,vfont_c2 , font_mm
表右上の組織名文字のフォントサイズ(mm)
sttbl,htfrm , font_mm
時刻枠の幅(mm)
sttbl,hcell , mm
名前枠の幅(mm)
sttbl,vcell , mm
表枠1行の高さ(mm)
sttbl,scap1 , caption
表のキャプション(タイトル)
sttbl,scap2 , division_name
組織名など(表右上に表示)
sttbl,sfhdr , header
PDF/HTMLファイル名ヘッダ
sttbl,sfont , font_name
フォント名
《その他の設定》
color_sample_url , title , url
色見本のWebページの題名とURL
title : サイトの名称
url : URL
《例》color_sample_url,原色大辞典,https://www.colordic.org/
《例》color_sample_url,色見本と配色サイト,https://www.color-sample.com/
《例》color_sample_url,色見本(UIC),https://uic.jp/color/
draw_param,hours , h1 , h2 , mm
時刻の表示範囲と刻みの指定
h1 : 左端時刻(時)
h2 : 右端時刻(時)
mm : 刻み(分)
・刻み(分)は60の約数(割り切る整数)にすること(5,6,10,12,15,20,30 など)
・刻み(分)は勤務時間バーの分解能や図Cの分解能になる
《注》initialize_group_and_member 以降に変更しないこと
《例》draw_param,hours,6,21,15
draw_param,hpsvd , svd
HPower(マンパワー、図C)の表示形式
svd : インデックス番号
0:供給&需要 (Supply and Demand)
1:差分 (Supply - Demand)
・合計マンパワーの割当量(供給)と要求量(需要)の関係
《例》draw_param,hpsvd,0
《基本情報入力》
exit [, filename ]
スクリプト実行を終了する(終了後に作図・表示更新する)
filename : 後続するユーザースクリプトのファイル名
《例》exit
《例》exit,C:\user\data\勤務表\my_script02.kss
《注》filename を指定したときは、この時点で作図更新しない
《注》filename は自身のファイル名を指定しないこと(無限ループになる可能性を回避するため)
initialize_group_and_member [,max_grp [,max_sft [,max_mem [,max_gcmb [,max_hpd [,max_actv ]]]]]]
★グループやメンバーなどの情報格納領域を確保し初期化する
max_grp : グループ数の上限
max_sft : シフト数の上限
max_mem : メンバー数の上限
max_gcmb : グループコンボ数の上限
max_hpd : マンパワー要求区間数の上限
max_actv : 活動項目数の上限
《例》initialize_group_and_member # デフォルト設定値を使う
《例》initialize_group_and_member,100,100,100,20,50,100
《注》上限値を設定する場合は、余裕をもって多めに確保する
group , name [;alias ], color , t-v
★グループ(担当業務)情報
name : [グループ名 ]
alias : [グループ別名 ](半角英数字)
color : [色コード ]
t-v : [時刻vs値 ]
・name と alias の間は半角セミコロン(;)
alias は半角セミコロン(;)ごと省略してもよいが、省略すると group_combo で使えない
半角セミコロン(;)の前後には空白を入れないこと
・t-v は区切り時刻と合計マンパワー要求値を記述
合計マンパワー指数:グループがある時間帯に必要とする[マンパワー指数 ]の合計(合計2.5人分が必要な場合は "2.5" )
《例》group,厨房;KTN,87cefa,<7:00>0.5<10:00>2<12:00>0.5<13:00>2<15:00>1<17:00>0.5<19:15>0
group_combo , expression
グループコンボ (Group Combination) の定義
expression : [グループ別名 ]、+、-、係数で表記
《注》グループコンボ:複数のグループを重み係数をかけて合算(一次結合・線型和)したもの
《例》group_combo,KTN+WNK
《例》group_combo,0.5KTN+0.5WNK
《例》group_combo,ALL
《例》group_combo,ALL-MG
wrkhrs,basic , hour
基本所定労働時間(実働H)を定義
《例》wrkhrs,basic,8.0
wrkhrs,short , hour
短時間勤務とみなす実働Hを定義
《例》wrkhrs,short,6.0
wrkhrs,aplcal , 0_or_1
半日休暇の休暇日数カウント仕様
0:0.5日 1:基本勤務時間セットでの時間比率
wrkhrs,hdayoff , 0_or_1
半日休暇の出退勤時刻の設定仕様
0:基本勤務時間セットの休憩時刻 1:現設定(change_hrs反映)の休憩時刻
shift_type , name , tset
勤務形態を [勤務時間セット ] で定義する
name : [勤務形態名 ](識別記号で、ユニークな(唯一の)文字列であること)
tset : [勤務時間セット ]
・「勤務形態の定義」は必須ではないが、メンバー基本情報の定義を簡略化するために用いる
・day_rotation や member_rotation ではおもに [勤務形態名 ] で設定するため shift_type での定義が必要になる
《例》shift_type,1A, 7:00/8.0H/12:15/60
member , name [;alias ], tset , grp =hp [, address ]
★メンバー基本情報
name : [メンバー名 ]
alias : [メンバー別名 ]
tset : [勤務時間セット ] もしくは [勤務形態名 ]
grp : 所属するグループの[グループ別名 ]
hp : [マンパワー指数 ]
address : [メールアドレス ]
・[メンバー名 ]の先頭に * を付けるとテンポラリーメンバー(一時的なメンバー)
《例》member,戸塚;ttk,7:00/8.0H/12:15/60,KTN=1.0,戸塚さん <totuk869@example.com>
《例》member,*品川;sng,5B,NKT=1.2, shinariver105@example.org
《注》member コマンドでは複数のセグメント(時区間)の複数のグループ設定はできない
activity , id , title , title
活動タイムラインの表題
id :ID(任意の整数の識別子)
title : 活動タイムラインの表題
《注》ID(識別子)は任意の整数で、連番である必要はない
《例》activity,1,title,仕出業務
activity , id , item , name , t1 -t2 , color
活動タイムラインに表示する活動項目
id :ID(任意の整数の識別子)
name : 活動名
t1 : 開始[時刻 ](hh:mm)
t2 : 終了[時刻 ](hh:mm)
color : [色コード ](6桁の16進数(rrggbb))
《例》activity,1,item,仕込,9:00-12:00,9acd32
activity , id , member , name [, name [, name ],....]
指定メンバーの枠Bに表示する活動タイムラインをIDで指定する
id :activity , id , item で定義した ID(識別子)
name : [メンバー名 ] もしくは [メンバー別名 ]
《注》本コマンドで定義されないメンバーは ID = 1 の活動タイムラインが表示される
《例》activity,3,member,大久保,prs
activity , id , date , date [, date [, date ],....]
指定日の枠Aに表示する活動タイムラインをIDで指定する
id :activity , id , item で定義した ID(識別子)
date : [日付 ] もしくは [期間 ] もしくは [曜日 ]
《注》本コマンドで定義されない日は ID = 1 の活動タイムラインが表示される
《注》activity コマンドのうち第2パラメタが date に限り、作成期間が定義される alloc_period 以降に記述すること
《例》activity,2,date,2/26-2/27,Fri,3/13
《期間(毎月)ごとに記述する条件》
alloc_period , day1 , day2
★勤務表を作成する期間(年月日)のメモリ領域を確保する
day1 : 期間の最初の日の[日付 ](年月日)
day2 : 期間の最後の日の[日付 ](年月日)
《例》alloc_period,2019/2/21,2019/3/20
holiday,weekly , dow
広義の所定休日とする曜日(週休)を定める
dow : [曜日 ]
《例》holiday,weekly,Sun
《例》holiday,weekly,土曜日
《注》広義の所定休日=法定休日+狭義の所定休日
holiday , date , name [,flag ]
広義の所定休日とする祝日や事業所の休日を定める
date : 休日とする[日付 ](年月日)
name : 休日の名称
flag : 祝日だが事業所の所定出勤日とする場合に 1
《例》holiday,2019/3/21,春分の日(出勤日),1
《例》holiday,2019/7/15,海の日
《例》holiday,2019/6/20,創立記念日
《注》作成期間外の日は無視するので、とりあえず一年分程度は記述しておく
topic , date , name
勤務表に表示する記念日等を指定(勤務時間には影響しない)
date : [日付 ](年月日)
name : その日の名称
《例》topic,2019/4/10,駅弁の日
remark , num , date , remark
各日に対する備考(特記事項)を定義
num : 備考番号(デフォルトは 1,2,3,4 のいずれか)
date : [日付 ] もしくは [期間 ] もしくは [曜日 ]
remark :備考に格納する文字列
《例》remark,1,all,通常営業
《例》remark,1,3/13-3/14,(予約)営業
《例》remark,2,水,定時退社
《例》remark,3,金,18:00~反省会
《注》備考は table ,,text での %d_r1% などで呼出しできる
remarks_of_day , date , remark1 , remark2 , remark3 , remark4
各日に対する全ての備考(特記事項)を定義
date : [日付 ] もしくは [期間 ] もしくは [曜日 ]
remark1 :備考1の文字列
remark2 :備考2の文字列
remark3 :備考3の文字列
remark4 :備考4の文字列
《例》remarks_of_day,all,通常営業,,,
《例》remarks_of_day,3/13,予約営業,13:00-,石塚様,Aコース
apply_regular_hours,all
★期間の各日に member で定めた基本出勤退勤時刻を適用する
change_hrs , member , day_or_period , time_or_attr [, day_or_period , time_or_attr [,.....]]
個別のメンバーごとに出退勤時刻もしくは勤務日属性(休日、労働日など)を設定・変更する
member : [メンバー名 ] もしくは "all "
day_or_period : [日付 ] もしくは [期間 ] もしくは [曜日 ] もしくは [週 ]
time_or_attr : [勤務形態名 ] もしくは [勤務時間セット ] もしくは 始業[時刻 ]-終業[時刻 ] もしくは [勤務日属性 ]
《例》change_hrs,浜松,2019/2/27,10:00-19:00 # 単独日の始業&終業時刻変更
《例》change_hrs,浜松,2019/3/13-3/14,off # 期間で年次休暇
《例》change_hrs,品川,w1,doff # 第1週を全て休日
《例》change_hrs,品川,水,doff # 毎週水曜日を休日
《例》change_hrs,all,水,doff # 全員毎週水曜日を休日
《例》change_hrs,田町,Mon,7:30- # 毎週月曜日の変更(終業時刻は変更しない)
《例》change_hrs,田町,Tue,8:00 # 毎週火曜日の変更(終業時刻も変更)
《例》change_hrs,田町,水,4B # 毎週水曜日のシフトを変更
《例》change_hrs,田町,木曜,9:00/8H # 毎週木曜日の勤務時間を変更
《例》change_hrs,田町,Friday,off # 毎週金曜日は休暇
《例》change_hrs,戸塚,w0,10:00-19:00 # 第0週の変更
《例》change_hrs,戸塚,w1,9:00-18:00 # 第1週の変更
《例》change_hrs,戸塚,w2,1A,w3,2A,w4,3A # 第2、第3、第4週のシフトを変更
《例》change_hrs,鶴見,土,on # 休日出勤(基本勤務時間セット)
《例》change_hrs,鶴見,土,3A # 休日出勤(勤務時間セット=3A)
《例》change_hrs,鶴見,土,don # 土は通常出勤(基本勤務時間セット)
《例》change_hrs,鶴見,土,don,土,3A # 土は通常出勤(勤務時間セット=3A)
change_hrs_ed , member , period , time_or_attr [, time_or_attr [, time_or_attr , [,.....]]]
change_hrs と同様だが、期間中の全ての日の time_or_attr を個別(each day)に設定する
member : [メンバー名 ] もしくは "all "
period : [日付 ] もしくは [期間 ] もしくは [曜日 ] もしくは [週 ]
time_or_attr : [勤務形態名 ] もしくは [勤務時間セット ] もしくは 始業[時刻 ]-終業[時刻 ] もしくは [勤務日属性 ]
《注》本コマンドはおもにシフトデータ(.csv)のインポートに利用されることを想定している
《注》期間が単独日の場合は change_hrs と同じになる
《注》期間中は休日も含めて全ての日の勤務時間や属性等を指定する必要がある
そのままの状態を維持する日は * を指定する
《例》change_hrs_ed,田端,3/8-3/15,1A,*,*,2A,3A,4A,5A,off
《例》change_hrs_ed,田端,2/21-2/25,1B,2B,*,*,3B
《注》上記の2行は下記のように1行で記述可能(但し期間日数分のパラメタ記載が必要)
《例》change_hrs_ed,田端,3/8-3/15,1A,*,*,2A,3A,4A,5A,off,2/21-2/25,1B,2B,*,*,3B
day_rotation , member , period , origin , apply , interval , duration , s-pattern
メンバーごとにシフトのローテーション
member : [メンバー名 ]
period : ローテーションを適用する[期間 ]
origin : ローテーションの起点
ev : 期間の初日(平日、休日を問わず)
wp : 期間の最初の週日(月~土)
wk : 期間の最初の週日(月~金)
bz : 期間の最初の事業所営業日
xh : 期間の最初の平日
od : 期間の最初の出勤日(休暇を除く)
apply : ロ-テーションの適用日
ev : every days 毎日(休日を含み全ての日、但し休日の出勤にはしない)
wp : weekdays 週日(月~土)
wk : weekdays 週日(月~金)
bz : business days 事業所営業日(一般の休日と事業所休日を除く日)
xh : except holidays(メンバーごとの休日を除く日)
od : on duty 勤務日(メンバーごとの休日と休暇日を除く)
・origin と apply は通常は同じ
・bz と od は既に年休を取得した日のローテーション適用が異なる
interval : ローテーション繰返しの間隔(シフト数)
duration : 1シフトの継続日数
s-pattern : [勤務形態名 ](シフト名)もしくは [勤務日属性 ]をハイフン(-)でつなぐ
《例》day_rotation,鶴見,2019/2/25-3/15,ev,ev,4,1,1A-2A-3A-4B
《例》day_rotation,川崎,2019/2/25-3/15,wk,wk,3,1,2B-3B-4B
《例》day_rotation,大井,2019/2/25-3/15,wk,wk,5,1,4B-5B-off-6A-3A
《注》'ev,ev,7,1' や 'wk,wk,5,1' だと1週間周期になるが曜日は期間初日に依存する
《注》'ev,ev,7,2' や 'wk,wk,5,2' だと2日連続同一シフトで2週間周期になるが、週は7日で奇数のため一週目と二週目では曜日パターンがずれることになる
member_rotation , period , origin , apply , interval , duration , shift , m-pattern
シフトごとにメンバーのローテーション
period : ローテーションを適用する[期間 ]
origin : ローテーションの起点
ev : 期間の初日(平日、休日を問わず)
wp : 期間の最初の週日(月~土)
wk : 期間の最初の週日(月~金)
bz : 期間の最初の営業日
[曜日 ]:日~土 もしくは Sun~Sat
apply : ロ-テーションの適用日
ev : every days 毎日(休日を含み全ての日、但し休日の出勤にはしない)
wp : weekdays 週日(月~土)
wk : weekdays 週日(月~金)
bz : business days 事業所営業日(一般の休日と事業所休日を除く日)
[曜日 ]:日~土 もしくは Sun~Sat
interval : ローテーション繰返しの間隔(シフト数)
duration : 1メンバーの継続日数(数字もしくは "w"(週末まで))
shift : [勤務形態名 ](シフト名)もしくは[勤務日属性 ]
m-pattern : [メンバー名 ]をカンマ(,)でつなぐ
《例》member_rotation,all,wk,wk,6,w,1A,品川,田町,浜松,品川,田町
《例》member_rotation,all,Fri,Fri,5,1,doff,浜松,大森,品川,田町,大森
day_off_relief , condition , memberA , memberB [;mask ] [, memberC [;mask ][, ......]]
休みのときの代替者の指定
condition : 適用条件
any : いかなる場合でも
earlier : memberA の始業時刻がmemberBより早い場合
later : memberA の終業時刻がmemberBより遅い場合
memberA : 休み(休暇取得、個人休日、代休)を取得するひと
memberB : 代替候補者
mask : 引き継ぐ項目
0 : 何も引き継がない
+1 : 始業時刻を引き継ぐ
+2 : 終業時刻を引き継ぐ
+4 : 休憩開始時刻を引き継ぐ
+8 : 休憩時間を引き継ぐ
15 : 全て引き継ぐ(maskを省略)
17(1+16) : 始業時刻を引き継ぐが実働時間は保持(+16)
memberC : memberB が休みの場合の予備候補者
・memberA が休み(休暇取得、個人休日、代休)の場合は、memberB の勤務時間を memberA の勤務時間に変更する
・memberB がもともと休みのときは次候補 memberC に割当てる
《例》day_off_relief,earlier,秋葉,上野;7
《例》day_off_relief,earlier,秋葉,上野,赤羽
change_group , member , period , group
指定期間だけ所属グループを変更
member : [メンバー名 ]
period : [期間 ]
group : [グループ名 ] もしくは [グループ別名 ] もしくは [時刻vsグループ ]
・group が [時刻vsグループ ] の場合は、1日の勤務時間を複数のセグメント(時区間)に分けて、それぞれのセグメントで異なるグループを定義する
《例》change_group,浜松,2019/3/1-3/5,盛付
《例》change_group,戸塚,2019/2/21,SRV
《例》change_group,浜松,all,AGB<12:30>焼方<15:00>煮方
《例》change_group,浜松,2/22,盛付<11:00>煮方<12:30>揚場<15:00>雑用
《注》[グループ名 ]と<[時刻 ]>の間にはスペースを入れないこと
change_color , member , period , color
指定期間だけ勤務時間バーの表示色を変更
member : [メンバー名 ]
period : [期間 ]
color : [色コード ] もしくは [グループ名 ]
《注》複数セグメントでも全て同じ色に変更
《例》change_color,浜松,2019/3/7-3/11,f4a460 # sandybrown
《例》change_color,浜松,2019/3/7-3/11,営業 # 他グループの色コードを適用
【機能の活用例】
change_hrs による休暇等のメール申請
翌月の勤務予定を作成時期にメンバー(従業員)から休暇取得や勤務時間変更等の予定をメールにより申告してもらい、その際に change_hrs の書式に従って発信メール本文に記載してもらえば、勤務担当者は change_hrs の部分をスクリプトファイルにコピー&貼付けて手間を省く
メールによる勤務予定の相互確認
作成した翌月の勤務予定表を【メール送信依頼機能】でメンバー(従業員)に送信し、確認してもらい、変更・修正が必要な場合は返信メール本文に前項の change_hrs の書式で回答してもらう (ワークフローシステムを導入していない小規模事業所での古くからのeメール活用例)
day_rotation と member_rotation
シフト勤務での予定が規則的に振り分けられる場合に利用する。 個別メンバーごとにシフトを規則的に振分ける場合には day_rotation を用い、 シフトごとにメンバーを規則的に振分ける場合には member_rotation を用いる。
(個別メンバーごとにシフトを規則的でなく振分ける場合は change_hrs_ed を用いる)
シフト表から member_rotation データ作成
各シフトへの配置人員数が決まっており、週ごとに各シフトへメンバーを配置するようなシフト表を表計算シートで
シフト 0週 1週 2週 3週 4週
1A 品川 田町 浜松 品川 田町
2A 田町 品川 田町 浜松 品川
3A 浜松 浜松 品川 田町 浜松
大宮 浦和 川口 浦和 大宮
(※シフト1A,2Aには1名ずつ、3Aには2名を配置する例)
のように作成されている場合、シートの左側にセルを挿入する
# w0 w1 w2 w3 w4
member_rotation all wk wk 6 w 1A 品川 田町 浜松 品川 田町
member_rotation all wk wk 6 w 2A 田町 品川 田町 浜松 品川
member_rotation all wk wk 6 w 3A 浜松 浜松 品川 田町 浜松
member_rotation all wk wk 6 w 3A 大宮 浦和 川口 浦和 大宮
これを表計算ソフトから .csv 形式でファイル出力すれば、下記のスクリプトコマンドが得られる
# , , , , , , ,w0 ,w1 ,w2 ,w3 ,w4
member_rotation,all,wk,wk,6,w,1A,品川,田町,浜松,品川,田町
member_rotation,all,wk,wk,6,w,2A,田町,品川,田町,浜松,品川
member_rotation,all,wk,wk,6,w,3A,浜松,浜松,品川,田町,浜松
member_rotation,all,wk,wk,6,w,3A,大宮,浦和,川口,浦和,大宮
(表計算ソフトからクリップボードへは一般にタブ区切りでコピーされるので、テキストエディタで編集中のスクリプトに貼付けてからテキストエディタの置換機能でタブをカンマに一括置換する方法もある)
シフト表から change_hrs_ed データ作成
個別メンバーの日毎のシフトが一行に記載されている表計算シートを .csv 形式でファイル出力すれば、change_hrs_ed のデータへの変換は容易
【本プログラムのインストール】
インストールアーカイブ knmsc_10??.zip をダブルクリック
展開して現れる knmsc フォルダを「適当なフォルダ」にフォルダごとコピー
格納先である「適当なフォルダ」はユーザーがその権限で管理できるフォルダであればどこでも構わないが、セキュリティソフトが動作している環境では、除外フォルダ等にプログラムを格納する必要がある
("C:\Program Files (x86)" や "C:\Program Files" への格納は管理者権限が必要になることがあるので本プログラムでは避けたほうが良いと思われますが、もしどうしてもこれらのフォルダに格納する場合は、knmsc.exe は32bitアプリケーションですので、64bit Windows の場合は "C:\Program Files (x86)" の下に格納することになります)
コピー先の knmsc フォルダの中に下記のファイルがあることを確認
・knmsc.exe (実行ファイル)
・_knmsc_ini.kss (システムスクリプトのサンプル)
・shidashiya.png (架空の事業所のロゴマーク画像ファイル)
・knmsc_help.htm (このソフトウェア取扱説明書)
・knmsc_tutor.htm (スタートガイド)
・img フォルダ (スタートガイド等の複数の画像ファイルを格納)
・readme.txt (はじめにお読みください)
・LICENSE_oss.txt (利用オープンソースソフトウェアのライセンス条項)
ユーザーデータを格納するフォルダを作成
ユーザーデータを格納するフォルダは任意だが、複数のユーザーがログインするPCの場合には、例えば C:\Users\(ユーザー名)\Documents などの下に作成する
ユーザーフォルダに knmsc.exe のショートカットを作成
システムスクリプトのサンプルファイル _knmsc_ini.kss を knmsc_ini.kss にファイル名変更もしくはコピーする
(既に使用している knmsc_ini.kss を改版時に上書きしてしまわないように、アーカイブのサンプルスクリプトのファイル名の先頭をアンダースコアにしている。_knmsc_ini.kss のままでもシステムスクリプトとして起動できる。)
使用しているPC環境に合わせてシステムスクリプト knmsc_ini.kss をテキストエディタで編集する
確認する行は下記など
(下記の例ではユーザーフォルダを "C:\user\data\勤務表" とした場合)
folder,user,C:\user\data\勤務表 # ユーザーフォルダ
folder,distribution,C:\user\data\勤務表\dstr_files # 勤務表配付用ファイルフォルダ
folder,log,C:\user\data\勤務表\log_chg # ログファイル格納フォルダ
font,general,(フォント名) # PCに搭載されているフォントを指定
【本プログラムのアップデート(更新)】
アーカイブファイル(knmsc_10??.zip)を展開してknmscフォルダを現在のknmscフォルダに上書きコピー
_knmsc_ini.kss (システムスクリプトのサンプル)は上書きされるが、ユーザーが編集したシステムスクリプト knmsc_ini.kss は上書きされないので、knmsc_ini.kss が作成されている環境では今までの設定が維持される
【本プログラムのアンインストール】
アンインストールは、プログラムフォルダに格納した knmsc フォルダをまるごと削除する
knmsc はレジストリは使っていません
C:\Users\(user_name)\AppData\Roaming フォルダなども使っていません
不要であれば knmsc 用に作成したユーザーフォルダも削除する
【本プログラムの起動方法】
下記のいずれかで起動する
プログラムフォルダの knmsc.exe のアイコン、もしくはユーザーフォルダの knmsc.exe のショートカットアイコンをクリック
この場合は、最初にシステムスクリプト knmsc_ini.kss が実行される
knmsc_ini.kss が見つからない場合は、サンプル _knmsc_ini.kss が実行される
ユーザースクリプトのファイルをドラッグして、ユーザーフォルダの knmsc.exe のショートカットアイコンにドロップする
この場合は、プログラム起動後最初に、ドロップしたユーザースクリプトが実行される
起動時に knmsc_ini.kss は実行されないので、ドロップするユーザースクリプトに初期設定を記述する必要がある
スクリプトファイルの拡張子(.kss)が knmsc.exe に「関連付け」されている場合には、スクリプトファイルをクリックするだけで knmsc.exe が起動する。
アプリと拡張子の関連付けの変更は下記のいずれかで行う
Windows10/11 で「アプリと拡張子の関連付けの変更」は一般には 設定 > アプリ > 既定のアプリ から行う
エクスプローラー(Windows Explorer)で .kss を選択し、右クリック⇒プロパティ⇒プログラム:の右側の「変更」⇒ knmsc.exe を選択
"knmsc.exe" や拡張子 ".kss" はシステムから認識されていない可能性が高く前者のリストに現れていない場合は後者の方法で行う
【Windows 11 のセキュリティ機能により起動しない場合の対処方法】
knmsc.exe はデジタル署名(コード署名)を導入しておりません。
Windows 11 バージョン 22H2 以降には「スマート アプリ コントロール (Smart App Control:SAC)」が搭載されており、とくに バージョン 26H2 以降において、このセキュリティ機能によりデジタル署名の無い knmsc.exe の起動がブロックされることがあります。
その場合は、お使いのPC環境に合わせて以下のいずれかをお試しください。
対処方法A
プログラムフォルダの knmsc.exe ファイルを右クリックして「プロパティ」を開き、全般タブの一番下に「許可する」や「ブロックの解除」というチェックボックスがあれば、そこにチェックを入れて「OK」をクリック
対処方法B(方法Aでのチェックボックスが無い場合や方法Aでも起動できない場合)
Windows の「設定」>「プライバシーとセキュリティ」>「Windows セキュリティ」>「アプリとブラウザーの制御」>「スマート アプリ コントロールの設定」>「オフ」または「評価」に変更
※対処方法Bは他の .exe や .dll などにも適用されるため、セキュリティ機能を低下させる可能性があるため十分に注意してお試しください。
(参考:Microsoft のページ )
【本プログラムとともに使用すると便利な外部ソフト】
本プログラムと一緒に使用すると便利なソフト(主にフリーソフト)の例を下表に記す。
とくにテキストエディタはこれらのほかにも良質なフリーソフト(無料ソフト=フリーウェア)が多くあると思われる。
これらのソフトを使用しなくても本プログラム(knmsc )を使うことはできるが、下表のソフトなどで knmsc の機能を拡張できる。また、これらのソフトのインストールパスをスクリプトに記載することにより、knmsc から起動できるものもある。
下表は本プログラムの作者が使用した経験のあるソフトだけを記載している。
あくまで使用経験が多少あるだけで、安全性や信頼性を担保しているわけではなく、下表のソフトをインストールや使用したことによるいかなる損害も本プログラムの作者は一切の責任を負わない。
テキスト エディタ テキストファイル(文字情報のみのファイル)を作成、編集、保存するためのソフトウェア
窓の杜
Vector
freesoft
Mery 高DPIに対応している(Ver 2.6.7以降) Unicode対応(デフォルト設定での文字コードは UTF-8)なのでEmojiなども出力できてしまう
(knmsc スクリプト(.kss)は UTF-8 のファイルでも読込や保存はできるが、
Shift_JIS(CP932)非対応文字(Emojiなど)には対応できない)
knmsc のスクリプト編集に使うためには下記の設定をしておいたほうがよい
・ツール(T)>オプション(O)>基本>既定のエンコード(L): で「UTF-8(BOM無し)⇒日本語(シフトJIS)」
・ツール(T)>オプション(O)>記号 で「□タブ表示(T)」と「□全角空白表示(D)」にもチェックして有効にする
※管理者権限でインストールしないとユーザーフォルダ以下(Roaming等)にインストールされてしまうので注意
NoEditor 読込や書込ではUnicode(UTF-8など)等にも対応しているが、編集時に Shift_JIS(CP932) に変換される
サクラエディタ Unicode版とANSI版があるが、Shift_JIS使用に限定するならANSI版のほうがよい
メモ帳 (Notepad) Windows 1.0 から標準で付属しているテキストエディタ 機能が少なく使い易くもないがインストール不要で使える 半角スペース、全角スペース、タブを表示では判別できないため注意
仮想 プリンタ 紙に印刷するかわりにPDFファイルを出力
CubePDF PDFのファイルサイズもコンパクト Microsoft .NET Framework 3.5 以降を必要とする(Win7以降では標準搭載されている)
エラー「DLL 'gsdll32' を読み込めません」 に対しては Visual C++ 再頒布可能パッケージ のインストールが必要
※PDF出力先はメニュー実行後に現れる CubePDF のウィンドウで指定する
出力先のパスを指定後に [変換] を行う前に [設定を保存] を行えば指定したフォルダを次回の出力先に設定できる
PrimoPDF™ 4.1 2009年にリリースされ実績がある 出力PDFのバージョンは古い(v1.3-1.5)が、PDFのファイルサイズが比較的小さい Microsoft .NET Framework 2.0 を必要とする (Windows10/8.1 ではデフォルトで 2.0 は有効になっていないので有効化が必要)
Microsoft Print to PDF Windows10/11に標準搭載 ページ数が少ないと、出力するPDFファイルサイズが他に比べ各段に大きい
CUPS-PDF Linux での仮想プリンター(knmsc を Linux/Wine 環境で動作させるときに使用)
PDF ツール 複数のページのPDFファイルを1ページごとに分割するために使用
PDFtk™ (the pdf toolkit™) コマンドラインに対応しているknmsc から分割するファイルや生成するファイルを指定して起動できる
ベクター 画像編集 EMF(拡張メタファイル)を SVG (Scalable Vector Graphics) に変換するために用いる
Inkscape フル版 でもポータブル版(Inkscape Portable )でもインストール容量は大きい(630~680MB)
【Linux / Wine での使用】
Wine ("WIN dows E mulator" もしくは "W ine I s N ot an E mulator")は Linux 上で Windows用のアプリケーション(.exe)をネイティブのように動作させるための互換レイヤー(ソフトウェア)です。(Wikipedia での解説 )
knmsc.exe も一部制約はありますが Wine で動作させることが可能です。
なお、下記の動作確認等は Ubuntu 26.04 LTS / Wine 11.0 で行っております。
(とくに パッケージマネージャー(パッケージ管理システム)に関するコマンドは Linux distribution によって異なります。)
Wine のインストール
Ubuntu の標準リポジトリから "sudo apt install wine" でもインストールできますが、Wine 9.0 以降は更新されていないようなので、WineHQ公式リポジトリから最新版(現時点で Wine 11.0)をインストールしてください。
WineHQ版のインストールは
金子邦彦研究室のウェブサイト を参照してください。
Wine インストール後に Wine で動かすアプリでのメニューなどに日本語を表示するための基本フォントの設定を実施してください
sudo apt install winetricks
winetricks cjkfonts corefonts
winetricks cjkfonts は日本語フォントのフォントマッピングを行ってるらしいです。
winetricks corefonts は Windows で用いられる主な欧文フォント(Arial, Times New Roman, Courier New, Tahoma など)の Wine へのインストールを行っているらしいです。
knmsc.exe から利用するLinuxリソース等のインストール
代替のフリーの TrueType フォントのインストール
mkdir -p ~/.local/share/fonts
fc-cache -fv
fc-list :lang=ja | grep -i "noto sans jp"
fc-list :lang=ja | grep -i klee
Wine でフォントマッピングされている 'Noto Sans CJK JP' は OpenType フォントであり、プリンタ出力等で GDI では対応できない場合があるため、TrueType フォントの 'Noto Sans JP' をインストールするものです。
Klee One のフォント名は "Klee One" もしくは "クレー One" です。knmsc の初期設定スクリプト(knmsc_ini.kss)の "font,general," などに指定するフォント名は knmsc.exe の [表示]⇒[フォント変更] で確認してください。
PDF出力の仮想プリンタ(CUPS-PDF)のインストール
sudo apt update
sudo apt install printer-driver-cups-pdf
生成されたPDFファイルは "~/PDF/" フォルダに保存されます。
Wine で knmsc.exe を起動
インストールアーカイブ knmsc_10??.zip を解凍して knmsc フォルダを「適当なフォルダ」にフォルダごとコピーします。
端末(ターミナル)を開き、knmsc.exe のある上記フォルダに移動し、
wine knmsc.exe
で起動できますが、下記のシェルスクリプト(.sh)で起動したほうが便利です。
#!/bin/bash
export WINEDEBUG=-all
export NO_AT_BRIDGE=1
wine ./knmsc.exe 2>/dev/null
デスクトップにシェルスクリプトのショートカットを作成すれば、デスクトップから起動できます。
Wine で knmsc.exe を使うときの留意事項
Wine 環境での C:\ は Linux での "~/.wine/drive_c/" 即ち "/home/<username>/.wine/drive_c/" フォルダにマッピングされます。ここで ".wine" は先頭文字がドット(.)の「隠しフォルダ」です。 一方、Z:\ は Linux のルートディレクトリ(/)にマッピングされています。
増設ドライブや外付けドライブにアクセスする場合は、Linux側でドライブをマウントしてから、Z:\ 経由で指定するか、ターミナルで winecfg を起動して任意(C: Z: 以外)のドライブレターを割り当てるなどを行います。
knmsc.exe はHTMLや画像(.png)ファイルを出力しますが、Ubuntuなどの一部のLinux環境での標準のブラウザ(Snap版Firefoxなど)ではセキュリティ制限により「隠しフォルダ」内の画像が表示されない現象が発生します。
標準ブラウザで正常に表示させるためには出力先を
Z:\ フォルダ以下の「隠しフォルダ」以外のフォルダに指定するか、
Linux側のブラウザを APT版の Firefox Debian Package などに変更する
などを行ってください。
初期設定スクリプト(knmsc_ini.kss)にデフォルトとして "font,general,Meiryo UI" が設定されている場合、もし "Meiryo UI" が Linux のインストール済みフォント一覧に無くても代替フォント "Noto Sans CJK JP" ("Source Han Sans") が適用されてディスプレイには表示されます。しかし、"Noto Sans CJK JP" は TrueTypeフォントではなく OpenTypeフォントなので、(互換性の問題で)PDF出力などでは表示されないことがあります。よって、"font,general," などにはインストール済みのTrueTypeフォント("Noto Sans JP" や "Klee One" など)を指定してください。
インストール済みTrueTypeフォントは [表示]⇒[フォント変更] で確認できます。
LibreOffice等に拡張メタファイル(EMF)を貼り付ける場合、ファイル経由での「画像の挿入」はできますが、クリップボード経由の貼り付けはできません。
メール送信依頼機能のうち 簡易MAPI(Simple Messaging API) は使えません。
スクリプトファイルを外部エディタで編集する場合、デフォルトでは Wine の notepad.exe が用いられますが、Wine の notepad.exe は文字コード判定で UTF-8 を Shift_JIS に誤判定することが多いので、Windows で使い慣れた汎用テキストエディタアプリ(.exe)をインストールしてWineで起動できるようにしたほうがよいです。
【本プログラムで利用しているオープンソースソフトウェア】
knmsc.exe のビルドでは、下記のオープンソースソフトウェアの一部をソースコードに埋め込む、もしくはスタティックライブラリを(静的)リンクしている。
名称 ライセンス形式 開発者 knmscでの用途 利用形態
libguess (Gauche) BSD-3-Clause permissive Shiro Kawai SJIS/UTF-8判定 ソースコード部分埋込み
libpng libpng License permissive Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson, et al. PNG出力 スタティックライブラリ
zlib zlib License permissive Jean-loup Gailly Mark Adler libpng で使用 スタティックライブラリ
・個々のライセンス条項は LICENSE_oss.txt を参照のこと
・libpng/zlib の使用について :knmsc は画像ファイルの読み書き(ロゴ画像の読込や図A、BなどのPNG画像出力)にデフォルトで GDI+(WindowsXP以降に標準搭載DLL)を使っているが、PNG画像出力に関し GDI+ は圧縮レベルを指定できないなどで出力するPNGのファイルサイズが大きくなるため、PNG画像出力(エンコード)に libpng の使用を選択できるようにしている(コマンド "image,png,lib,libpng")。なお libpng を指定してもPNG画像の読込(デコード)は GDI+ を使う。
【本プログラムについて】
本プログラムは Win32 API を用いた 32bit(x86)アプリケーションです。
Microsoft Visual Studio Community 2022 に添付されている
・rc.exe (Microsoft ® Windows ® Resource Compiler)
・cl.exe (Microsoft ® C/C++ Optimizing Compiler & Incremental Linker)
・mt.exe (Microsoft ® Manifest Tool)
・Windows SDK のヘッダファイル(.h)とインポートライブラリ(.lib)
を使ってビルドしております。MFC や .NET Framework などのクラスライブラリ/フレームワークは使っておりません。
Win32 API のほかには画像ファイルの読み書きに GDI+ を使っているだけなので Windows デスクトップ環境で動作するはずです。
(当然ですが、64bit Windows でも WOW64 で問題なく動作します。)
なお、実際の動作確認は Windows 11 (64bit) と Linux の Ubuntu 26.04 - Wine 11.0 だけで、それ以外の環境では行っておりません。
※注:上記での「Windows デスクトップアプリケーション」とは UWP (Universal Windows Platform) に対比させた呼称で「Windows PC 向けの従来型アプリケーション」のことを指します。Notebook PC に対する Desktop PC用という意味ではありません。もちろん Notebook PC でも動作します。
※注:本プログラムは文字列に関してANSI版の関数を用いております。よって、パス名(フォルダ名+ファイル名)やスクリプト中でいわゆるShift_JIS非対応文字(Unicode にはあるが JIS X 0208 などには無い文字で、具体的には「鷗」「𠮟」「蔣」「圳」「你」「䅣」など)は使えません。(似た文字の「鴎」「叱」「蒋」などは文字集合 JIS X 0208 にあるので ANSI(日本では Shift_JIS, CP932) で使えます。)
【著作権および免責事項】
本ソフトウェアおよび本取扱説明書、添付のスクリプトに関する著作権はすべて作者(KinJ)が保有します。
本ソフトウェアを使用した上で生じた如何なる損害(一次的、二次的に関わらず)について作者(KinJ)は一切の責任を負いません。
本ソフトウェアを使用する際に発生する、本ソフトウェアのインストールアーカイブに同梱(バンドル)されていないバイナリコード(.dll や .exe)の使用に関するライセンス等については利用者が確認し、利用者の責任において使用されるものとします。
本ソフトウェアの保守を行う義務を作者(KinJ)は負いません。
利用者からのバグ報告、要望、質問等について、受信、確認、検討、回答する義務を作者(KinJ)は負いません。
本ソフトウェアはフリーウェアです。個人・法人に限らず利用者は無料で使用することができます。
本ソフトウェアの配布や導入による対価で利益を得る行為(商用利用)は禁じます。 但し、利用者自身の業務(勤務表等の作成)に使用することは構いません。
製品名などは(商標マーク・登録商標マークの有無にかかわらず)各社の商標・登録商標です。
この文書の内容およびソフトウェアの意匠、仕様は、予告なしに変更されることがあります。
【更新履歴】
1.06 (2026/10/06)
・Linux の Wine 環境でも安定に動作できるように一部のコードの改変およびリファクタリングを行った
1.05 (2026/01/08)
・出勤時刻予定表作成機能を追加した
・半日休暇(前半休、後半休)機能を追加した
・メインメニュー「表示」にサブメニュー「フォント変更」を追加
・バグ修正
1.04 (2020/05/16)
・スクリプトウィザード機能を追加した
・スクリプトウィザードに関する説明書「スタートガイド」のファイル "knmsc_tutor.htm" をインストールアーカイブに追加
・メインウィンドウ上部のボタンの項目の並びと選択をカスタマイズ可能とした
・それに伴いデフォルトの表示ボタンを変更した
・カスタマイズのスクリプトコマンド place_button の追加
・メインウィンドウ上部のメニューを変更
・「スクリプト」のサブメニュー並びを変更し、「ウィザード」「ファイル保存」追加
・「図出力」にサブメニュー「スクリーンショット」追加
・「表示」にサブメニュー「表示拡縮」「始終独立⇒連動」追加
・「ヘルプ」にサブメニュー「スタートガイド(入門書)」追加
1.03 (2020/01/20)
・スクリプトエディタ機能を追加した
・スクリプトエディタ機能の追加に伴い、メインウィンドウ上部のボタンの表示を変更した
「Script実行」⇒「Script読込」
「Script再実行」⇒「Script再読込」
同様に、上記のボタンのツールチップ表記やメニューの表示も変更した
・スクリプトコマンドに show_script_editor と debug_mode を追加した
1.02 (2019/12/22)
・PNG画像出力(エンコード)に従来のGDI+のほかに libpng/zlib を使用できるようにした
これに伴い、コマンド "image,png,lib" と "image,png,cmp" を追加
・"implicit,year" コマンド省略時に、起動当日の西暦年ではなく、alloc_period で指定した作成期間の西暦年を適用するようにした
・group コマンドで第3パラメタ [時刻vs値] が指定されていないときに発生していた異常終了を回避するようにした
・勤務時間バーのマウスドラッグによる始業・終業時刻変更で前日もしくは翌日の勤務分が当日に反映された部分の変更も可能にした
1.01 (2019/11/01)
・複数の活動タイムラインを定義できるようにした
(activity コマンドに ID パラメタを設定し、member と date パラメタを追加)
・閉店時間が無いなど24時間操業に対応できるように、前日の 24:00~47:59 の勤務分が当日の 0:00~23:59、翌日の 0:00~23:59 の勤務分が当日の 24:00~47:59 にも勤務時間バー表示されるようにした
・メニューに「表示時刻範囲の変更」を追加
・勤務時間バーが表示時刻範囲を超えて表示されるバグを修正
・スクリプトファイルの文字コード(Shift_JIS or UTF-8)判別に libguess (3-Clause BSD License) のソースコードの一部を改変して利用した
1.00 (2019/10/02)
・初版公開
【メールアドレス】 knmsc.kinj@gmail.com
Copyright © 2019-2026 Kinjo-no-Jijii (KinJ).