きり丸の日記

通信事業会社のエンジニアです。インフラはよくわかりません。アプリケーションエンジニアです。Javaを使うエンジニアです。QAやテストでの第一人者になりたい。

Java + Flywayで誤って適用してしまったバージョンを未適用の状態にする

以前、Flywayで参照制約を追加したが、既存のデータが既に参照制約違反だったため、四苦八苦した話を書きました。

※以前の記事。 nainaistar.hatenablog.com

その後、色々知った後に検証をしていると、いろいろと勘違いしていることが分かったので、忘れないようにするためのメモ。タイトル自体は前回知りたかったことです。Flywayの公式のどこに書いてたんだろうか…。

なお、バックアップから復旧するよりはマシ、という内容なので、基本的には非推奨です。

誤って適用したバージョンをリセットする方法

バージョン管理テーブルとして、flyway_schema_historyテーブルが作成されています。その中に、今まで適用したバージョンがレコードとして登録されています。

完全にリセットしたい場合は、drop table flyway_schema_historyでリセットできます。installed_rankがインクリメントされていくので、リセットしたいバージョン以降のレコードを削除し、マイグレーションを行えば再適用できます。

ただし、この操作はFlywayでのステータスを適用から未適用に戻すだけです。Flywayで適用した結果は残るので、手動でDROP TABLEALTER TABLE等で状態を戻す必要があります。

f:id:nainaistar:20201021235055p:plain
flyway_schema_tableの構成


下記は検証した時の例。

  1. R__create_table.sqlを作成
  2. bootRunsqlを適用
  3. R__create_table.sqlにコメントを追加、 V1__arien.sqlを作成
  4. bootRunsqlを適用
installed_rank version description type script checksum installed_by installed_on execution_time success
1 NULL create table SQL R__create_table.sql 688335130 user 2020-10-18 13:13:12.540324 36 true
2 1 arien SQL V1__arien.sql 1672929557 user 2020-10-20 02:52:33.368014 57 true
3 NULL create table SQL R__create_table.sql 695332486 user 2020-10-20 02:52:33.568768 51 true

その他自分の認識誤りだった点

Rファイルの扱い

Rファイルは起動するたびに実行される認識でした。そうではなく、checksumが同じ場合は変更が無いとみなし、1度しか実行されません。コメントやformatする等でファイルのchecksumが変更された時に再適用します。

なので、今後のプロジェクトでは下記のように管理しようと考えています。

  • 本番環境リリース前

  • 本番環境リリース後

    • Rファイル
      • 使用しない(DEL-INSはファントムリード等のタイミングが怖い)
    • Vファイル

成功しないとレコードとして登録されない

以前はバージョン管理テーブルのflyway_schema_tableの存在を知りませんでした。なので、参照制約を追加したバージョンファイルが失敗するとレコードに履歴が書き込まれ、DBのスキーマ削除する必要があると考えていました。

しかし、検証した結果、どうやらFlywayでのマイグレーションに失敗した場合、そもそもレコードの登録が行われないようです。

つまり、flyway_schema_tableのレコードを修正することなく、ファイルを修正すれば問題ありません。

問題になるとしたら複数の環境に適用した後、特定の環境のみマイグレーションに失敗した時です。

冒頭に貼った記事は「review環境 → IT環境 → ST環境(ここで失敗)」という複数環境への適用後に失敗したので、flyway_schema_tableのレコードを削除して再適用する必要があります。

終わりに

公式サイトは一応flyway_schema_tableのことは書いてあるものの、基本的にはコマンドしか書いておらず、自分で構築するまで気づけませんでした。しかも、gitbook等のように公式サイトを検索できないので、明示的にテーブルとして存在していることを見つけられなかったです。

基本的には一度でもFlywayの履歴を操作してしまうと、現在の状態を疑ってしまうので行いたくはないのですが、最終手段としてブログに残しておきます。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考資料

Flyway公式サイト flywaydb.org

Flyway公式サイト:修復する方法 flywaydb.org

f:id:nainaistar:20201021235115p:plain
flyway

劇場版「鬼滅の刃」無限列車編を見てきたので感想(ネタバレあり)

非常に良かったです。ネタバレしないと話せない内容が多くなるので、ネタバレしていきます。

良かった点

煉獄さんの戦闘描写

煉獄さんの戦闘描写が最初から最後までよかったです。序盤の「炎の呼吸 壱ノ型 不知火」がド迫力で度肝を抜かれました。映画では2体目の鬼が出現し、伊之助を助け、乗客を守り、「弐ノ型 昇り炎天」を披露した後、夢である描写に入ったので、「これぞ柱!」という感じの掴みがばっちりでした。

猗窩座との戦いで放った「伍ノ型 炎虎」自体もかなりの迫力だったのに、「玖ノ型 煉獄」はそれを超えた描画で大満足です。

また、映画オリジナルの「参ノ型 気炎万丈」も見れて、煉獄さん好きにはたまらない映画となったでしょう。

型の描画だけでなく、猗窩座戦後の地面に大量の跡が残っているのが、死闘を示していて非常にエモかったです。

あと戦闘描写じゃないけど、煉獄さんがずっと釣り眉だったのに、最後の最後で笑って垂れ眉になるのがいい。

Pixiv百科事典 炎の呼吸 dic.pixiv.net

「竈門炭治郎のうた」のアレンジが流れる

※ もし違ってたらすみません。


「竈門炭治郎のうた」とは、アニメ19話 ヒノカミで流れた劇中歌です。

Prime Video 鬼滅の刃 www.amazon.co.jp

歌詞 www.uta-net.com

魘夢が炭治郎に見せた夢のなかで流れました。猗窩座戦後も流れてた気がします。声が入ってなかったので、おそらくアレンジだと思います。

ヒノカミの印象が強いので、この音楽聴くだけで泣きそうになりますね。声はないんですが、歌詞自体も炭治郎が家族を亡くして辛くとも前に進むことを表現していると思われるので、その家族がいる幸せな夢を捨ててでも現実を生きる強さが表現されているのではないかと思います。

しかも、ヒノカミの大正コソコソ噂話にて「竈門家は、神楽の祭りが終わったあとに父と母がいつも煎餅を焼いてくれた。」というのを言っていました。映画でも竈門家は煎餅が大好きだという表現があったので、今更ながらに涙しています。

列車と一体となった魘夢がかなり分かりやすくなっている

漫画版だと、列車に肉がこびりついているって感じでしたが、肉列車ともいうくらい肉がついていました。沙耶の唄を映画用にマイルドにした感じです。沙耶の唄は興味のある人だけ調べてください、オススメはしません。

触手の攻撃も派手になってますし、特に魘夢の首を切るまでの戦闘は漫画よりも増えています。映画のクライマックスというのもあって、見ごたえがありました。

無限列車編は原作のどの話・どの巻か

7巻から8巻までのたった2巻です。話数だけなら1.5巻くらい。映画であれだけの存在感を放った煉獄さんがメインで活躍する猗窩座戦に関してはたったの4話。確かに長かった記憶もなかったけど、短くてびっくりしました。映画を見る人はもう漫画も持っていると思いますので、無限列車編との描写の違いを楽しんでみてください。

  • 魘夢 戦
    • 54話 こんばんは煉獄さん から
    • 62話 悪夢に終わる まで
  • 猗窩座 戦
    • 63話 猗窩座 から
    • 66話 黎明に散る まで

終わりに

鬼滅の刃の人気にあやかっているのか、いつもより映画が始まるまでの予告編の数が多かったように感じました。

このクオリティなら2期とか、花魁編とかもやって欲しいんですけどね…。特にそういう情報は出てこなかったので、おそらくこれで終わりでしょう。年末か年明けには最終巻出ますからね。

いいものを見れました。また映画は見たいです。

kimetsu.com

タスク管理・TODO管理ツールにはBacklogがオススメ

タスク管理ツールにはいろいろあります。

  • Trello
  • Redmine
  • Asana
  • Repsona
  • Kintone
  • Jira

等々。

その中で、私はタスク管理ツールにはBacklogをオススメしています。

もちろん、個人利用とプロジェクト利用だと目的が異なりますし、個人に合う・合わないはあります。また、無料と有料で機能数が異なりますので、有料なら便利ということもあるでしょう。

なので、合わない可能性がある、という点を留意していただけると助かります。また、私はBacklogを2018年から使い続けています。特別に乗り換える必要性を感じていないため、2020年の現在にはもっと便利なタスク管理ツールがある可能性もあります。ご了承ください。

なお、現職に転職してからは使用していませんが、個人利用とチーム利用は経験があります。どちらに対してもオススメします。

この記事の対象者

  • 個人で使えるタスク管理ツールに悩んでいる人
  • チームで使えるタスク管理ツールに悩んでいる人
    • 10人までなら無料で使えます
  • タスク管理ツールの事例が知りたい人

タスク管理ツールに最低限求める機能

  • Excelの延長として使用できること
    • Excelの課題管理表の代替として使用し始めたのが始まりなので、使い慣れています。
  • アプリが提供されていること
    • 携帯からもタスクを更新できると漏れが無くて嬉しいです。チーム開発だと、通知が来るので非常にうれしい。

タスク管理ツールにあったらうれしい機能


  • ボード形式で可視化できること
    • 現在のタスクの状況を可視化できるのが、日々のタスク消化をしやすいです。
  • APIが公開されていること
    • タスク追加した時に、同時にSlackへ通知する等の拡張性があると嬉しいです。

Backlogとは

公式サイトより。

Backlogはウェブ制作、ソフトウェア開発、大手広告代理店、全国版新聞社など様々な業種で使われているプロジェクト管理ツールです。

複数のタスク管理・プロジェクト管理ツールを使ったことがある方を対象にしたアンケートによると、「Backlog」は約80%の方が、「最も使いやすいと答えたタスク管理・プロジェクト管理ツールです。
他にも、「どの部署でも直感的に使える」「複数部署が関わるプロジェクト管理でも使いやすい」と回答しています。

タスク管理・プロジェクト管理ツールは海外サービスが多く、導入しても使いづらいと言う声も多いですが、Backlogは親しみやすい機能や操作感で、別ツールから乗り換えた企業の方からも「圧倒的に使いやすい」「組織に定着した」と好評です

SaaSなので、登録したらすぐに使用できる点が嬉しいです。直感的に必要な機能が使えるので、UIが優れています。

無料で使える機能一覧

  • 各課題にコメントを付与できます
    • レビュー結果を履歴で残せます
  • 更新したタスクの差分を管理できます
    • チーム開発で便利
  • 通知機能
    • タスクの期限を切ると、メールで今日のタスクを通知してくれます。また、期日をオーバーしているタスクも通知してくれます。
  • ファイル共有ができます
  • SVN、Gitを使用できます
    • SVNに関しては、深く使ったことはありません。Gitも機能としては提供されていますが、GitHub等の別のサイトで使用したほうがいいでしょう。
  • タスクに紐づくファイルを添付できます
    • ただし、無料版は1ファイルのみです。
  • Wiki機能あり
    • チーム開発では、ここに必要な情報をまとめるので重宝します。新規参画者に対しても、このページ見ておいて、っていうだけである程度伝えられます。
  • Jira・Redmineからの移行がサポートされている
  • 課題一覧をCSVやxlsxに出力できます
    • BIツールを使うことができるので、分析もやりやすいです。
  • プロジェクトを複数持つことができます
    • 5つまで作成できますが、個人なら不要です。小規模チームの時には使用できます。

特に個人で使っている機能抜粋

課題一覧


自分はなんでも課題に入れています。ブログのネタもそうですし、技術のネタもそうですし。また、本を読むのが苦手なので、Markdownにして本の進捗等を管理しています。

その他にも確定申告等を入れることもあれば、買い物リスト等の細かいタスクも全部入れてます。あと、私は人のことを記憶するのが非常に苦手なので、相手の好きなもの嫌いなもの等をまとめたのもこの課題に入れています。オススメされた店もBacklog上で管理しています。

f:id:nainaistar:20201017225319p:plain
課題一覧
f:id:nainaistar:20201017225346p:plain
本の残章管理

カンバンボード


2020年2月から使える機能です。

未対応、処理中、処理済み、完了の4レーンあるボードを使用できます。無料ではこのレーンは修正できません。個人で使用しているので、未対応、処理中、完了の3レーンしか使用していません。

ただ、チームとしても処理済みというステータスは不要な認識です。作業レベルでは完了していて、レビュー待ちというステータスで使えますが、レビュー反映は別タスクとして切ったほうが分かりやすいです。また、作業レベルで完了したのであれば、その場でレビューしてもらって完了にした方がチームの運営が円滑になります。使っていいのは、定時以降に作業して完了した場合くらいです。

f:id:nainaistar:20201017225410p:plain
カンバンボード


また、私はマイルストーンを月間の上期下期で分けて、それぞれを1Sprintとみなしています。基本的には緩くやっていますが、下記のPodcastを参考にして計画建てをするようにしました。

omoiyarifm #22 「Trello があるので眠れない」 lean-agile.fm

有料で使える機能一覧

  • タスクの親子関係を作成できます
  • ガントチャート、バーンダウンチャートを使用できます
  • アクセス制限は付与できません
    • 個人で使う分には問題ありません
  • 属性のカスタマイズができます
    • ボードの名前とかカスタマイズできます。また、後で分析する時に欲しいです。ただし、進捗率は表現できません。99%完了は0%完了なのでいいんですが。

導入方法

フリープランの登録から登録します。

事例

NTT ドコモ様
Backlogエンタープライズ版を10,000名で全社的に利用 backlog.com

※ NTT様に派遣されたときに、個人のBacklogにアクセスできなかった記憶があります…。

mana_cat様
【家庭にプロジェクト管理ツールを導入して1ヶ月】実感した5つの変化 www.mana-cat.com

社内LT時の資料

2018年6月19日に社内LTした時の資料があるので、こちらもブログに貼ります。もう2年も前なんですね…。

有料版を使っていたこともありましたが、その時は自社ではなく請負元企業が所有していました。タダ乗りできて嬉しかったですけど、情報が自社に溜まらないのが難点でしたね。

終わりに

既に複数の企業で使用しているので、私が紹介するまでもないかもしれません。JBUG(Japan Backlog User Group)等の勉強会も開催されていて有名ですしね。

ただ、エンジニアがタスク管理ツールやTODO管理ツールを挙げるときに、Backlogの名前が挙がることが少ないと思ってこの記事を書きました。押し付けるつもりはありませんが、非常に優秀なツールなので私以外にも個人で使っているという声が聞けると、書いた甲斐があります。


弊社としてもプロジェクト管理ツールとして、Backlogを導入しようとしているようです。会社のPCからBacklogにアクセスした履歴から、10/21にヒアリングが来ました。

今でもいいツールのようです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考記事

Repsonaで個人プロジェクト管理を始めよう | カンバンもガントチャートも無料で使える! osushi-engineer.hatenablog.com

【2020年版】タスク管理ツール おすすめ16選を徹底比較(無料あり) notepm.jp

Backlog公式サイト

公式ヘルプセンター support-ja.backlog.com