takeda_san’s blog

JavaFXと機械学習を頑張る方向。

Springでつらいときに押すボタンをつくった

f:id:takeda_san:20171216155400p:plain

ひと月ぐらいは、サーバ立てておきます。
(特に監視してないので、落ちてたらごめんなさい)
ここから見れます。
つらいときに押すボタン

つくった経緯

会社で『おう、来年からSpringの案件な』と言われたので。
JJUG CCCで興味を持って、やりたいと言っていたけども一人でやるとは言って…
いや、弱気はいかん。やっていくのだ。

お勉強のみちのり

イチから勉強したので、ほかにも同じ境遇の方がいたら参考になるかなぁーと。
お勉強初めてこれ作るまで二週間ぐらい。
一日一時間ぐらいずつ。

今までの経験

だいぶ前にSeasar2ECサイト構築のお手伝いをしたなぁ…ぐらい。
HTMLもjsもDBもろくに触ったことがないよ!
名前は知ってるけど、何に使うのかわからないよ!
(つまり何もできないということだけど、いままで何やってきたのかは聞かないでほしい)

本を買う

まずは技術書だろうな。ということで書店へ。
いつも、池袋のジュンク堂にいきます。
3冊ぐらい新しめの本があって、買ったのは『Spring徹底入門』って本。
ちょうど案件で使うMyBatisが帯に書いてあって、中身も図が多くてわかりやすそうだな~ということで。

んで、1章から律義に読んでたんだけど、飽きるね、これ…
なんか正しく、もれなく解説しようとしててありがたいんだけど、いつまでも動かして遊べないので退屈。
というわけで、最後の方の13章のSpringBootから読み始めて、わからないことがあったら前に戻るみたいな読み方をしてました。
(この読み方も本の冒頭でオススメされてました)
実際に動かしながら、エラーとかわからんところを探すというのが実際に身に付きやすくてよかったなぁと。
ちゃんと読んだのは13章、14章ぐらいでした。
14章のチュートリアルでは、アプリケーション層とドメイン層でのパッケージの分け方にも言及されていて、大変お勉強になりました。

あと、サンプルコードを出版社HPにダウンロードしにいったついでに気が付いたんですけど、幻の15章がPDFで配布されてました。
15章はSpring Batchについて書いてあるみたいです。
ちょうど案件でも使うので得した気分。

自分でつくってみる

技術書読んだ後、Spring完全に理解した感あるので自分でなにかつくってみる。
ページ上でなんかアクションを起こして、なんかのデータをDBに保存するみたいな基本的なやつを作ります。
つらいときに押すボタン、すてきな響き。
Thymeleaf+Spring MVC+MyBatisでやっていく。
コードはここ。

github.com

まずはSpring Initializerでプロジェクトをサクッと作る。
この最初のプロジェクト設定が煩雑でまともに動くまで時間がかかりがちだと思うので、簡単にできるっていうのが素晴らしい。

https://start.spring.io/

んで、Spring徹底入門の14章のコードをパク…参考にしつつControllerとhtmlでHelloWorldします。
次にDBを作って、MyBatisでインターフェース作って、サービスクラスを作ってー(このへんも14章のコードをパク…)をしました。
いままでhibernateは使ったことはあったんだけど、イマイチ使いずらいなぁと思ってたところがあって
直接SQLを書けるMyBatisって素敵だと思いました。

ものの一週間もかからずに、目指してたものが完成しちゃいました。
これがフレームワークの力…!

うごかしてみる

なんか作ったら『みんな見て!』と思うのは当然。
GCPインスタンスを作って見れるようにしましょう。

インスタンスをサクッと作って、Javaとアプリケーションのjarファイルをアップロードする。
その後、Postgresqlインストールして、DB作ってJar実行ドーン。
(単独で動くjarが簡単につくれるのってすごい)

あと、ファイアウォールtcp:8080を開けておく。

まえに、GCPJavaを使う記事を書いたので詳しくはそちら。

takeda-san.hatenablog.com

なんか、WebサービスってもっとApacheとかTomcatとかの設定がいろいろなかったでしたっけ?
簡単に動くのはすごいが、何で動いてるのかは、もうちょっと勉強しないとだなぁ…

反省

Spring完全に理解して、Webアプリケーション余裕だと思ってたけど全然だったので反省点を書いておきます。

HTMLとjs書けない

当たり前だね。
いままでロクに書いてこなかったからね。
中・高校生ぐらいのころに、日記サイト作った以来だからね。
STS上で全部書いたんだけど、HTMLだとどんな属性が設定できるのかイチイチ検索して調べないといけなくて、ちょっぴりメンドクサイ。
世の皆様方はどうやって書いているんだろうか。

どう動いてるのかわかってない

いまだに@Autowiredが何なのかよくわかってないぐらい重傷なので、本の読んでないところをちゃんと読もうと思います。

ギョームアプリケーションはそんなに甘くない

セキュリティ関連、ログイン処理、REST API・・・まだまだ、お勉強することは山積みですね…
次はちゃんとしたフォームアプリケーション+バッチ処理を書こうと思います。