GeekFactory

int128.hatenablog.com

Gradle Swagger Codegen Plugin 1.1.0をリリースした

GradleでSwagger Code Generatorを利用するためのプラグインをリリースしました。 github.com バージョン1.1.0では、自動生成の対象を components オプションで選べるようになりました。下記のビルドスクリプトではモデルクラスとAPIクラスを生成しています…

HubotによるJIRAチケット作成の自動化

チケット駆動開発を行う上で障壁になることの一つに「チケット作成が面倒でだんだんやらなくなる」という課題があります。 Jim Coplien先生は紙の付箋を強く推奨しています*1し、私も分かりやすいアナログの方が好きです。しかし、JIRAにはディスプレイさえ…

docker-gitbucketでExternal DBやPrefixなどを設定する

DockerでGitBucketを立ち上げる時は f99aq8ove/docker-gitbucket というイメージを利用しています。GitBucket最新版への追随が早いので重宝しています。 github.com このたびPRがマージされたので、環境変数でExternal DBやPrefixなどを設定できるようになり…

Multibranch PipelineによるJenkinsとGitBucketの連携

JenkinsのMultibranch Pipelineを利用するとCIで以下ができるようになります。 ビルドの設定を Jenkinsfile に書いてバージョン管理できる。 リポジトリへのpushやPull Requestのマージを契機にジョブを実行できる。 パイプラインでビルドフローを分かりやす…

Jenkins GitHub PluginをGitBucketで利用する

JenkinsとGitBucketの連携にGitHub Pluginが使えるか調べてみました。GitBucket APIはGitHubと互換性があるので、理論上はGitHub Pluginが使えるはずです。 結論 GitHub互換のURL形式でリダイレクトを設定することで、GitHub PluginでもGitBucketのWebhookを…

Gradle Swagger Codegen Pluginを書いた

Swaggerのソースコード生成をGradleで利用するためのプラグインを書きました。 github.com 以下のようなビルドスクリプトを実行すると、SwaggerでAPIサーバを自動生成できます。 plugins { id 'org.hidetake.swagger.codegen' version '1.0.0' } repositorie…

チーム開発を始める時に決めること

頭の中を整理するために、新たにチーム開発を始める時に決めることをリストアップしてみました。すべて書き出すと大量になるので、プロセスや開発基盤を中心に書いています。 プロジェクト計画 ゴール マイルストン スコープ リリース計画 プロセス チーム構…

KPTとYWTMの振り返り手法を使い分ける

チーム開発の振り返り(レトロスペクティブ)ではKPTが広く使われていますが、YWTMという手法もあります。 yu-hi.babymilk.jp 私のチームでは、スプリントの振り返りはKPT、一定の区切り(月とか四半期)での振り返りはYWTMを使っています。具体的には、個人…

Gradle TestKitでプラグインをテストする

GradleプラグインのテストにGradle TestKitを利用すると便利です。 何に使うの? ユニットテストではうまく動いているのに、実際のプロジェクトにプラグインを適用するとうまく動かないことがあります。これはGroovyのバージョンが違うとか、ビルドスクリプ…

REST APIの例外設計

REST APIを設計する場合に、エラーをどのステータスコードで返却するか議論になることがあります。例えば、以下のような場合が挙げられます。 キー指定のリクエストでDBにデータがない場合(例: GET /books/1 ) 一覧のリクエストでDBにデータがない場合(…

Swagger CodeGenでダミーデータを返すスタブを出力する

Swagger codegenで言語にnodejs-serverを指定すると、Node.jsベースのRESTサーバが生成されます。基本的には空のデータを返す実装になるのですが、ある一定の条件を満たす場合は aeiou や 123456789 といったダミーデータを返す実装を出力してくれるようです…

acmesmithでSSL証明書を管理する

開発環境などのテンポラリな環境でSSL証明書を利用したい場合はLet's Encryptが便利です。Let's Encryptの証明書を管理するツールにはcertbotやlegoなどがありますが、それらは鍵や証明書をローカルディスクに格納するため、他のサーバで証明書を利用したい…

VirtualBoxのグラフィックスコントローラをvmsvgaに変更する

VM

VirtualBoxでゲストOSを実行する場合、通常はVirtualBoxに対応したディスプレイドライバをゲストOSにインストールする必要があります。ゲストOSが特殊で標準のディスプレイドライバしか利用できない場合は低解像度しか利用できませんが、もしゲストOSがVMwar…

あさりのリゾット

あさりのリゾットを作ったらめっちゃ美味しかったのでメモを残します。 材料(2人分) 材料 数量 米 1合 あさり 1パック たまねぎ 半玉 にんにく 適量 じゃがいも 1玉 白ワイン 200ml 水 100ml バター 適量 塩 適量 黒胡椒 適量 オリーブオイル 大量 作り方 …

Swagger自動生成スタブの継続的デプロイ

SwaggerにはYAMLからAPIクライアントやAPIサーバのコードを自動生成する機能があります。コードの自動生成を利用することでドメインの実装に集中でき、また、スタブを利用することでチーム開発を円滑に進められるといったメリットがあります。 しかし、コー…

Gradle SSH Plugin 2.6.0 released

Gradle SSH Plugin 2.6.0、Groovy SSH 2.6.0をリリースしました。 github.com 2.6.0の変更点 New feature Add executeScript method for script execution (thanks to @matthiasbalke) Add inputStream setting for command or shell (thanks to @matthiasba…

Gradle SSH Plugin 2.5.0 released

Gradle SSH Plugin 2.5.0、Groovy SSH 2.5.0をリリースしました。 github.com 2.4.1〜2.5.0の変更点 New feature Add timeout setting (2.5.0) Bug fixes Fix executeSudo never finish if password is wrong (2.5.0) Fix closing gateway session (2.4.3) U…

Continuous deployment to App Engine from Circle CI by Gradle

Circle CIを利用して、JVMベースのアプリをGoogle App Engineにデプロイする作業を自動化してみました。 うれしいこと 誰でも簡単にデプロイできる CIやPull Requestレビューを通過したコードのみデプロイできるように制限できる ビルド環境の差異による影響…

Circle CIでSSHサーバを利用する際の注意点

Circle CIでテストコードからローカルのSSHサーバを利用する際の注意点をメモします。 背景 SSHクライアントのテストでSSHサーバが必要なので、CI環境で用意したい。具体的には、Gradle SSH PluginのテストでCircle CIのSSHサーバを利用したい。 課題と対策 …

Gradle SSH Plugin 2.4.0をリリースした

Gradle SSH Plugin 2.4.0、Groovy SSH 2.4.0をリリースしました。 github.com 2.4.0の変更点 New features: Host key checking for gateway access Put files filtered by given closure Get files filtered by given closure Add ssh.runtime object in CLI…

ITのビジネス価値を最大化するには

2016年になってもアジャイルはテストをしないとか、計画を立てないとか、1日10回デプロイするための技法といった誤解が広まっているのは残念すぎる。 まず、ITのビジネス価値を最大化するという視点が必要なはず。事業の売上や費用を改善するためにシステム…

TestKitによるGradleプロジェクトのテスト

最近のGradleで導入されているTestKitを使ってみたのでメモします。 TestKitでできること TestKitを利用すると、Gradleプロジェクトに対するテストを実行できます。例えば、何かの設定ファイルを自動生成するタスクをGradleで定義している場合に、そのタスク…

VyOSでIP masqueradeの最小構成

VyOSで最小限のルータを設定する時のメモです。 前提 INTERNAL側に複数のクライアントをぶら下げたい INTERNAL側でDHCPサーバを立てて、クライアントの設定を省力化したい GLOBAL側はイントラネットなのでファイアウォールは設定しない 設定 GLOBAL側とINTER…

Gradle SSH Plugin 2.3.0をリリースした

Gradle SSH Plugin 2.3.0、Groovy SSH 2.3.0をリリースしました。 github.com 2.3.0の変更点 リモートコマンドを実行する時にコマンドラインを簡単にエスケープする構文を追加しました。これまでは自分でエスケープする(シングルクォートで囲む、もしくはバ…

Gradle SSH Plugin 2.2.0をリリースした

Gradle SSH Plugin/Groovy SSH 2.2.0をリリースしました。 2.2.0の変更点 authentications でユーザ認証方式を指定できるようになりました。通常の使い方(パスワード認証、公開鍵認証)ではユーザ認証方式を指定する必要はありませんが、Kerberos認証などの…

Gradle SSH Plugin 2.1.1をリリースした

Gradle SSH Plugin/Groovy SSH 2.11をリリースしました。 2.1.1の変更点 SCP GET/PUTの性能を改善しました。 github.com 2.1.0でSCPサポートを追加しましたが、非効率な実装が残っていたため、2.1.1で性能を改善しました。 Test Item scp vs sftp (2.1.0) sc…

Gradle SSH Plugin 2.1.0をリリースした

Gradle SSH Plugin 2.1.0、Groovy SSH 2.1.0をリリースしました。 github.com github.com 2.1.0の変更点 SCPによるファイル転送をサポートしました。SFTPはJSchに組み込まれている機能を利用しているので簡単に実装できましたが、SCPはコマンドの標準入出力…

AndroidでBLEデバイスから通知を受け取る

AndroidでBLE(Bluetooth Low Energy)デバイスから通知を受け取る方法でハマったのでメモしておきます。 セントラルがペリフェラルから通知を受け取るには setCharacteristicNotification() でセントラル側の通知受信を有効にするだけでなく、 writeDescrip…

Gradle SSH Plugin/Groovy SSH 2.0.0をリリースした

Gradle SSH Plugin 2.0.0、Groovy SSH 2.0.0をリリースしました。 github.com github.com 2.0.0の変更点 executeSudo メソッドでsudoコマンドに与えるパスワードをデフォルト(SSH接続時のパスワード)から変更できるようにしました。また、sudoコマンドのパ…

Gradle SSH Plugin 1.5.1をリリースした

Gradle SSH Plugin 1.5.1、Groovy SSH 1.5.1をリリースしました。 github.com github.com 1.5.1の変更点 SFTPでファイルやディレクトリを削除する remove メソッドを提供しているのですが、ファイルやディレクトリが存在しない場合に例外が発生しないように…