この記事は完璧なJava・Scala初心者が書くポエムです。経験不足&完全な個人ポエムですので、参考にされる方はほどほどでご了承頂きたい。(でないと責任取れん)
Play Frameworkを使って、1カ月ぐらいたったかなと思う。
ちょっと落ち着いているので、1ヵ月前の俺宛に、この1ヵ月の悲劇経験を書きつづろうと思う。
Servletと比べてわかりやすかった
CakePHPを使っていたからでしょうかね。使用時はすごくわかりやすい構造でした。
また、全く同じではないので、とある機能を探すときは「多分この辺だろ」みたいな感じで推測しながら探し当てることもできた。
MVCフレームワークを触った経験のある人には是非って感じじゃないでしょうか。
2〜3年前にTomcatでJavaを触った時にはHttpServletRequest
の扱い方がわかりづらかった。単にネットワークやプロトコルに弱い時期だったからかもしれませんが、まだPlayのほうがイメージしやすいと思います。やっぱしMVCなのがいいのかな。
Ruby on Railsとか CakePHPを触ったことあるなら、是非是非。
「form helper:?使いづれぇ!( ´∀`)つ ミ ポイ => 謎の「IllegalStateException: No value」の嵐!
Playのform helperは使いづらかった。「なにこのDiv?!」、「どうしてここででてくるのSpan」、「なぜなぜどうしてlabel」
辛かったです。とくにBootstrapとの連携が。。。
一時期、使い方に手を焼き手放した日もありました。もう使わねーってね。
だけど、使わないと「IllegalStateException: No value」が解決できなくなりました。
formから値を取得するときにget
を使っていましたが、hasErrors
でキャッチされたformはgetすることができず、上記エラーが発生します。
なので、form helperを使ったほうが安全に取り出せることができました。
しかし、checkboxとかhelper使わないほうが実装しやすい場合もありました。
時には使い、時には使わないという手法でできるようにはなりました。あんまり頼りすぎるのもダメかなという結論に。
Scala・・・・!((°ω°#))プルプル
だいたいこいつにハマりました。
嫌々がらずに向き合って早めに構文を理解すべきでした。なんとなくでうっていたらめちゃくちゃハマって1日パァなってことがいっぱいありました。
私は、ドットインストールを参考にしているので、Scalaがないから入門を諦めていましたが、周りから色々教えてもらいました。結構あるんですね。入門サイト。
また、Scalaはインタープリタがあるので、近々の休日は1日中Scalaを打ってみて慣れてみようかなと思う。
どのプログラム言語もそうですが、慣れるまでひたすら打ち続けるということが近道だと思うので。(私だけかもしれませんが)
まずは入門から先にやりなさい! あとからひどいことになるので。
デプロイがわかりづらい。。。
初めてサーバへアップしたときは、苦難の連続。
そもそも起動しない。原因はヒープエラー。サーバインスタンスのスペックをあげて解決しました。メモリ2GB以上はほしいところ。
あと、バックグラウンドで起動する方法がわからなかった!
運用が心配
静的言語を使っているので、コンパイルでエラーがわかります。
しかし、私はJavaをメインに使っていますので、ぬるぽとの戦いに明け暮れていました。
また、それが原因でよくわからないエラーが発生することも少なくなかったです。
一番いやなのは、勝手にダウンする現象。。。ヒープエラーと、ポインタエラーみたいなやつがありますが、ヒープエラーはまだしも、ポインタエラーはやめてほしい。。。原因を探すの大変だし。何よりそんなハードルが低く急にダウンされるとびびる。
この辺はテストを多くすること。あとはぬるぽを発生させないようなプログラミング力が必要かなと思っています。
しかし、それでも私は初心者&人間なので、これからが怖い。。。((((;゚Д゚))))ガクガクブルブル
なれるまで心配です。
ドキュメントは何度か見なおした方がいい
ほとんどの問題はドキュメントで解決しました。最初全くわからないので、すぐブログ記事をみにいったり、stackoverflowで検索をかけまくり、疲れた(´Д`)ハァ…って顔でドキュメントを見なおしてみると、ちゃんと読んでないことが多かった。
でも載っていない場合もありますので、その場合は質問サイトや知っている先輩に質問したほうがいいと思います。
できなかったこと(今後できるようになればいいなぁ…)
同じModelを使い、ページ毎でバリデーションを変更する。または動的に変更する(できるんのかね?)
おんなじModelを使うんだけど、ページが2つあって、片方はバリデーションゆるゆるにして、もう片方のページはキツキツにしたい。
色々調べたけど、JSRにgroup
って機能があってそれを使えば?って記述があったんだけど、結局のところよくわからないままでJavascriptでやってしまった。
assetsの追加(public/ともうひとつprivate/を追加)
公開ページとログインしないと閲覧できない非公開ページを作った時に、非公開ページに画像ファイルを配置するプログラムを作った。
しかし、保存するディレクトリはpublic/であったので、公開側にリンクはないが、辿り着けばどこでも閲覧できるような状態になってしまった。。。
そこで、非公開ディレクトリを用意すべく、privateってディレクトリを作ったんだけど、assetsの追加方法がよくわからない。。。
方法がネットにはごちゃごちゃあるんだけど、一番現実的なのはplayframeにClassを追加したほうがはやそうでした。もちろん私はあきらめました^^
画像やファイルのアップロードは「~/public/」には配置しないでね
stage
で運用しているプロジェクトでファイルをアップロードする処理を用意した。
しかし、なんどアップしても404エラーで確認することができない。でも実ファイルはサーバへアップされている。
できるようになれるかなぁ(´・ω・`)ショボーン
しかし、ここで後日談。
こまったときの質問サイト。そして回答して頂けました!!!
どうやら、stage
時に~/public/
ディレクトリはjar
化されてしまうので、あとから追加してもダメらしい。
そのため、別のところに領域を用意してそこにアップしよう。awsのs3とかどうかな。
これからどうなる?どうする?
心配なのは廃れていくことです。導入実績が少ないことからちょっと怖い。
Scalaが浸透していないこともあるでしょうから、流行とかさておきまだまだこれからだ!の状況なのかなとは思います。(多分。。。。。)
個人的には、せっかく覚えたのでどんどん他のプロジェクトでも使いたいなーと思うので、廃れると提案し辛いしさびしいのね。
なので、今後に期待したい。
あと、PlayFrameworkを使って、Herokuデビューしたい。なにかいいアイディアないかな。
ちなみに、これは面白かった。
www.slideshare.netこれも面白かった nulab-inc.com
とりあえず、たぶんScalaを極めれってことだな。うん(恐らくあたっているんじゃないかな)