Upgrade to Pro — share decks privately, control downloads, hide ads and more …

using-play-cljc.pdf

Niyarin
November 28, 2019
230

 using-play-cljc.pdf

Niyarin

November 28, 2019
Tweet

Transcript

  1. Clojureで昔のAndroid用ゲーム を
    書き直そうとしている話
    Niyarin

    View Slide

  2. 古いAndroid Appが動かなくなった(1)
    AndroidAppが流行りだった時代のプロダクトが動かなくなった
    ・動かないよという内容のメールをもらったことで知った。存在を忘れていた。

    View Slide

  3. 古いAndroid Appが動かなくなった(2)
    流行りではなくなったのでライブラリは開発が止まっていた
    → ライブラリのWebページも消滅していた
    アプリのソースコードも紛失した(たぶん、SSDのフォーマットでこの世界から消えた)
    → Clojureで書き直そうと思った

    View Slide

  4. Lispでゲームを書いて人気取りをしよう
    Land of Lisp (ConradBarski)
    Realm of Racket (Conrad Barski達)
    Common LispでSTGを作りますがなにか? (usamimi.info)
    Clojureによる、初めての関数型プログラミング(gpsoft)
    カジュアルな言語入門系記事は初心者にうれしいかもれしれない
    参考)

    View Slide

  5. ゲーム/Android用のライブラリの選択
    思ったほど選択肢があるわけではなかった。
    Clojure on Android
    現在開発されておらず、立ち上がりも遅い(らしい)
    play-clj :libGDXベース
    ○ AndroidとDesktop用に出力できる
    ☓ 開発が終了している
    play-cljc :Webgl,Openglベース
    ○ 開発が終わっていない
    ☓ Android用バイナリは直接出力できない

    View Slide

  6. Play-cljcでAndroid
    ・js,htmlファイルを出力してくれる (初期状態でそのままビルドした結果↓)
    これをWebViewに貼れば目的は達成できそう

    View Slide

  7. WebViewにそのまま貼るだけでよいのか
    ○画像表示がローカル同一オリジンポリシーエラーで
    うまくいかない
    ・サーバーにおいたり、開発時だとブラウザの設定
    変更が必要なやつ
    D/MyApplication: Uncaught SecurityError:
    Failed to execute 'texImage2D' on 'WebGL2RenderingContext': The image
    element contains cross-origin data, and may not be loaded

    View Slide

  8. WebViewにそのまま貼るだけでよいのか
    ・許可周りの設定を加えたりすることで動かすことはできた。
    → このままいってもよさそうなのであとは実装するだけ。
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAllowFileAccessFromFileURL
    s(true);
    webView.getSettings().setAllowUniversalAccessFromFil
    eURLs(true);
    webView.setWebViewClient(new WebViewClient());

    View Slide

  9. ちょっとだけPlay-cljcに触れてみた
    ・ライブラリは標準的なゲームライブラリに近い
    ・2D 3Dの両対応
    ・OpenGLの手続きが呼べる
    ・Clojureの要素でシェーダーが書ける機能もある

    View Slide

  10. まとめなど
    ○Play-cljcはjsを出力できるので、webviewに貼ればAndroidアプリとして出せそう
    ・js+htmlだと割と長いことメンテしなくても良さそう
    ○みなさんも放置しているAndroidアプリがあれば、確認したほうが良いですよ
    ・Clojureで書き直そうとはいいませんが
    ○Clojure Advent Calendar 2019で追加情報、進捗とか書けるとよいかなと思っている

    View Slide