masayuki5160's diary

名古屋でエンジニアしてます。

久しぶりにプライベートでWebサービスを作ったら気づきが結構あった

休みの日を利用して Tech Book Lab というサービスを作りました。 Qiitaにはまた技術よりの話は書くとしてせっかくなのでそれ以外の諸々を書いておきます。

久しぶりに作ろうと思ったモチベーション

理由は2つ。

  • Kotlin + Spring Boot を使ってまとまったものを作ってみたかった
  • 興味のある分野の洋書がざっとまとまった情報サイトが個人的に欲しかった

特に大きかったのはKotlin + Spring Bootでサービス開発を一通りしてみたかったことでした。

Kotlin + Spring Bootでつくる

参考にしていたのはこの本。

Kotlin Webアプリケーション 新しいサーバサイドプログラミング

新品価格
¥3,240から
(2018/9/23 15:43時点)

あとはQiitaなどをみながら開発を進めていました。 情報としてはKotlin + Spring Bootという構成ではあまり情報がなかった。 なのでJava + Spring Bootという構成の情報をあさりながら実装を進めていた。

はじめはちょっと辛いなと思っていたが今回の程度の実装内容であれば(?)そこまで苦になることはなかった。 JavaをちょいとKotlinによみかえつつ、Spring Bootのルールを徐々に学んでいく感じでした。 途中で気づいて驚いたのはJavaのソースをIntelli J にコピペすると勝手にKotlinに変換してくれること。 多用することはなかったですが慣れないうちは非常に助かるだろうなと思います。

Herokuを使っておったまげた

Herokuの存在はもちろん知っていたし、他のクラウドでも同様のPaaSはあるから選択する機会はいくらでもあった。 けど、PaaSではなく仮想サーバ上にパッケージをいれてサービスをつくることが多かった。

Herokuを選択したのはた上述のたろうさんの書いてる黒べこ本でHerokuを紹介していたことが大きい。 そこまでのこだわりはなかったのと、Google App Engineなどなど色々話は聞くのでPaaSをちゃんと使ってみようと思い使ってみることにした。

そしたら思った以上に快適でおったまげたw

Webアプリケーションをつくる敷居が下がっていることを実感

RESTのAPIでもなんでもいいんだがなんとなくPHPを今まで選んできた(主に業務とかで)。 単純にPHPerが多いことも選択の理由であるわけだがPHPを選択すると開発環境含め本番環境をつくるのもサーバーたてることなど多少は面倒だったり経験が必要だったりする印象。(PHPも便利なSaaSがあって、というのを僕が知らないだけなのかもしれないが)

一方で今回はKotlin + Spring Boot、IDEはIntelli J、本番はHerokuという構成で開発した。 シンプルにいうと今までになくサーバを意識することは全くなくて驚いた。 ローカルではIntelli Jでローカルサーバーをたて動作確認、本番へはgit pushしたらデプロイ完了。

仮想サーバ上にPHPの環境作ったりFTPサーバで画像アップしたりDBサーバ立ち上げたり、そういうのは最近の若手エンジニアの方はしてないのかも、と今更ながら気づいた。 これはこれで確かにいいことだなと思った。

Kotlin + Spring Bootは現実的な選択肢の一つだと思った

KotlinがJVM言語だからというのもあるがそれ以上にやはりSpring Bootの強力さに驚いた。 正直にいうともう少しコーディングしないとわからないことも多いしSpring Bootについてしっかり理解を深めることはまだかかりそうだなと思っている。 一方でフレームワークであるからこみいった内容を実装するのでなければこんなに強力なフレームワークもないな、と思った。

今までJavaで開発してこなかった僕でもそう感じるのだからずっとJavaで開発してきた方からするともっと驚くのではなかろうか。

SaaSを積極的に選べる企業は強いかも

どれでもいいがPaaSを環境として選べるとデプロイなど面倒なことを考える必要がなくなるのは大きいと感じた。 もちろんサービスによってはSaaSが適さない場合もあるのかもしれない。 が、最近だとGoogle App Engineでも大きなサービスでの導入事例はある。

cloudplatform-jp.googleblog.com

この規模になってくると構成については色々と検討がいるが、 こういった事例があるとPaaSを選択しない理由が徐々に減ってくる。

もちろんPaaSが絶対にいいとは思ってはなくてそれは状況によりけりだが、最初から選択肢として検討しないのはよくないという認識だ。 特に今まで仮想サーバー上に自分たちでパッケージをいれたりベアメタルなサーバーを自分たちでセットアップなんてしてるとPaaSとか軟弱だと思ってしまったりしてる方もいそうな気がする。 もしそうだと危険だな、と思う。

どの技術を選ぶのか、それが本当に大事だなと今回Herokuを使って改めて感じた。 もちろんKotlin、Spring Bootもそうだけど。

まとめ

リリースしたサービスはちょいちょい改修を進めます、地味に直したい箇所はいっぱいあるのでw 以上です、久しぶりにまとまった時間を使って実装をしてみてよかったなと思いました。

あと、相変わらずHTMLとCSSは難しいな〜と思いました、苦手だw