見出し画像

【ER_GradlePlugin_05】つくる・迷い・考えた・記録

こちらの投稿が大分ご無沙汰になってしまいました。
というのも、この間にやってみたいことが生まれ、試したことが原因です。
※試した結果、下記の記事が生まれました。


さて、前回までの進捗を含め確認をしましょう。

✅YamlファイルからDDL文を作れる
✅Schemaspy を使う方法を考える
✅Schemaspy が自動的にダウンロードできる
✅ダウンロードしたSchemaspyの使い方を知る
✅Schemaspyを使って、ER図を出力する
✅出力されたもののデザインを変更できるか確認
✅いずれかの方法で出力内容をカスタマイズする
⬜最終的に大きめのテーブル構造を利用して問題がないかを試す
⬜MySQLやPostgreSQLなどでも使えるようにする
⬜プラグインを公開する
⬜公開したプラグインが使えるかをチェック

この状態でした。
さて、現在の進捗はというと・・。



✅YamlファイルからDDL文を作れる
✅Schemaspy を使う方法を考える
✅Schemaspy が自動的にダウンロードできる
✅ダウンロードしたSchemaspyの使い方を知る
✅Schemaspyを使って、ER図を出力する
✅出力されたもののデザインを変更できるか確認
✅いずれかの方法で出力内容をカスタマイズする
⬜最終的に大きめのテーブル構造を利用して問題がないかを試す
✅MySQLやPostgreSQLなどでも使えるようにする
✅プラグインを公開する
✅公開したプラグインが使えるかをチェック

一つだけ作業ができていないですが、公開しました!
なので、このシリーズは一度終わりを迎えます・・(;つД`)

さて、何をやってきたのかを記録していきます。


前回の投稿の後、すぐに他のデータベースに繋げられるように実装をしました。これ自体は、1~2時間ぐらいでささっと終わりました。

その時点で思ったこととして、

「実装はドキュメントを見つつやったので問題ないはずだけど、実際にデータベースに繋いで確認しないで良いの?」


「はい、やった方が良いに決まってますね!」

という脳内会議を経て、 WSL2 に辿り着きました
(めっちゃ使いやすかったので、本当にお薦めします)

ちなみに、WSL2の検証にめっちゃ時間使ってます・・。
(2つの記事ができるくらいです)
その検証の中で、実際のデータベースと繋いで問題ないかの確認が取れました。


あれ、忘れているんじゃないですか?
『⬜最終的に大きめのテーブル構造を利用して問題がないかを試す』

憶えていますとも・・。でも、調べた感じ良いサンプルがなかったんです。
少し調べて諦めましたw
一応、小さい状態でうまくいってる という状態だったので、そんなに時間をかける価値がないな・・と思ってやめました。


そして、プラグインを公開しました。
それ自体は以前やったことがあるので、さらっと終わりました。
その後です、ちょっと嵌りました。

やっぱり、公開をした後にちゃんと使えるのかを確認しないと不安です。
なので、サンプルのプロジェクトを作って試しました。
すると、エラーを吐いている・・。

ここでやらかした・・。と思いました。
公開したバージョンを、「1.0.0」にしていたんです。なぜあの時の私は、「0.0.1」としなかったのだろうか・・。

対応自体はすぐに終わり(なんで org.gradle.internal.impldep. がついているものは使えないんだ、なら入れないで・・・)、
やっちゃったことは仕方ないので、「1.0.1」のようにバージョンを上げました。

一つエラーがあると、次のエラーが待っていました。
さっきとは違う場所でエラーが・・。
この件はお恥ずかしながら、私の完全な実装ミスだったのですぐに修正。「1.0.2」に上げました。


「よし、これでOK!」

・・そのセリフは、フラグなんですよ。次のエラーが発生してました。
そもそもこのエラーはテスト時には出ていなかった・・。何故?と思っていると、あるものを見つけました。

公式のバグやないかい・・!

まだ治っていないらしく、試しにテストにその発生したケースを入れると同じエラーが出ました。マジか・・。

英語を翻訳しつつ読み、原因が分かりました。
そして、回避策も思いついたので対応しました。バージョンは「1.0.3」になりました。


ここで。ようやく。問題なく動作したことを確認しました!

一応、バージョンを「1.0」としたいと思い、アップロードしたのですが、 gradle さんが最新と判定してくれず・・。ま、いいや。


基本的に、実装したものは GitHub にて管理しています。
「使えるようになるまで公開しないぞ!」という気持ちがあったのですが、
使えるようになったので、公開をしました。


これにて、プラグインを公開するまでの道のりは終了です。

始めたのと同時に記事を書いていれば分かりやすかったのですが…、
「2021/03/16」に構想を固め、
「2021/03/23」に最初の記録記事を書き、
「2021/04/04」に公開です。
大体、1ヶ月もかかっていない感じですね。
途中でWSL2 とか挟んだにしては、早く終わりましたね。


全体を通しての感想

ほぼ毎日 1~3時間ほど実装。休日はほぼ丸っと使って作っていたので、

燃え尽きたよ、真っ白にな・・・

に近いですね。正直言うと、休みたいです(明日仕事ですけど)w
そんな愚痴を書いても、見ている人にとってはつまらないと思いますので、より体験的な話を・・。


どういう風な形にするか。それが決まっていると大分楽です。
それに、その構想が形として残っていると、考える時の余力が別のことに使えた気がします。

過去の私の話ですが。
一人で作業をしているため、設計などをどこかに書くことはあまりせず、基本的には頭の中に入っている状態で進めることが多かったです。

ですが、今回。

・どういった内容にしていくのか
・何を扱うのか
・これからの作業として何が残っているのか

それを、note であったり、メモであったりに残していました。

私は一つのことを考えていると、他のことが疎かになりがちです。
そんな中、既に形として、視覚的に認識できる状態ですと「あれ、本当にこれで良いの?」や「○○の場合はどうなる?」という考える余力が生まれ、作業がしやすかったように思えます。

もちろん、全部を残すことができたら素晴らしいです。でも、全部を残すということは、残すための作業が生まれていた。という意味でもあります。
本当に価値があるものだけを残す。これが、最も効率が良い進め方だと痛感しました。


もう一つ、大事だな…と思ったことがあります。

「最低限の形として何を作るのか?」
それを見極めることが重要だと思いました。

今回であれば、ER図を出力するための方法として
「H2経由での生成」を優先し、
「データベース経由での生成」は捨てました。
・・まあ、最終的には両方ともやっているんですけど。

この線引きは、人によって違うと思います。絶対に違います。
だからこそ、協議し、落としどころを見つけることが大事なのだと思います。

今回は一人作業なので協議なんてものはなかったんですが、この進め方をした利点がありました。
1. すでに一つできていると安心感
2. もしも別の方法の実現に時間がかかったりうまくいかなくても焦らない

実は、この進め方を イテレーティブ と言います。
絵で例えると、ラフ画を書いて、線画を書いて・・・という徐々に完成に近づけていく進め方ですね。

この考え方を踏まえると他にも「拡張性が・・」という意見も出てくるのですが、現在拡張することなんて何も考えていないので、挙げませんでした。

感じた利点はすべて、精神的なものです。
「ここまで出来上がっている」、「目で見て分かる」というのは、やっぱり安心します。でも、
「途中でリタイアしても良いよね・・。」という気持ちがなかったのか?と言われると、正直あります。

最初は「よし、作るぞ!」というモチベーションがあるのですが、
続けていくと「やめたい・・」という気持ちになってきます。不思議です。
今回は、note に書いていたから積極的に進められた。というのは大きいです。

この場で、よく分からない記録に目を通していただけた方に感謝を。
「スキ」をしてくれた時には、励まされました。


さて、無事作成も終わりましたので
これらの使い方などを宣伝する記事を作ります。

自分のために作ったものですが、やっぱり、
良いねと思ってもらえて、使ってもらえる
というのは、とても嬉しいです。

自分で作ったからには、もちろん理由があります。
今回であれば、その理由は既に書いてました・・。

以前作ったものとかもありますので、それも含めてとことん宣伝をします!
多分、システムエンジニアで同じ悩みを持っている人ぐらいにしか刺さらないでしょう…。でも、めげずに書く予定です!


読んでくださった方、ありがとうございました。

これにて

第一部~完~

みたいな感じですが、何か
「○○で困っています!」や「○○ってどうにか便利にできないですかね・・?」という意見があれば教えてください。
で、「なんとかできそうだな…」と思ったら作りたいと思います。もしも他のシステムエンジニアの方で、一緒に開発をしてみたいという方がいれば、お声掛けください。そこそこの貢献をしたいと思いますw

それでは、別の記事でお会いしましょう。

前へ     5

作成したものの宣伝記事は下記になります。


いただいたサポートは、今後の創作活動に役立てさせていただきます。