{"action":"created","issue":{"url":"https://api.github.com/repos/azu/azu/issues/79","repository_url":"https://api.github.com/repos/azu/azu","labels_url":"https://api.github.com/repos/azu/azu/issues/79/labels{/name}","comments_url":"https://api.github.com/repos/azu/azu/issues/79/comments","events_url":"https://api.github.com/repos/azu/azu/issues/79/events","html_url":"https://github.com/azu/azu/issues/79","id":226919381,"number":79,"title":"辞書の管理する仕組み","user":{"login":"azu","id":19714,"avatar_url":"https://avatars1.githubusercontent.com/u/19714?v=4","gravatar_id":"","url":"https://api.github.com/users/azu","html_url":"https://github.com/azu","followers_url":"https://api.github.com/users/azu/followers","following_url":"https://api.github.com/users/azu/following{/other_user}","gists_url":"https://api.github.com/users/azu/gists{/gist_id}","starred_url":"https://api.github.com/users/azu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azu/subscriptions","organizations_url":"https://api.github.com/users/azu/orgs","repos_url":"https://api.github.com/users/azu/repos","events_url":"https://api.github.com/users/azu/events{/privacy}","received_events_url":"https://api.github.com/users/azu/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2017-05-08T02:17:17Z","updated_at":"2018-02-25T07:00:07Z","closed_at":null,"author_association":"OWNER","body":"https://github.com/azu/prh.yml\r\nhttps://github.com/azu/technical-word-rules\r\nとか辞書を管理する仕組みとツールが欲しい。\r\n\r\n## コンテキスト\r\n\r\n- プロジェクト固有の辞書を持つのは正しい\r\n- ただし毎回プロジェクト固有の辞書に汎用の辞書を追加するのは管理が大変\r\n- 辞書は漢字の開きとか、固有名詞とか大文字小文字の統一があり人の好みがでてしまう\r\n   - そのため汎用性がイマイチ\r\n- 辞書はpublicにおいて、バージョニングして管理したい\r\n\r\n### 事例\r\n\r\n**technical-word-rules**\r\n- https://github.com/azu/technical-word-rules はJSer.infoのやつの辞書として開始した\r\n- APIとして常に最新の辞書を取れるようにしてる(ブラウザで動かす辞書として意識されている\r\n\r\n**prh.yml**\r\n\r\n- https://github.com/azu/prh.yml は漢字の開きとかよくプロジェクトにコピーして使ってるprhの辞書をまとめる目的で作った\r\n- git subtreeでコピーして使うのが目的で作った\r\n- これは https://github.com/github/gitignore を参考にした\r\n\r\n### 求めるもの\r\n\r\n- 大きく分けて2種類\r\n- 何も言わないで全部を取り込んだ形で利用できるもの = オレオレプリセット = technical-word-rules\r\n- 利用者が必要なものだけを選んで利用できるもの = prh.yml\r\n\r\n利用方法は2種類あるのだけど、ソースは一つにしておきたいというのが求める仕組み。\r\n(実際の上の辞書はprh.ymlをソースにしてtechnical-word-rulesが生成されている)\r\n\r\n### 類似研究\r\n\r\n- コーディングルール\r\n- 翻訳メモリ\r\n- Wikiによる辞書\r\n- IME\r\n\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/azu/azu/issues/comments/368288352","html_url":"https://github.com/azu/azu/issues/79#issuecomment-368288352","issue_url":"https://api.github.com/repos/azu/azu/issues/79","id":368288352,"user":{"login":"azu","id":19714,"avatar_url":"https://avatars1.githubusercontent.com/u/19714?v=4","gravatar_id":"","url":"https://api.github.com/users/azu","html_url":"https://github.com/azu","followers_url":"https://api.github.com/users/azu/followers","following_url":"https://api.github.com/users/azu/following{/other_user}","gists_url":"https://api.github.com/users/azu/gists{/gist_id}","starred_url":"https://api.github.com/users/azu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azu/subscriptions","organizations_url":"https://api.github.com/users/azu/orgs","repos_url":"https://api.github.com/users/azu/repos","events_url":"https://api.github.com/users/azu/events{/privacy}","received_events_url":"https://api.github.com/users/azu/received_events","type":"User","site_admin":false},"created_at":"2018-02-25T07:00:07Z","updated_at":"2018-02-25T07:00:07Z","author_association":"OWNER","body":"proofdictの仕組みを元に、もっと一般ユーザーが使える仕組みを作りたい。\r\nデータはGitHubに公開しておくとメリットがある形にすれば、辞書の再利用性が高まる。\r\nGitHubのリポジトリを管理するコストもあるけど、それを超えるメリットを用意すればもっと良くなりそう。\r\n\r\n## 辞書のフォーマット\r\n\r\nprhをベースにしたもの。\r\n通常の辞書のように品詞に特別な意味を持たせる。\r\n`noun`ならマッチ規則が変わる。(これを`tags`にするのかは再度検討が必要そう。カテゴリ?)\r\n\r\n- https://github.com/proofdict/proofdict-tester/blob/41b56eb32caba70b67a61df7966f33563f0a0498/src/TagFilter.ts#L4\r\n\r\n`id`は1ファイル=1辞書をしっかりルール化すれば、必須ではなくなるけど自動生成的には合ったほうがよさそう。\r\n\r\n```yaml\r\n# `id` is unique string\r\nid: 01BQ92YYBEFBXEHH8T8HC8RCRD\r\n# `description` is a short comment\r\ndescription: 'Reference https://www.ecma-international.org/publications/standards/Ecma-262.htm'\r\n# `expected` is expected result\r\n# `$1` ... `$9` reference `patterns`'s capture word\r\n# This is same behavior with RegExp https://github.com/zeeshanu/learn-regex \r\nexpected: ECMAScript $1\r\n# `patterns` are match string or RegExp\r\n# RegExp should be started with `/` and be ended with `/`\r\n# Also, can use `()` for capturing\r\npatterns:\r\n  - /ECMAScript([0-9]+)/i\r\n  - /ECMA Script([0-9]+)/i\r\n# `specs` are test cases\r\n# `specs[n].from` is actual word\r\n# `specs[n].to` is expected word that is replaced result\r\nspecs:\r\n  - from: ECMASCRIPT5\r\n    to: ECMAScript 5\r\n# `tags` are keywords\r\n# Some `tag` means special meaning\r\ntags:\r\n  - noun\r\n  - JavaScript\r\n```\r\n\r\n## データの管理\r\n\r\n- [proofdict](https://github.com/proofdict/proofdict \"proofdict/proofdict: Proofdict source repository.\")をベースにした yaml ベースの 1単語 = 1ファイル\r\n- データはJekyllのcollectionを使ってウェブから見られるようにする  \r\n  - https://jekyllrb.com/docs/datafiles/#example-organizations\r\n  - Jekyllのテーマを作り `_config.yaml` に定型文を入れるだけで動くようにする\r\n  - CIなどの特別な設定もなく https://github.com/azu/mini-jekyll ぐらいのファイルにする\r\n- Jekyllのテンプレートを使い、辞書を1ファイルにまとめたJSONを吐く\r\n  - これをAPIとして利用できるようにする\r\n\r\n## データの更新\r\n\r\n- 専用のエディタ https://proofdict.github.io/editor/ をテーマに組み込む\r\n  - GitHubに対して直接Pushできる\r\n- 専用のアプリ(優先度低め)\r\n  - ローカルにリポジトリに直接更新できる\r\n\r\n## データの使い方\r\n\r\n### [textlint](https://github.com/textlint/textlint \"textlint\") \r\n\r\n[textlint-rule-proofdict](https://github.com/proofdict/textlint-rule-proofdict \"textlint-rule-proofdict\")を使い、JSONを指定したリポジトリからダウンロードとして辞書として使えるようにする\r\n\r\n- ユーザー的にはリポジトリを更新すれば勝手に辞書が更新されるイメージ\r\n\r\nローカルからも指定したディレクトリ(辞書ファイルのあるディレクトリ)を指定すれば、読み込んで利用できるようにする。\r\nこれで、プロジェクトごとにも辞書を持ちやすくする。(更新する手段が少し問題となるので、アプリみたいなものが必要かもしれない)\r\n\r\n### その他\r\n\r\n- 辞書は単なるYAML(単体)\r\n- APIは単なるJSON(集合)\r\n\r\nなので他の用途にも汎用的に使えるようにする"}}
{"actor":{"display_login":"azu"}}