プロジェクト

全般

プロフィール

Wiki » 履歴 » リビジョン 17

リビジョン 16 (みぞ @mizo0203, 2018/06/16 13:46) → リビジョン 17/33 (みぞ @mizo0203, 2018/06/24 15:51)

# Wiki 

 ## 開発環境 

 * 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 

 ## 開発ツール 

 * 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 
     * チャット 

 ## 利用サービス 

 * 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 

 ## 開発フロー 

 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 サーバーはJSONを処理できれば、何でも使用できる 

 * Google App Engine for Python の無料枠では Python 2.7 しか動かせない 
     *  
 * ただし、 Python 3 系に Porting できる実装で行う 

 ## 設計資料 

 [[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 | 
 |:----------:|:-----------:|:------------:| 
 | Apache Commons IO | Apache 2.0 | https://commons.apache.org/proper/commons-io/ | 

 ### 利用目的 

 * Apache Commons IO 
     * IOUtils: InputStream/OutputStream と String の相互変換