量産型エンジニアの憂鬱

きっと僕は何物にもなれない。

iOSDCで当日スタッフ & LTトークしてきました

i will blog. 全写真です。ご査収ください! #iosdc 前夜祭https://t.co/bDZi3cbgQM1日目https://t.co/DXQSr3xyx42日目https://t.co/25tEGJRrZAみんなのアルバムhttps://t.co/nEuFBpBZaD— iOSDC (@iosdcjp) 2017年9月21日 こちらのiOSDCの写真をみてたんです…

GitHubと各種CIサービスを連携してみる

普段GitHubを使っていて、Travis CIと連携してバッヂをつけたりしています。 Pull Requestが来たときなんかも自動でビルド・テストをしてくれるので便利ですよね。 今回は、自分でサーバーを用意せず利用できるCIとGitHubを連携してみました。 今回ご紹介す…

Dangerプラグインを作ろう

Danger 最近流行りつつある? Danger です。 Pull Request に対して色々チェックできるようになります。 先月末にポツポツと紹介記事が出ました。 cookpadさんの記事 Recruit Jobsさんの記事 Node版のDangerJSは こちらの記事 が詳しいです。 Dangerとても便…

Dangerを使ってみる

Danger What is Danger? CI上で、バージョン管理ホスティングサービス の Pull Request / Merge Request の内容を解析して、コメントすることができるツール。 設定ファイルは Ruby DSL で記述するので、様々なチェックができる。 サポート状況 サポート状況…

JJUG CCC 2016 Fallに行ってきました

JJUG CCC 2016 Fallに行ってきました。 何回か参加させていただいて、いつも電車で行ってたのですが、今回は車で行きました。 伊豆から新宿、高速使うと近い近い。 家帰ってから見たら、新宿まで行ったのに全然歩いていませんでした。 さて、聞いたセッショ…

Perl6のコンストラクタと継承

view_gist('animal.pm') view_gist('bird.pm') view_gist('main.pl') Perl5にはクラス構文がありません。 モジュール名で bless された リファレンスをインスタンスとして扱うことができます。 ハッシュリファレンスまたは無名ハッシュを bless した場合、キ…

DBUnitでxmlからインサートするときに最初のレコードでnullを指定したい

DBUnitが便利ですね。 Spring Bootにおけるテストでは以下のように書けば毎回データセットをインサートしてくれます。 view_gist('string.java') 最初のレコードでnullを指定したい場合にちょっと戸惑いました。 二つ目以降のレコードに null を指定したい場…

Perl6でprivateなメンバにコンストラクタで値を渡したい

※ 追記あり Perl6でprivateなメンバを作ったときに、コンストラクタで値を渡せなくてちょっとハマったのでメモ。 publicなメンバを設定する場合、 view_gist('public.pl6') メンバ変数の $ の後に . をつけることで、アクセッサが自動的にできます。 インス…

ウェブでログインが必要なルーチンワークをPythonスクリプト書いてJenkinsさんに実行してもらう

最近、ルーチンワークを少しずつ自動化しています。 ウェブをチェックするようなルーチンはスクレイピングを行うのですが、ログインなどのブラウザ操作が必要な場合もあります。 ブラウザ操作が必要な場合でも自動化するのが今回の目標。 Python + Selenium…

GmailをSlackに通知するPerlスクリプトを書いた

チームSlackを導入してしばらくたったのですが、 まだ一部のやり取りはメールで行っています。 この通知をまとめたい場合、SlackにはEmail連携が用意されています。 Slack便利。 が、これは有料版でしか使えません。 メールクライアントソフト使えばいいかも…

Gitで試行錯誤したコミットをまとめたい

git

GitとCIサービスを連携していて、CIサーバの設定がうまくいかなくて何度もコミットしちゃうことありますよね。 amend をつけててもリモートリポジトリに push する段階でマージを余儀なくされたり。 --force で push すればよいのですが、あとから一連のコミ…

Spring BootプロジェクトをIntelliJでJUnitするときプロファイルを指定したい

あー、やっぱphantomjsやと失敗かー。— Shunsuke Maeda (@duck8823) 2016年8月13日 Spring Bootを使って開発してますが、Selenideによる画面テストを実施する際、ローカルではFirefox、CIサーバ上ではphantomjsドライバを使ってテストしています。 また、ロ…

Redmineプラグインを作ってみた

業務における運用作業をRedmineで管理することになったのですが、そのままでは非常に使いにくい気がしたのでプラグインを作成することにしました。 運用作業をチケットとして管理するには チケットを作成する チケットの進捗率を変える チケットのステータス…

Bash on Ubuntu on Windows でアレコレ

8月1日、僕はとても楽しみにしていました。それは遠足の前日の小学生のよう。 8月2日のWindows Anniversary Update で Windowsで Bash が使えるようになるんです。 8月2日は何度もアップデートを確認してしましました。ポケモンGoの公開前みたいに。 そう、…

Re:ゼロから始めるフロントエンド開発

約3週間前・・・。 明日からフロントもいじってくでー。— Shunsuke Maeda (@duck8823) 2016年6月6日 てことで、フロントエンドの開発に取り掛かりました。 これまでのフロントの開発経験は、 テンプレートエンジン(JSP、Velocity) jQuery CSS Struts の Ti…

perlでSlackの雑談Bot作ってみた

前回の記事でperlでSlackのbotを作ることができるモジュールを紹介しました。 今回はこれを使って雑談Botを作ります。 雑談用のAPIはdocomoさんが提供している雑談対話APIを利用しました。 雑談対話APIを利用するにはここから開発者登録する必要があります。…

perlで簡単にSlack Botを作るモジュールを公開した

CPAN authorになりました。 Slack::RTM::Bot - search.cpan.org GitHubでいくつかperlのモジュールを書いたりはしていたのですが、せっかくなのでCPANに登録することにしました。 SlackのReal Time Messaging (RTM) APIを使ったモジュールです。 公開したモ…

Slackbotのメッセージをオシャレにしたい

以前にbotkitを使ってslackbotを作りました。 この通知をオシャレにしたい。 GitLabとかの通知みたいな感じ。 テスト結果で色とか分けられててわかりやすいですよね。 で、どういう風にやるのかなとかと思ってたんですが、メッセージをJSON形式の添付ファイ…

SonarQubeでテストカバレッジを表示する

うちのチーム自動テストを導入しようとしてます。 とはいえ、ゼロから始めるには指標がないとしんどいですよね。 JJUG CCCで知見を得たSonarQubeを試すことにしました。 SonarQubeの起動 Docker使ってぱぱっと試します。 docker run -d --name postgres-sona…

Java Day Tokyo 2016に行ってきました

JJUG CCCに続いて、Java Day Tokyo 2016に行ってきました。 今回は教育扱いで参加させていただきました。感謝! 聴講したセッションはこんな感じ。 めっちゃJava SEでした。 とりあえずまとめておきます。 英語できないし、同時通訳馴れないし、椅子でお尻痛…

JJUG CCC 2016 Springに行ってきました。

JJUG CCC 2016 Springに行ってきました。 技術系カンファレンスは4度目の参加です。 今回の自分の中でのテーマは、「JJUG春のアップデート祭り」です。 以下、聴講したセッション。 自分に関係ありそうなところをかいつまんでメモ。 テスト自動化のまわりみ…

JPA使ってデータベース初期化するときに同じクラスの@Embeddedが重複してる場合の対応

早速ですが以下のようなクラスがあったとします。 @Entity class User { @Id private Long id; private String firstName; private String lastName; private String firstNameOfRecipient; private String lastNameOfRecipient; } @Embeddedと@Embeddableを…

botkit使って定期的につぶやくslackbot作る

Slack便利ですね。 他のチャットツールとの違いとして、連携できるアプリの豊富さがあげられると思います。 さらに、BotkitやHUBOTなどを使って簡単にbotが作れてしまいます。 今回はBotkitを使ってSlackのbotを作成してみます。 SlackでBotを登録する Botの…

アノテーションプロセッサで生成したコードをCompile Testingを使ってテストする

アノテーションプロセッサを使って、SeasarプロジェクトのGen-Namesのようなものを作りました。 github.com Gen-Namesなどは@Entityが対象ですが、@GenerateNamesアノテーションをクラスをつけるとそのクラスと親クラスのフィールド名をStringで返すようにし…

JenkinsとGitLabをHTTPで簡単に連携する

CI

前回の記事でJenkinsとGitHubを連携した。 GitHub Enterpriseあるけどお金かかるし。ってことで、GitLabを導入する予定。今回はJenkinsとGitLabを連携する。タダ最高。 JenkinsとGitLabを連携する 大まかにいうと以下の感じ GitLabにJenkinsユーザを作成する…

JenkinsとGitHubを連携する

CI

これまでIDEでビルドしたプロジェクトを手動でサーバにデプロイしていた。この方法はいろいろと問題点があった。 開発者のIDEの個人設定でビルドしてしまう 手順が煩雑 IDEでビルドする 成果物をantまたはscpでサーバに持っていく sshでサーバに入って作業 …

DockerつかってJenkins2を起動する

CI環境の構築にあたり、Docker上でJenkinsを走らせようと思った。 OSはCentOS7 JenkinsはせっかくなのでJenkins2を使ってみる。 Dockerのインストール yumでお気軽に。 yum install docker docker-devel systemctl start docker systemctl enable docker Jen…