Edited at

TypeScript対応のDocBase APIクライアントをnpmで公開してみた

More than 1 year has passed since last update.


はじめに

現職の会社では、ナレッジ共有サービスとしてDocBaseを使っています。そのサービスにてAPIが公開されているのを知りました。

そこに投稿した情報を取得、加工できたら色々できるかもなぁと思っていました。

あと、現職の開発で、Node.jsを使っていて、npmにお世話になっており、自分もnpmにライブラリを公開してみたいと常々思っていました。そこで今回、TypeScript対応のDocBase APIライブラリをnpmで公開してみることにしました。


npmとは

一言でいうとNode.js用のパッケージマネージャーです。

Javaでいうところのmavenです。

開発者がnpmレジストリにパッケージを公開することができ、また、そのパッケージを他開発者に提供することができます。

公式サイト

https://docs.npmjs.com/getting-started/what-is-npm


DocBaseとは

株式会社クレイが開発している社内ナレッジ共有サービスです。

社内ナレッジ共有サービスとしては、個人的に好きな感じです。

以下、公式サイトからの引用です。

http://kray.jp/news/docbase_beta/

以下特徴があると書かれています。


DocBaseには情報共有を活発にする5つの特徴があります。

すごく簡単にメモを投稿できる

小さなメモをチーム全員で育て、情報の価値を上げられる

複数のメモをまとめて情報を見やすく整理・保存できる

組織の枠を越えて情報を共有できる

強固な暗号化



TypeScriptとは

マイクロソフトによって開発されている言語です。

Google社内の標準言語としても採用されており、大注目の言語です。

「Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017」

Node.jsは「型情報が無い」という問題があるのですが(ってかスクリプト言語全般です)、その問題を解決して、スクリプト言語とコンパイル言語の良いとこ取りした言語です。。個人的には、非常にオススメです。


npm公開手順

今回npmに公開したTypeScript対応のDocBaseAPIライブラリです。

このライブラリの公開手順を紹介します。

https://www.npmjs.com/package/node-docbase-sdk


【手順1】GitHubにソースコードをアップする

今回、DocBaseAPIライブラリをNode.js + TypeScriptで実装してみました。

GitHubリポジトリはこちら

まずは、以下、3つのAPIを実装しました。

残りは、後日、実装したいと思います。

DocBase APIドキュメントはこちら


【手順2】npm ユーザの作成


npmのサイトにユーザー登録(signup)する

https://www.npmjs.com/signup


npmユーザを設定する

この際にUsername、Password、Emailは、npmで登録したものと一致させることに注意してください。


npmユーザの設定

$ npm set init.author.name "Yuki Fujisawa"

$ npm set init.author.email "g031y148yuki@gmail.com"
$ npm set init.author.url "https://github.com/YukiFujisawa"
$ cat ~/.npmrc
init.author.name=Yuki Fujisawa
init.author.email=g031y148yuki@gmail.com
init.author.url=https://github.com/YukiFujisawa
$ npm adduser
Username: yfujisawa
Password:
Email: (this IS public) g031y148yuki@gmail.com
Logged in as yfujisawa on https://registry.npmjs.org/.


【手順3】gemnasium を使って依存関係パッケージ追跡のバッジを作成する

追跡することで、依存パッケージに新しいバージョンがリリースされたり、セキュリティ上の理由などによりアップデートが必要になった時に通知してくれるようになるらしいです。

gemnasium

GitHubアカウントでログインし、リポジトリの登録が完了すると以下のような画面が表示されます。

スクリーンショット 2017-12-22 16.55.15.png

設定画面から以下のURLを取得して、READMEに貼り付けます。

[![Dependency Status](https://beta.gemnasium.com/badges/github.com/YukiFujisawa/node-docbase-sdk.svg)](https://beta.gemnasium.com/projects/github.com/YukiFujisawa/node-docbase-sdk)

すると、以下のように表示されます

スクリーンショット 2017-12-22 17.02.01.png


【手順4】ライセンスファイルの作成

GitHubリポジトリのトップディレクトリにLICENSE.txtファイルを追加し、ライセンス文を明記する。記載内容は以下のページの文章の<year><copyright holders> の部分を自分の情報に書き換えます。

The MIT License (MIT) - Open Source Initiative

https://opensource.org/licenses/MIT


【手順5】バージョン番号を付与して、npmに公開する

$ git tag -a v0.0.1 -m "Add Create, Read Posts API."

$ git push origin tags/v0.0.1
$ npm publish ./
+ node-docbase-sdk@0.0.1


【手順6】npmでの公開状態を確認する

無事に公開されていることが確認できました。

スクリーンショット 2017-12-22 17.31.56.png

https://www.npmjs.com/package/node-docbase-sdk


【手順7】バージョンアップする

バグがあった場合に修正してリリース番号をあげる手順も記載しておきます。

npm version patchを実行すると、自動的にタグの作成とpackage.jsonの更新をやってくれます。

$ npm version patch

$ git push origin tags/<version>
$ npm publish ./

マイナーバージョンは、npm version minor

メジャーバージョンは、npm version major

を使えばpatchと同様に自動でやってくれます。


【手順8】公開したnode-docbase-sdkを利用してみる

node-docbase-sdkの使い方がわかるようにサンプルプロジェクト作成しました。

こちらを参考に、今回のライブラリを利用していただければ幸いです。

https://github.com/YukiFujisawa/node-docbase-sdk-sample


【参考記事】



【TypeScriptのTips】

TypeScriptのTips的なものを以下、記載しておきます。


TypeScriptを使えるようにするには

package.jsontsconfig.jsonに以下、設定を追加します。


  • package.json

  "dependencies": {

"typescript": "^2.6.2",
}


  • tsconfig.json

{

"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"outDir": "./lib",
"allowJs": true,
"sourceMap": true,
"rootDirs": [
"./src"
]
},
"include": [
"./src/**/*"
]
}


tslintを使えるようにするには

package.jsontslint.jsonに以下、設定を追加します。


  • package.json

  "devDependencies": {

"tslint": "^5.8.0",
"tslint-config-airbnb": "^5.3.0"
}


  • tslint.json

{

"extends": [
"tslint-config-airbnb"
],
"rules": {
"ter-arrow-parens": false,
"max-line-length": [true, 120]
}
}

以下、コマンドで実行します。

$ tslint 'src/**/*.ts'


TypeScriptの型情報を出力するには

tsconfig.jsoncompilerOptions->declarationをtrueにします。


  • tsconfig.json

{

"compilerOptions": {
"declaration": true,
}
}