プログラミング的な何か、あと自転車日本一周とかスマートフォン用の表示で見るプログラミング的な何か、あと自転車日本一周とかこの広告は、90日以上更新していないブログに表示しています。勉強のために自分で書いてみたいコードを探していたところ、以下の記事を発見。書き直してみることにしました。作るものボイド(Boids)という人工生命シュミレーションプログラムを作ります。詳しくは元記事を参考にしてください。完成品はこんな感じとなります。対応のブラウザでないとデモは表示されません。Clojure(ClojureScriptを含む)のプロジェクトを便利に管理するためのツール。コンパイルを自動で行える。何かを作るならこの二つはデファクトなんで何も考えずに利用しましょう。コマンドでプロジェクトのひな形を作成します。:advanced}}]}):dependenciesにclojurescriptを追加。:pluginsにlein-cljsbuildを追加。:cljsbuildを追加。source-pathsにソースコード(main.cljs)を置くsrc/cljsを指定。compileにmain.cljsをコンパイルしてできたjsファイルの出力先(output-to)として、resources/public/js/main.jsを追加。compileに最適化オプション(optimizations)として、advancedを指定。コンパイルオプションちょっとだけ補足しておきますが、ボイドのプログラム作成には関係ないので読まなくても良いです。trueを指定しています。このオプション指定だとコンパイル後に出力されるmain.jsのコードが読める形で出力されます。:advancedオプションだと、強力な最適化を行って、コードサイズや実行にかかる時間を少なくしてくれますが、出力されたコードは読めません(頑張れば読めるのかも...)。ちなみに、以下のようなことをしてくれているみたいです。変数や関数の名前を短いものにリネームする(mungingと呼ばれる)。オブジェクトのネストを平板化する。未使用のコードを消去する。インライン関数を作成する。JavaScriptランタイムの特性に沿ってパフォーマンスを最適化する。ペーパーバックこの商品を含むブログを見る:advancedでコンパイルする際、いくつかの前提を元にコードを処理するため、処理対象のソースコードがこの前提に沿っていないと出力されたコードが期待する動作とならない場合もあることを頭に入れておきましょう。開発の途中途中、たまに:advancedでコンパイル&実行して動作確認しておくのが良いと思います。プログラム完成後、:advancedでコンパイル&実行、動かない...とならないように気をつけましょう(自戒を込めて...)。元記事のindex.htmlをそのまま、resources/public/index.htmlにコピーでおしまい。作成コード全体は、こちらで確認してください。気になる部分だけ解説しておきます。i)))))(make-boids)boidsはarrayとjs-objで表現します。はじめ、VectorとMapで表現してプログラムを作ったんですが、元のJavaScriptのコードと比較してあまりにも遅かったため書き直しました。(StackOverflowで質問したらarrayを使えと)arrayのデータへの取得、更新にはaget,asetをそれぞれ利用します。init)set!を使い、window.onloadにinit関数を設定します。"debugger;")js*を利用してJavaScriptのコードを直接埋め込むことができます。完成したプログラムには記載していませんが、デバッグ時に上記のコードを活用していました。name")こちらも完成したプログラムに記載していませんが、処理時間を計測するために上記コードを活用していました。プログラムを書くのに慣れていないので思ったより時間がかかりました。表現して作成するまでは良かったんですが、実行速度に問題があることに気づき、処理時間を計測したり、boidsの表現をarrayに変えたり、完成して:advancedでコンパイルしたら動かなかったりなんなりで時間を浪費しました。最終的に完成したコードを見て思ったのは、「JavaScriptで書けばいいんじゃないかと?」、これは自分のClojureScriptのスキルが足りないのが原因な気もします。書いたほうが良いのかなと思いました。»プロフィールid:snufkon2012年5月〜2013年2月に自転車で日本一周中をしてきました。旅の記録は自作(Clojure&Heroku)した以下のサイトに載せてあります。Journey「僕」、日本(チャリ)と世界一周します。にほんブログ村MathJaxはてなブログをはじめよう!snufkonさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。