LoginSignup
2
2

More than 3 years have passed since last update.

(現在改訂中)設定ファイルの設計 (格助詞「で」を参考)  その1 設計思想

Last updated at Posted at 2018-07-03

汎用的な設定ファイルの設計

目的

カスタム設定、カスタムコードをなるべく減らすための設定ファイルの設計。
具体的には、
プログラムの実行のときに、意味的に「藤沢図書館で、借りている本と予約本を」とパラメータを書くだけで、必要な情報がとってこれるようにする。この藤沢図書館の部分を、神奈川県立図書館に変更するだけで、プログラムが同じ動きをしてくれるようにする。図書館のよる違いはできるだけ設定情報で吸収して、プログラム部分は簡単にするのが目標。実行環境は、jupyter です。

実装のコンセプト 

  • プログラム
    XXX(名詞(noun)) で、YYY(動詞(verb))する。

  • 設定ファイルの最初の階層
    名詞(noun)、動詞(verb)、共通(common) 全体(global)
    (例)鎌倉図書館で、借りた本を調べる。
    ds.do("鎌倉図書館","借りた本")

設定ファイルの構造(json から Yamlにしました。)

トップレベル

{"nouns":{},"verbs":{},"commons":{},"global":{}}

nouns 以下 名詞 ( noun )

"nouns": {"鎌倉図書館":{項目(items)},
    "藤沢図書館":{項目(items)}
  • "鎌倉図書館" が名詞(noun) で、{}には、項目(items)が設定されています。

実際の例

        "鎌倉図書館": {
            "auth": {
                "form": {
                    "name": "usercheck"
                },
                "id": {
                    "name": "usercardno"
                },
                "logout": {
                    "js": "OPWUSERLOGOUT(1)"
                },
                "password": {
                    "name": "userpasswd"
                },
                "submit": {
                    "name": "Login"
                },
                "url": "https://lib.city.kamakura.kanagawa.jp/opw/OPW/OPWUSERCONF.CSP"
            },
            "id": "idxxx",
            "lend": {
                "url": "https://lib.city.kamakura.kanagawa.jp/opw/OPW/OPWUSERINFO.CSP#ContentLend"
            },
            "password": "passxxx",
            "reserve": {
                "url": "https://lib.city.kamakura.kanagawa.jp/opw/OPW/OPWUSERINFO.CSP#ContentRsv"
            }
        }

verbs 以下 動詞 ( verb )

  • 実行するプログラム(関数)の順番と、項目を記述します。
  • 名詞( noun ) にない項目があると補完します。
    "verbs": {
        "test": {"common":"test"},
        "借りた本": {
            "do": [
                "login",
                "get_url,lend,url",
                "sleep,5",
                "get_url,reserve,url",
                "sleep,5",
                "logout"
            ]
        }
    }

do の構造

  • do は、リストで、実行する関数名を指定する。
  • 関数は、リストの順番に実行される
  • do の要素は、カンマ区切りの文字列で、関数名,引数,...の構造になっている。
  • (例) 関数 get_url の引数として、[lend,url]が渡される。
  • sleep,5 も同様に、5 が渡され、5秒間、実行が停止される。
  • do は、名詞(noun) に記述することもできる。そのときは、名詞(noun)にかかれた do が優先する

common の適用

  • 項目(items)の中に、common があったら適用する。上記の事例では、動詞(verb) test にある。 "common":"test"
  • 名詞(noun),動詞(verb)のあとで、適用される。

global の適用

  • 何も設定しなくて良いです。
  • 名詞(noun),動詞(verb),commons の後で適用。

設定ファイルの設計 (格助詞「で」を参考) プログラム編に続く

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2