Wiki » 履歴 » リビジョン 30
リビジョン 29 (近藤 @tu21themouth, 2018/09/15 15:33) → リビジョン 30/33 (近藤 @tu21themouth, 2018/09/15 15:35)
# Wiki {{toc}} ## 開発環境 * Python 開発環境のセットアップ * https://cloud.google.com/python/setup * エディタのインストール * https://code.visualstudio.com * Python extension for Visual Studio Code のインストール * https://marketplace.visualstudio.com/items?itemName=ms-python.python * Flake8 のインストール * `$ pip3 install flake8` * Visual Studio Code の設定 * [![vs_code_setting.png](http://redmine.mizo0203.com/attachments/thumbnail/63)](http://redmine.mizo0203.com/attachments/63/VS%20Code%20Setting.png) ## デプロイコマンド `$ gcloud app deploy --version 1 --project api-project-379224789817` ## 開発ツール * GitHub * コード管理 * プライベートリポジトリ(後にパブリックへ変更する) * 中央集権型ワークフローを採用する * 中央リポジトリ: https://github.com/mizo0203/google-home-shiritori * Redmine * 要件管理 * 不具合管理 * Wiki * Markdown + PlantUML * ドキュメント作成 * 設計図作成 * ※ Word・Excel・PowerPoint は使用禁止 * CircleCI - 1 コンテナ無料(プライベートリポジトリでも可、ビルド時間 25h/month まで) * ビルドチェック * 静的解析 * Lint - コードの構文チェック * FindBugs - 実行時に起こり得るバグの検出 * 【できれば】Programming Tests * 【できれば】Deploy * Slack * チャット * [Unicode Escape Sequence | KWONLINE.ORG](https://www.kwonline.org/u_esc_seq.php) * 日本語と「¥uXXXX」形式のユニコードエスケープを相互変換するツール ## 利用サービス * DialogFlow * [JSONフォーマット](https://dialogflow.com/docs/fulfillment#section-format-of-request-to-the-service) * 参考: * Dialogflow入門 - https://qiita.com/kenz_firespeed/items/0979ceb05e4e3299f313 * > User saysに「明日の福岡を予約」 * 「User says」欄は現在存在しない、「Training phrases」欄に入力する * > 入力内容を元に自動的にEntityが検出されParameterとして設定されました。 * 自動的には検出されないので、単語をクリックして Entity を追加すること * `@sys.date` は「明日の」ではなく「明日」を指定すること * Dialogflowの使い方について - http://hiyo-ac.hatenablog.com/entry/2018/02/25/162729 * ipadic * 形態素解析ツール「ChaSen」に用いられる辞書データ (「ipadic2.7.0」内の「Noun.dic」を利用) * http://chasen.naist.jp/hiki/ChaSen/ * 使い方 * 「Noun.dic」をテキストエディタなどで「UTF8」に変換する(デフォルトは「EUC-JP」) * 「make_json_dict.py」で「dict.json」に変換する * > `$ python `python make_json_dict.py Noun.dic dict.json` * 作成した「dict.json」をプロジェクトのdataディレクトリに配置 ## 開発フロー 1. Redmine にチケットを作成 2. GitHub で各自ブランチを切って Commit & Push * プリフィックス(範囲) + 英語のコミットメッセージ + #チケット番号 + @作業時間 * ```feat(*): hogehoge. fix #999 @1.5h``` :新しい機能 * ```fix(*): hogehoge. fix #999 @1.5h``` :バグフィックス * ```docs(*): hogehoge. fix #999 @1.5h [ci skip]``` :ドキュメントのみ変更(CI は実行しない) * ```style(*): hogehoge. fix #999 @1.5h``` :コードの意味に影響を与えない変更(空白、フォーマット、セミコロンの欠落など) * ```refactor(*): hogehoge. fix #999 @1.5h``` :バグを修正したり、機能を追加したりしないコード変更 * ```perf(*): hogehoge. fix #999 @1.5h``` :パフォーマンスを向上させるコード変更 * ```test(*): hogehoge. fix #999 @1.5h``` :既存のテストの欠落または修正の追加 * ```chore(*): hogehoge. fix #999 @1.5h``` :ビルドプロセスやドキュメント作成などの補助ツールやライブラリの変更 * 参考: [【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita](https://qiita.com/numanomanu/items/45dd285b286a1f7280ed) * 参考: [angular.js/DEVELOPERS.md at master · angular/angular.js](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#type) * 原則 1 Commit 1 チケット * ```fix(*): hogehoge. ref #999 @1h``` :対処未完了で Commit する場合 * ```fix(*): hogehoge. fixs #99 @0.5h #999 @1h``` :例外的に複数チケットを 1 Commit で対処する場合 3. CircleCI でビルドチェック、静的解析、PT 4. みぞ + 1 名の 2 名でコードレビュー & マージ 5. CircleCI でビルドチェック、静的解析、PT、Deploy ## 開発言語 Python 2.7 * Google App Engine for Python の無料枠では Python 2.7 しか動かせない * * ただし、 Python 3 系に Porting できる実装で行う * ```pylint --py3k ./* tests/*``` でチェック可能 * PEP 8に準拠した実装を行う * ```flake8 ./ tests``` でチェック可能 * 単体テストを記述する * ```python -m unittest discover -v tests``` で実行可能 ## 設計資料 [[Design_Documents|設計資料]] ## Google App Engine for Java を利用する開発 サーバーはJSONを処理できれば、何でも使用できる * IntelliJ IDEA Community Edition で環境構築 * https://cloud.google.com/tools/intellij/docs/quickstart-IDEA * https://cloud.google.com/tools/intellij/docs/create-standard ## 利用 OSS ライブラリ | 名前 | License | URL | |:----------:|:-----------:|:------------:| | | | | ### 利用目的 *