White Box技術部

WEB開発のあれこれ(と何か)

【主にスクラム向け】プロダクトバックログフォーマットと運用フローについて

プロダクトバックログのテンプレートが欲しい これが「さいきょうのPBLだ!」 PBL項目 スクラムでのPBL運用フロー 1. プロダクトバックログリファインメントを実施 2. スプリントプランニングを実施 3. スプリントレビューを実施 4. 繰り返し まとめ プロダ…

【MySQL 8向け】MyBatis Migrationsのコンテナ化

JVM系のマイグレーションツールの導入 新しくSpring Bootの開発環境をコンテナ上で作る上で、DBマイグレーションツールのMyBatis Migrationsをコンテナで使えるようしたので、その手順をまとめておきます。 Docker Composeの構成 作っていた開発環境のマイグ…

PythonでのAWS Lambda開発メモ(利用開始編)

Lambdaを使うことになった経緯 Lambdaの利用経験がなかった私が、Lambda利用を決めた流れは 1日1回のS3のファイルチェック処理が必要になる ファイルがなかったらSlack通知してくれればいい(簡単なスクリプトでOK 今のところ、AWS上にサーバは立ってない 調…

ログ出力指針の書き方

アプリケーションのログ出力指針を作ったときに、どんな事を考えていたのかを思い出しながら、 ログ出力指針について書いていきたいと思います。 ログ指針作成にあたって 目的の作成 適用範囲の設定 どんなときログを埋め込むのか?または埋め込まないのか?…

【kotlin】Coroutinesを使って、Spring WebFluxでJDBC処理を行う

ちょっと記事を寝かせすぎてしまったのですが、今回は1.3でKotlin本体に入ることが決まったコルーチンのお話です。 WebFluxでJDBCを使うには Schedulers#elasticで対応 この方法の問題点 コルーチン コルーチンの導入 WebFluxのリクエストをコルーチンで処理…

【GCP】Datalabをチームで使うための導入手順

職場で 「他のアナリストと分析結果を共有しやすくして欲しい。というか共有のJupyter環境を用意して欲しい」 という話があったのですが、環境の制約で、すぐに共有のJupyterを用意することはできなそうだったので、Google Cloud Datalabを使ってもらうこと…

【TypeScript】DangerのTSLintプラグイン紹介と導入の補足

Rubyの方のDangerをTSLintに対応させたかったので、ESLintのDangerプラグインのforkをforkして、DangerのTSLintプラグインを作りました。 danger-tslintの作成経緯 最初はDanger-jsの方のTSLintプラグインを導入したのですが、Dangerでいいなぁと思っていた…

Kotlinを使ったWEBアプリケーション開発の始め方

先日、とらのあな主催のKotlin勉強会で、Kotlinを使ったWEBアプリケーション開発の始め方という題で発表してきました。 ちょっと時間が押していたので発表は巻きになってしまったのですが、Kotlinで開発を始める後押しができていたら幸いです。 といっても、…

Kotlinのリフレクション(protected/privateメソッド呼び出し)

protectedメソッドへのアクセス Kotlinにおいてprotectedのアクセス修飾子は、Javaと異なり同一パッケージからのアクセスを許容しません。 そのため、テストコードなどでprotectedのメソッドを実行したい場合は、リフレクションを使う必要があります。 継承…

【Slackアプリ】Botkitのsimple_storageを拡張する

BotkitにはSlackアプリがJSONでユーザ、チャンネル、チームの情報を保持できる簡易DBのような仕組みがあります。 今回はこれを拡張し、保持できる単位を増やしてみました。 simple_storageの拡張 Botkitで利用されている簡易DBは、simple_storage.jsとして実…

BotkitでのSlackアプリ開発方法とデプロイ方法

現在、Slackアプリを開発中なのですが、初めてのこともあり色々と学ぶことが多かったです。 Botkitでの開発 BotkitとBabelの導入 開発時の注意点 Botkitの注意点 SlackアプリとBotsの違い Slackへの設定 Basic Information Install App Interactive Componen…

2017年に読んだ本と2018年の抱負

新年、あけましておめでとうございます。 2017年に読んだ本の振り返り 本当は去年のうちにやっておきたかったのですが、 読んだ本から去年の自分の興味を振り返り、今年の抱負を考えていました。 JavaScript系 JavaScriptはjQueryで知識が止まっていたので、…

JOOQをGradleプロジェクトで使う

2017/12/15追記:gradle buildからJOOQのコード生成を除外 サーバサイドの開発をKotlinで行うために、ここのところ調査・検討を色々していました。 概ね問題なさそうという結論が出たので、それ以外の技術選定をしていたのですが、 O/R Mapperに採用すること…

【まとめ】Java SE 9/EE 8リリースイベント 兼 JavaOne 2017 報告会

Javaな仕事に戻ったのもあり、JJUGのイベントに行ってきました。 当日の発表内容や様子は、以下にまとめてくださった方がいるようです。 ちなみにこのイベントの内容は、動画で公開されています。 参加できなかった方もこちらを見ていただけると、Javaの今が…

GitHub Enterprise上のRubyコードのカバレッジをCircleCI Enterpriseで集計し、結果をSlack通知する

カバレッジのSlack通知 こちらの内容を参考に、CircleCI Enterpriseでビルド時に集計したカバレッジを、Slack通知できるようにしました。 参考元のスクリプトではcoberturaとjacocoに対応していましたが、simplecovにも対応してあります。 あと、取得元をGit…

「テストを書く文化がないからテストがないんです」

それは怠慢だろうが!いい加減にしろ!! じゃあテストコードはこのプロジェクトなくていいのか?と問えば、ある方がいいと思うと答えてくるが、 じゃあなぜ書かないのかと問えば、文化が・・・と答えてくる。 中には、画面で実際にオペレーションをしてテス…

Circle Checker作りで学んだこと(GroovyとかSpockでのモックの書き方とか)

技術的なこと 前回はCircle Checkerの紹介だったので、今回は作って学んだことを書こうと思います。 ※Circle Checkerの紹介記事はこちらです。 技術的なこと 実装の話 リモートのGitリポジトリとローカルをマージ 便利なDTOの定義方法 Twitter APIのカーソリ…

【自作ツール紹介】 Twitterのユーザ名からイベント参加情報を抽出するツール「Circle Checker」

なぜ余裕を持って行わないのか・・・ 原稿に追われていようといまいと、不精な性格が災いして、 イベント直前にならないとサークルチェックをしない私のような人に「余裕を持って行え」とか言っても無駄なので、 プログラマらしくプログラムで解決を図ってみ…

GradleプロジェクトのSpockのテストをCircleCIで実行してJaCoCoでカバレッジを取りつつCoverallsで表示する

ちょっと思い立ってJavaでコードを書いていて、 さらに思い立ってカバレッジのバッジをREADMEに付けようとしたら、 思いの外ハマったので「GradleプロジェクトのSpockのテストをCircleCIで実行してJaCoCoでカバレッジを取りつつCoverallsで表示する」ための…

新年の挨拶と、reviewetのバージョンアップ連絡

新年あけましておめでとうございます 2日に、幼少の頃以来の初詣に行ってきました。 それもずっと行きたかった神田明神へ参拝することができたので、今年は幸先がいい感じがします。 IT情報安全祈願のお守りも購入できたので、後は頑張ってシステム作りに励…

Twitter画像取得ツール「reins」の0.3版をリリースしました

seri.hatenablog.com 前回の紹介からほぼ2年ぶりですが、Twitterからいい感じに画像を取得するツールのreinsの最新版をリリースしました! reins 0.3 今回、以下の機能追加・バグ修正を行っています。 リツイートの取得に関する動作変更の選択機能の追加 rei…

【Shansible】VagrantとAnsibleでのShangriLa開発環境構築

Shansible Shansibleは、秋葉原IT戦略研究所のProject ShangriLaでAnime APIが動作するサーバ群を構築するためのプロジェクトです。 Shansibleを利用することにより、VagrantとAnsibleを使って簡単にローカルでAnime APIの動作を確認する環境を作ることがで…

【Reviewet】アプリレビュー通知ツールのその後

Reviewet 以前も紹介したアプリレビュー通知ツールのReviewetですが、その後も少しずつ変更を加え、 一部の挙動や起動方法も変わりましたので、今日はその紹介です。 変更内容 ざっくり書くと変更点は以下になります。 メールの件名に、どちらのOSのレビュー…

【Ansible Meetup】うちのチームの話をしてきました:共通言語「Ansible」

Ansible Meetup in Tokyo 2016.06で発表者枠が頂けたので、自チームでのAnsible運用の様子を発表してきました。 共通言語「Ansible」 Ansibleは仕組みがシンプルなので、コード全体が正確にはわからなくても、なんとなく動作を推測できる構成管理ツールだと…

【自作ツール紹介】iOS/AndroidアプリのレビューをSlack/Email通知するNode.jsアプリ「reviewet」

追記(2016/05/29):メール通知機能、実装しました タイトルの通りですが、Node.js上で動作するiOSとAndroidのストアレビューをSlackに通知しつつメール通知もできるプログラムを書きました。 作った理由 iOSとAndroidアプリレビューをSlack通知してくれる…

第3回 ShangriLa MeetUpの振り返り

ShangriLa MeetUp 第3回目となる、ShangriLaのMeetUpを先日の4/9(土)に秋葉原で実施しました。 (ShangriLaは、OSSコミュニティの秋葉原IT戦略研究所が作成している、アニメ情報のIT化プロジェクトになります。) 3回目ですが、コミュニティのメンバー以外…

【logrotate】CentOSでログローテする

ログローテはたまにやろうとすると、あれどうだっけ?となるので logrotateを使ったログのローテーション方法をまとめました。 前提 環境(OS):CentOS 6.6 利用機能:logrotate、cron 今回は、ローテーションしたいログ、例えばアプリケーションログを /va…

php-fpmはgraceful restartしません(回避策あり)

php-fpmはgraceful restart. そう思っていた頃が私にもありました 以下の公式ドキュメントに「緩やかな (graceful) 停止/起動 機能を含む高度なプロセス管理」と記載があるので、 何の疑いもなくservice php-fpm reloadを叩いたらプロセスが落ちました。。 P…

【duolingo】最近の英語学習方法

duolingoを使って英語の勉強をしています。 www.duolingo.com どういうものか? ざっくり言うと、文法、用途でジャンル分けされた内容の小テストをひたすら消化していくものになります。 出題される問題は、英文を音読するだけのもあれば、翻訳(日英、英日…

【Linux】メモリがカツカツなサーバのメモリを復活させる

メモリ枯渇の背景 仕事で、PHPのPhalcon FWで作ったAPIアプリケーションが乗ったphp-fpmサーバを運用しているのですが、 こやつで大量のリクエストをさばけるよう、負荷試験を行ってチューニングした結果、 現在php-fpmプロセスは、staticでリクエストを待つ…