2017年10月26日木曜日

GitBucketを使ってみる(準備編)

社内でソース管理の相談をされたので、Gitを提案してみようと思う。
コマンドラインを使うような人はいないため、管理システムとしてGitBucketを使うことにした。
採用の理由は以下の2点。情シス的には楽なのが一番。
 ・環境構築が簡単(WindowsクライアントにJREをインストールしてwarファイルを実行すれば使える)
 ・バックアップが楽(フォルダ丸ごとコピーでいい)

【GitBucketとは】
たけぞうさんが開発されているGitHubクローン。
GitHub

【とりあえず動かす】
1.JREをインストール
2.gitbucket.warをダウンロードして適当なフォルダにコピー
3.同じフォルダに以下の内容のバッチファイルを作成して実行
java -jar gitbucket.war
4.ブラウザで「http://ホスト名:8080」にアクセス
5.id:root / Pass:root でログイン
 ※3はサービス化することもできる(参考1参考2

【サービス化する】
サービス化には(有)軟式さんのsexeを使う。(窓の杜
1.sexeをダウンロード
2.sexeを実行してサービスに設定
 ファイル:java
 起動時オプション:-jar c:\gitbucket.war ← 絶対パスで指定

【ポートを変える】
すでにポート8080が使われている場合、ポートの変更が必要。
引数でポートを指定することができる。
sexeの起動時オプションを変更することで対応。
 起動時オプション:-jar c:\gitbucket.war --port=8181

【複数のGitBucketを起動する場合】
部署のしがらみなんかで、1台のマシンで2つのGitBucketを動かしたい場合の手順。
管理情報の場所は環境変数GITBUCKET_HOMEで設定できるが、あくまで設定は1つのみ。
なので、起動時に環境変数を変えることで対応してみる。
ポイントはsetlocalで環境変数をローカル化するところ。
1.sexeを実行して部署AAAのサービスを設定
 ファイル:c:\windows\system32\cmd.exe
 起動時オプション:/c "@setlocal&SET GITBUCKET_HOME=C:\gitbucket\settings\AAA&C:\Program Files\Java\jre1.8.0_151\bin\java.exe -jar C:\\gitbucket.war --port=8181&@endlocal"
2.sexeを実行して部署BBBのサービスを設定
 ファイル:c:\windows\system32\cmd.exe
 起動時オプション:/c "@setlocal&SET GITBUCKET_HOME=C:\gitbucket\settings\BBB&C:\Program Files\Java\jre1.8.0_151\bin\java.exe -jar C:\\gitbucket.war --port=8182&@endlocal"


2017年10月12日木曜日

Kii Cloud SDKをTypescript(Angular2+)で使う手順

Kii Cloud SDKをTypescriptで使えるようにするための手順。
Angular2+でOnsenUIを使うまでが終わっている前提で進めます。
ライブラリのバージョンは以下の通り。
"kii-cloud-sdk": "^2.4.11",
"@types/kii-cloud-sdk": "^2.4.35",

1.Kii Cloud SDKを導入
以下のコマンドを実行。
npm install --save kii-cloud-sdk

2.TypeScriptの型定義を導入
以下のコマンドを実行。
npm install --save @types/kii-cloud-sdk

3.Webpackの定義を修正 VSCodeで型定義が読めているが、実行すると以下のエラーが発生。
ERROR in C:/kii-test/src/app/app.component.ts (19,7): Cannot find name 'Kii'.
WebpackがNodeのライブラリを見てるため発生するらしいので、Webpackの定義を変更して対応。
参考:Angular build cannot resolve '../package' and 'child_process'

ただし標準だとスケルトンとやらで隠れているので、以下のコマンドを実行してプロジェクト個別のファイルとして取り出す。
ng eject
参考:Angular/TypeScriptプロジェクトのコンパイルの仕組み

プロジェクトルートに"webpack.config.js"ができるので、以下の記述を追加。
externals: {
    'xhr2': 'XMLHttpRequest',
    'xmlhttprequest': 'XMLHttpRequest',
    'node-fetch': 'fetch',
    'text-encoding': 'TextEncoder',
    'urlutils': 'URL',
    'webcrypto': 'crypto'
}

4.Typescript型定義修正
Typescriptのコンパイルエラーになるので"node_modules/@types/kii-cloud-sdk/index.d.ts"を修正。
先頭に以下の行を追加する。
export = KiiCloud;
export as namespace KiiCloud;

5.kii-cloud-sdk.jsのソースを修正 "node_module/kii-cloud-sdk/KiiSDK.js"の最後の方のコードを修正。
// Following code was generated by build.sh for running on Node.js
(function() {
var b = ((typeof module) !== "undefined") && (module !== null);
if (b && module.exports) {
  /*
  module.exports = {
    exportedClasses: ['ForTest', 'Kii', 'KiiACL', 'KiiACLEntry', 'KiiACLWithToken', 'KiiAnalytics', 'KiiAnonymousUser', 'KiiAnyAuthenticatedUser', 'KiiAppAdminContext', 'KiiBucket', 'KiiBucketWithToken', 'KiiClause', 'KiiEncryptedBucket', 'KiiEncryptedBucketWithToken', 'KiiErrorParser', 'KiiGeoPoint', 'KiiGroup', 'KiiGroupWithToken', 'KiiObject', 'KiiObjectWithToken', 'KiiPushInstallation', 'KiiPushInstallationWithToken', 'KiiPushSubscription', 'KiiPushSubscriptionWithToken', 'KiiQuery', 'KiiSCNFacebook', 'KiiSCNGoogle', 'KiiSCNQQ', 'KiiSCNRenRen', 'KiiSCNTwitter', 'KiiSDKClientInfo', 'KiiServerCodeEntry', 'KiiServerCodeExecResult', 'KiiSocialConnect', 'KiiSocialConnectNetwork', 'KiiThing', 'KiiThingContext', 'KiiThingQuery', 'KiiThingQueryResult', 'KiiThingWithToken', 'KiiTopic', 'KiiPushMessageBuilder', 'KiiTopicWithToken', 'KiiUser', 'KiiUserBuilder', 'KiiUserWithToken', 'KiiSocialNetworkName', 'KiiSite', 'KiiServerCodeEnvironmentVersion', '_KiiHttpRequestType', 'KiiACLAction', 'KiiAnalyticsSite', 'InvalidDisplayNameException', 'InvalidPasswordException', 'InvalidUsernameException', 'InvalidUserIdentifierException', 'InvalidEmailException', 'InvalidPhoneNumberException', 'InvalidLocalPhoneNumberException', 'InvalidCountryException', 'InvalidURIException', 'InvalidACLAction', 'InvalidACLSubject', 'InvalidACLGrant', 'InvalidLimitException', 'InvalidArgumentException', 'IllegalStateException', 'ArithmeticException', 'UnsupportedOperationException'],
    create: function() {
      return ctor.call(this);
    }
  };*/
  XMLHttpRequest = this.XMLHttpRequest;
  module.exports = ctor.call(this);
} else {
  ctor();
}
})();

6.コードにKiiのソースを追加
以下のような感じで使えるようになる。
import { Component } from '@angular/core';
import * as KiiCloud from 'kii-cloud-sdk';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title: string;
  id: string;
  password: string;
  result: string;

  constructor() {

    this.title = 'Kii Test';
      this.id = null;
      this.password = null;
      this.result = null;
      console.log(KiiCloud.KiiSite);
      console.log(KiiCloud.KiiSite.JP);
      this.result = KiiCloud.KiiSite.JP.toString();
  }

Angular2+でOnsenUIを使うまで

Angular2+でプロジェクトを作り、OnsenUIを使うまでの手順。
Node.JSはインストール済みの前提。

1.angular-cliをインストール
以下のコマンドを実行。
npm install -g @angular/cli


2.angularプロジェクトを作成
以下のコマンドを実行。
ng new my-app
cd my-app

3.OnsenUIを導入
以下のコマンドを実行。
npm install onsenui ngx-onsenui --save

4.OnsenModuleのインポート
"src\app\app.module.ts"にモジュールをインポートする記述を追加。
import { OnsenModule } from 'ngx-onsenui';

imports: [
   BrowserModule,
   OnsenModule,
],

5.CUSTOM_ELEMENTS_SCHEMA 読み込み
"src\app\app.module.ts"に"ons-" タグを書いても警告が出なくなる記述を追加
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

  schemas: [
      CUSTOM_ELEMENTS_SCHEMA,
  ],

6.CSSファイル読み込み
".angular-cli.json"にcss読み込みのコードを追記。
      "styles": [
        "../node_modules/onsenui/css/onsenui.css",
        "../node_modules/onsenui/css/onsen-css-components.css",
        "styles.css"
      ],

7.適当に編集して実行 以下のコマンドを実行。
ng serve --open


【参考】
AngularJS QuickStart
OnsenUI Angular 2+