2022年10月31日月曜日

コードサイニング取得

前回と同じく、日本で最安値を謡うリセーラからオーダしたのですが、

Sectigoのサポートから

「Code Signing Certificateは法人番号がないと処理できません。

OV Individual Code Signing Certificateを新規でご注文ください。」

と言われ取得することが出来ませんでした。

DunsNumberと開業開始届けを再送するように、とのリセーラからの指示でしたが、同じ結果でした。

期限も迫っているので、仕方なく海外リセーラから、ダイレクトで購入しました。

Code Signing Certificates at Only $49.99 Per Year (signmycode.com)

このリセーラは、3年契約しかないのですが、1年あたり$50と超格安です。しかし、日本でこれで取得した人は見当たりません。人柱になるつもりでトライしました。

comodo code signing individualを選択しても、結局sectigo code signing individualとなりました。(sectigoがcomodoを買収したと、日本のリセーラは言っていました。)

1)秘密鍵とCSRの生成
以下の手順に同じです。秘密鍵と秘密鍵のパスワードは、絶対に失くさないようにします。


2)証明書ファイルの変換

これも基本的に上のサイトで説明してあるとおりです。

結果的には、ここで取得できました。否定はしませんがお勧めも出来ません。やり取りは、当然全て英語です。トラブルが2回以上あり、その度にCHATを試みたものの無反応でした。仕方なくメールサポートをお願いしこちらは、全て1日内に適切なレスポンスがありました。しかし、本来はサポートなく出来なければいけないと思います。

<所感>
E-mailサポートは適切なレスポンスでした。しかしサポートなしでは、取得できなかったと思います。結果的に4日で取得出来ましたが英語に自信がなければ避けた方がよいと思います。

<まとめ>
デジタル著名の期限はどのような業者を使っても最長でも3年で必ず更新を行う必要があります。

その点において、ストア版では、更新は不要になり(内部で勝手にやっているのか分かりませんが)デジタル著名期限管理や更新による貴重な時間を奪われずに済むというメリットがあります。

また、ストア版では、Private Usersを設定出来、一般ユーザとは別にProductをPrivate Usersだけに見せることが出来ます。これを用いて、例えば無償ユーザを設定したり、あるいはサブスクリプション以外のマイクロソフト以外の有償プラン(例えば、銀行振り込みにすれば15%も取られることもなくなる)も設定することも可能になります。

2022年10月30日日曜日

デジタル著名を更新しました

161A以前のデジタル著名の有効期限が2022年11月6日になっています。

162Aで更新しました。

新しい著名では、下のように有効期限が2025年になっています。

(著名自体は、2025年まで有効ですが、全ユーザ様、今後ストアアプリに移行を予定しています。移行スケジュールに関しては別途アナウンスします。)

なお、新しいデジタル著名に伴い、拡張子紐付けを忘れてしまうようです。
以下のようにして、任意の.nurse3ファイルを右クリックして、再度紐付けを行います。
プログラムから開く→別なプログラムを選択




2022年10月27日木曜日

プロジェクト作成サービスを始めました

 どうにか、スケジュールナースを用いて、シフト勤務が少しでもよいものにならないかと思っていました。私の視点は、管理者が楽になる、ということよりもシフト勤務をする側に重みを置いています。

例えば、シフト作成において、一人のスタッフの作成に関わる時間は、ものの10分かもしれないのですが、遅番の後に早番だったり、明けの後に2日後にまた入りだったりするシフトが一つでも入っていたりとすると、そのスタッフにとっては、大変な負担になってしまいます。つまり、管理者の負担10分よりも、スタッフにとっては、その何十倍も負担となることがあるのです。管理者は、スタッフ数倍の責任を負っている訳ですから、管理者の作るシフトが非常に大きな意味を持つことになります。

つまり、勤務シフトの質を改善することは、職場を良くすること、より健康的な社会に貢献すること、に直結しています。大げさではなく本当にそう思います。

勤務表を作るのは楽になりますよ、というコマーシャルはあまりしません。シフトの質、平等性に気を配ることに重点を置いて欲しいという思いの方がどちらかと言えば強いです。

私の長女は、介護現場で実際に働いていますが、上司は未だにEXCELによる手作業で組んでいると聞いています。シフト表を見るとその上司が、自分Firstで組んでいるか、あるいは、ご自分も含めて平等性を担保して作られているかは透けて見えるものです。

スケジュールナースを使いこなせれば、こんな勤務はしなくてもよいのに..急な勤務変更があっても、手作業で四苦八苦することなくすぐに答えが出せるので、そんなに文句を言われることはないだろう(3年間病欠なし働いてきたが要精検で休みを申し出て)...そのような思いで送り出す日が続いています。(元々は、看護師長をやっていた妻の為に作ったソフト、つまり管理者の為のソフトだったのですが、現在は、子を見守る親の思いから、スタッフ側からの視点でも見てしまいます。)

また、仕様と一緒に勤務表を見させて頂くことが多いのですが、管理者の方も夜勤を行っているにも関わらず、スタッフの平等性に物凄く気を使っておられる看護師長もお見かけします。ご自分も含めての平等を真摯に考えていらっしゃる仕様を頂くこともあり頭が下がる思いをすることもあります。

さすれば、ソフトでどうこうという問題ではなく、管理者の質に起因するところは大であり、ソフトで全てが解決するものではありません。しかし、シフト勤務の質に関しては、どのような管理者であったとしても、確実に改善出来ます。

PCに疎くても問題ないです。分からなければ、その場で電話サポートさせて頂きますので、障害にはなりません。

<まとめ>

世界最高峰レベルのNSP商用ソルバが、

職場のルールにフィットした状態で、

最も低い価格で利用できるようになる、

恐らくは、日本で唯一のサービスとなります。

既存ソフトでは、自動化が実現できなかった人のための資料は、こちらです。


2022年10月26日水曜日

特許証が届かない

 新たに出願した特許が、菅原システムズ4件目の特許査定となりました。

ところが、特許証が届きません。代わりに、納付書補充指令書というのが特許庁より送られてきました。

<特許査定と特許登録の違い>

特許証は、特許登録になった証として郵送されてきます。特許登録には、特許査定後、特許料を1-3年分所定の形式で納めて初めて登録になります。この納付書は、査定から原則一ヶ月以内に提出する必要があります。

<納付書の間違い>

特記事項に軽減理由を書いたのですが、それが軽減1/2の法律を呼び出していたことが間違いでした。本来は軽減1/3に該当するのでその計算で納付したところ、特許料が足りない、という指摘の通りになってしまいました。また、その他にも記載事項の不備を指摘されました。単純にどこかのをコピペして出したのが誤りのもとでした。

<対処>

補充指定書には、提出書式、差額分等載っているので、それに沿って、特許料納付書(設定補充)を提出しました。

<特許庁の対応>

その都度、特許庁の担当部署にTELし、状況を確認したので、なぜ来ないか・なぜ足りないかは、教えて頂きました。(理由が分かれば、安心できます。)

特許料納付が9月9日で、補充指令が着いたのが10月26日です。本来であれば、9月中の特許証受領が、11月中になってしまうので、2ヶ月近く遅くなってしまいました。

<菅原システムズの特許査定率>

ちなみに菅原システムズの特許査定率は100%です。弁理士等の代理人のいない本人出願率は、およそ7%です。で、特許査定率は、およそ70%(実際には、本人出願による査定率は一桁小さいと思われます)、今回の特許は、一回で特許査定となりましたが、一回で特許査定となる確率は14%程度なので、本人出願で4回連続特許査定を得る確率*一回で特許査定となる確率14%で、0.000081%となります。大変珍しいことだと思います。





2022年10月25日火曜日

アプリ認定キットは不要

 ストア提出前に、アプリ認定キットで確認することになっていたはずですが、

WIN32については、このページによれば、提出せず単にマルウェアチェックだけでよいようです。

その昔は、デスクトップブリッジアプリは、別に申請窓口があり個別に審査があったようです。それが通ったらさらに申請、みたいな流れっだったと思います。OSのバージョンアップが進み、WIN32の有無に関わらず、単に申請パッケージを投げるだけでよい、ということのようです。

ということは、例えば大昔のMFCを使ったアプリでも、通るのではないかと思います。私の20年前に作ったMFCアプリは、10年以上更新していませんが未だに需要があります。(こちらは、沢山のユーザにダウンロードされているので、デジタル著名されてはいませんが、ウィルスまがいのメッセージは一切出てきません。)そういったアプリ群も参入するようになれば.. 

ところで、ストア化する目的は、

1)*デジタル著名が無償で(恐らくは半永久的に)得られる。(現在は、2年で数万円という有償デジタル署名を使っています。もうすぐその期限も切れるので、別に準備中です。)

 *マイナンバーで著名する方法もあるようです

2)MSIX公式インストーラを使用しているにも関わらず、OS/インストーラの仕様変更によるトラブルに悩まされることがなくなる、と期待されます。

3)サブスクリプションの導入により気軽に一ヶ月単位で使って頂ける。(一ヶ月@480、一年@4780を予定しています。)

そういった事情により、現ライセンスドユーザおよび、開発に貢献された方々もストア版に移行をお願いすることになります。(勿論ストア版でも無償で使用できるようにします。)



2022年10月24日月曜日

Privacy Policyの作成

ストアのアプリ申請で必要になるので作成しました。

 Privacy Policy | What is Schedule NurseⅢ (nurse-scheduling-software.com)

スケジュールナース自身は、何の情報も取得していないので、本来は不要なはずなのですが、Win32では必須との情報もあり用意しました。



2022年10月23日日曜日

Microsoft開発者再登録

 数年前に登録だけしておいたのですが、パートナサイトのダッシュボードに入ってもそれらしいメニューはなく、用をなさないのに気付きました。仕方なく再登録しました。再登録すると、メニューが出てきて、アプリの提出等が出来るようになりました。円安でも登録料が上がっていなかったのは有難いです。

これからストアアプリの開発を行います。しかし、WIN32ベースのサブスクリプションというは、ドキュメント類を見ても良く分かりません。参考になるサンプル類もGithubに転がってなくて、開発は難航が予想されます。ストア版は年内リリースを諦めました。

IOSの方は、GUIの体裁に至るまで厳しい制約がありますが、ストアアプリの方は、そのような制約はありません。また、1万円を超える開発者の毎年の登録料も必要ありません。またMicrosoftに収めるのは15%です。IOSは、30%ですから、お得感はあります。





2022年10月22日土曜日

KISSATのポート問題

KISSATのWINDOWSポートで誤りがあり修正しています。

__builtin_clzllは、64ビット命令ですが、これが古いCPU(Haswell以前)だとサポートされていないようでしたので、修正しています。

kissat_leading_zeroes_of_word (word x)

{

  if (!x)

    return sizeof (word) * 8;

  if (sizeof(word) == sizeof(unsigned long long))

    return __builtin_clzll (x);//should be modified for pre-Haswell CPUs.

}

2022年10月20日木曜日

Heuristics, SAT Solver,Mathematical Solver

 高精度かつ高速に最適化問題を解くには、各々得意な領域があり、問題に応じて使い分ける必要があります。高精度の極致が、厳密解です。

SATSolverは、言わば、2値に対する厳密解です。SATとUNSAT、これしかありません。ですので、ソフト制約がない、ハード制約のみの制約については、問題の性質とよく符合します。



ところが、一般には最適化問題というのは、SATとUNSATつまり0/1のデジタルではなく、0~1間のアナログ的なものです。0/1問題ならば、人工的に作られた問題(コンピュータで作成された問題、恣意的に極端に解スペースが小さい問題)でないなら、探索スペースに対して解スペースの比率もそれなりに大きいことが期待できると思います。そういう問題に対してSATは、強いと考えられます。

これに対して一般の最適化問題というのは、探索スペースに対して、最適解スペースは、狭いと考えられます。たとえば、通常のNSP問題でも、探索組み合わせ空間が、宇宙に存在する全原子数にを超えることは、珍しいことではありません。事実、SchedulingBenchmark Instance15における最適解というのは、1個ないしXX個程度だと思います。(証明した人はいませんが、実際にソルバを数日廻してもないのでそのような感触です。)



地球上にある一個の砂粒を探し出すよりも、遥かに難しい問題、であることが理解できると思います。このような解スペース/探索スペース比が非常に小さい問題については、SAT的手法よりも数理的ソルバの方が有利である、ということは言えると思います。

どのレベルの最適化を狙うからは、ユーザ毎に違うと思います。問題と求める最適化レベルにより、選択するソルバも異なる、ということは言えます。多くの場合Algorithm1が実務的です。厳密界もしくは、下界を知りたい場合は、Algrithm3が有用です。SC3で搭載しているアルゴリズム群は次の通りです。

Algorithm1 汎用、SAT、原因解析用

Algorithm2 厳密解用 MIPソルバ。Highs

Algorithm3 厳密解用、数理ソルバ+SAT

Algorithm4 厳密解用、数理ソルバ




ヒューリスティクスは、搭載していません。正確には、SAT内および数理ソルバ内に、多くのヒューリスティクスアルゴリズムは搭載されていますが、NSP用としてのそれは搭載していません。問題規模が小さい内は、MIPソルバの独断上で、それ以上ではSAT、そしてAlgorithm3の順で有効です。これは、SATソルバ内では、学習機構によるフィードバックにより探索空間を狭める手法を取っていることが、ヒューリスティクスからの改善になります。ところがある程度規模以上に大きくなると、とてもフィードバックでどうなる規模でもなくなってきます。そうしたところでヒューリスティクスの出番、と考えられますが、未だその必要性に出会ったことはありません。

まとめると、NSPに関して、下のような得意領域グラフになります。インスタンス規模が小さいとき、精度が高いのは、MIPソルバです。SATソルバは、精度は劣るものの、とても広い問題領域に対応します。汎用的と言ってよいでしょう。AL3は、ある意味でMIPソルバとSATソルバのHybridと言ってよいと思います。MIPソルバよりも大きなインスタンスが可能で、精度も高いのですが、全ての問題に対応できるという訳ではありません。

なので、まずはAL1で、しっかりプロジェクト構築することをお勧めします。AL1は、原因解析機構もあるので、プロジェクト開発に向いています。


なお、NSPに関して、これまで4件の特許査定を取得しています。国内はもとより国際的にもこれだけNSP Solverの知的所有権を有している機関はないのではないか?と思います。(アプリの類や、MIPソルバの使い方の面で有している企業は沢山あるかと思いますが、ソルバそのものの特許を保持している企業は、日本では極端に少ないです。問題の核心に挑む企業が少ないことが杞憂に終わればよいのですが、最近の中国企業の旺盛(COPTやMindOpt)を見るにつけ、技術的にも遅れを取るようになった、と思うのは私だけでしょうか?)


解ヘッダフォーマット変更

行フォーマットを161Aで一部変更しました。 

default行[0]の高さを可変にしています。defaultは、30です。ウィンドゥ設定で、これを100にしてみます。


設定を反映させるには、プロジェクトを再ロードか、再起動する必要があります。

このウィンドゥ設定のページ情報は、ユーザPC上のレジストリに保存しています。(ただし、アンインストールすると綺麗に忘れます。)プロジェクトには依存しません。ユーザPCに固有の状態保存になります。

という具合に、ツールチップに出さなくとも、何の制約かが大体分かると思います。
行の個別高さは固定として変えることは出来ないように変更しました。


変更をファイルに保存

 161Aから、GUIで変更があって終了ボタンを押すと、下のようなダイアログが出ます。


これは、ユーザ様からのご要望を実現したものです。変更の定義は、

1)GUIでの設定ボタンを押した

2)予定変更があった

3)求解

等の操作があったとき、変更があったと解釈されます。プロジェクトを保存するとリセットされます。


Appinstallerが動かない

 また、MSの仕様変更に起因すると思われるインストール問題が発生しました。

症状は、最新版・旧版の全てにおいてインストールが出来ないというものです。現在インストール済みのSC3には影響がないので、必要がなければ当面Updateしないことをお勧めします。

今までxx.appinstaler というファイルを配っていたのですが、それでは、突然にインストール出来なくなってしまいました。MSのストアであれば問題ないのでしょうが、ストア以外から配布しようとする者に対して嫌がらせとしか思えません。

appinstallerは、Wrapperであり、その中身のファイルは別にあります。対策として、中身を直接にダウンロードしてもらうことにしました。xxx.msibundleというファイルです。こちらはデジタル著名されています。デジタル著名は、有償のサービスを利用しており、期限があります。最初は、デジタル著名の期限問題を疑ったのですが、期限まで、まだ若干残って折り問題がありません。が、期限を越す前に、新しい版にする必要があるのですが、そちらは、現在、準備中です。



2022年10月12日水曜日

Algorithm1の改善

 Algorithm1の根源的な改善は前述の通り失敗しました。

が、部分的には改善できるところがあるので、適用してみました。10月Endにリリース予定が改善後の結果になります。


上表がその結果になります。大体のインスタンスは、同じか少し悪化です。が、feasible解が出てくる時間が長いもの、例えば、数十秒以上かかるものについては、改善しています。一旦feasible解が出たならば、後は同じです。違いは、feasible解までの時間にあります。殆どの実務インスタンスは、2-3秒以内にfeasible解が出てくるので、ユーザ上の体感は、変化がないと思います。

が、例えば、instance21のような超巨大インスタンスでは、現状1時間廻しても解が得られないものもあります。改善後では、10分程度に短縮しています。

feasible解が出てくるまでの時間とは、下で、Algorithm1 Solving Process Started...後の最初の o が出てくる時間になります。さらに巨大なinstance23(改善後)では、なんと2時間近く経ってようやく解が出てきます。





2022年10月11日火曜日

Pair Constraints Domain Propagation

 ペア制約には二つあります。Inhibit とImplicationです。今、ペア禁止制約で、初期に片方が予定等によりハードFixしている場合を考えます。Inhibitの場合、

assert(!(A&B));ですから

assert(!A|!B);となり、

今AがFixしている状態を考えると

if (!A) then !A|!B becomes to be satisfactory regardless of the state B.

else !B must be True;

となります。特に、BがORオペレータだったりすると、A=Trueの場合;

assert(!B)=assert(!(B0|B1|B2...))=assert(!B0& !B1&B2...);であるので全BスタッフがFalseであることを強いられます。

Aは、初期からFIXしているので、Aの状態によっては、Bの状態をFIXさせる必要があります。Implication(A→B)も同様に考えることが出来ます。

このように、片方がFIXしている場合、自動的に満足する、あるいは、もう片方が満足することを強いられることが起こります。これがDomain Propagationです。

<Branching Domain Propagation>

初期だけではなく、Branchingによっても、同様の事は起こります。新しいBranching Nodeが発生する都度に、それによるDomain Propagationが発生し再度計算しなおす必要があります。Domain Propagationは、MIPソルバのBranchingでも活用されています。特に、infeasibleを検出するのがlinear solverは、苦手なので(というよりも線形ソルバと離散領域の本質的な違いに起因する)、その場面で効果がある模様です。

Hybrid Branching (zib.de)

<Domain Propagationの実装>

上記は、簡単な例でしたが、一般には、<=等の不等式の制約も入ってきて一般化は複雑です。

面倒なことは全てSAT Solverに任せ、Solveで済ませてしまおうというのが私の発想です。Domain Propagationは、SAT SolverのUnit Propagationです。なのでUnit PropagationによりFixしている項を取り出せれば十分であり、SAT Solver自体はBlack Boxとして扱えます。








が強いられることになります。これがDomain Propagationです。ペア制約があると、各スタッフ間は、


2022年10月6日木曜日

ペア禁止の実装の詳細

 ペアで、A,Bが禁止のとき

!(A&B);(1)

が、実装の中身になります。これをOR表現すると

!A+!B >=1;(2)

となります。もしくは、A+B<=1;(3)

です。ただし、A,Bは、Singleが上での条件で、Singleでない場合もあります。ORとANDです。AB共にAND集合の場合は、(2)式を拡張出来、

!A1+!A2+... !B1+!B2+...>=1;(4)

とすることが出来ます。この式の意味するところは、(1)式を満足させるには、独りのスタッフがそのシフトを満足しなければ十分である、ということです。

残念ながらOR集合が一つでも入った場合のペア禁止は、線形式で書くことが出来ません。AND/OR オペレータを用いる必要があり(4)のような簡単な式には出来ません。

が、実使用上の多くの場合は、(3)式が使えます。なので、線形ソルバが得意な形とすることが出来ます。現在のこのような最適化は行っていませんが、適用すれば、性能向上する可能性があります。


2022年10月2日日曜日

翻訳校正作業

 その道のプロに翻訳をお願いしていたものが上がってきました。翻訳をお願いする前に、用語集や、自分なりの訳文を添付していましたが、やはりプロの仕事は違うな、という印象です。Nativeのチェックも入っているとのことでしたが、チェックを行っています。一言で翻訳と言っても、レベルがあり例えば、スケジュールナースのマニュアル類の、割といい加減なものから、最高度の品質が要求されるものまであります。この辺は、スケジューリングソルバが、アマチュアが作ったものから、スケジュールナースのように、その道のプロが心血を注ぎ込んで作り込んだ世界トップ性能を持つものまであるのと似た状況です。ユーザから見ると、一見ではその価値が分かりませんので、見栄えや知名度、広告の文言に頼って判断せざるを得ないというところも一緒です。しかし、見る人が見て使い込むと、その違いは歴然とします。

今回のチェック作業は、以下の手順で行っています。

1)翻訳物をDEEPLで日本語化

2)1)を元日本語と比較。相違部をチェック。DEEPLの訳文の問題か英語訳文の問題かを見極める。英語訳文である場合、用語集の問題か、自分の訳文(そのまま採用されている場合もあり)の問題か、翻訳ミスかを判断する。→修正

3)Grammarlyを通す

Grammarlyの採点は、80点程度なのですが、専門用語の塊であり、致し方ないところが多分にあります。それでも細かいところの指摘は参考になります。結果的には、添付した用語集の間違いと、自分の訳文のミスが大半ですが、Typoや誤訳も僅かにあります。チェックに数日かかる見込みです。