サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
blog.euphonictech.com
なぜSpark? ビッグデータでデータサイエンスでマシンラーニングのアーティフィシャルインテリジェンスだからです。ビッグデータ分析はHadoopがデファクトスタンダードです、ということを最近入社した会社で生まれて初めて知りました。 SparkがあればMapReduceだけでは難しい分析やデータ処理もパパッとできてしまいます。 なぜClojure? 私はOCamlが大好きです。つまりJavaとかちょっとしんどいです。しかしSparkはJVM言語かPython(PySpark)を使うこと前提となっています。OCamlは残念ながらJVMでは動かないしPythonでもありませんので使えません。 普通だったらJavaかScalaなのですが、Javaを休日に使うのは勘弁して欲しいです。final List<String> someString = new ArrayList<String>();ってこ
Swiftの言語仕様が新しくなってたのはSwift 1.2というやつだったらしい そうだとは知らずにまた開発者に告知もなく言語仕様を変えやがったのかと思っていました。アップグレードならまあ、仕方ない。 blog.euphonictech.com で、私が一番期待しているのは言語仕様ではありません。これ以上開発者を混乱させる一貫性のないシンタックスシュガーはいりません。僕の考えた最強のプログラミング言語は好きなんですが、選択肢が他にあっての話だから。毎日チーズ入りハンバーグとかうまいけど死ぬぞ。アンダース・ヘルスバーグ氏を招いたほうがいいのではないか。 参考資料 一番わかり易い公式ブログです。2画面ぐらいにまとめてあって字も大きくてわかりやすいです。 developer.apple.com リリースノート。開発者の人しかアクセス出来ないみたいです。 developer.apple.com ち
Swiftが遅いので Haskellでオセロプログラムを書いて、それをSwiftから呼び出します。一連のghc-iosの実験はそのためのものなのでした。 blog.euphonictech.com (などGHC for iOSシリーズの記事) 今やHaskellの関数をiPhoneアプリケーションに簡単に組み込むことができます。なので書きやすい方で大事なところを書いて、Swiftはフロントエンドに集中させようと思います。 blog.euphonictech.com 一応動くものができたので、記録を残しておこうと思います。 ソースコードは github上にあります。名前はHamletといいます。 github.com 動いている様子 同じディレクトリにあるsubproc.pyというプログラムで2つのEdaxプロトコル準拠のオセロプログラムの対戦ができます。こんな感じで対戦をさせます: 単純に
前回は指し手生成部分に手を加えてみた。ここにあるよくベンチマークに使われている局面からの指し手生成スピードを測定して、先の変更がどれ位悪影響をもたらしているかを確認しておく必要がある。 当然のことながら一発で計算できるものを分割してリストをconsするコストを掛けるわけなので、当然スピードは低下する。一体どのぐらい低下しているのかをお手軽に本格的な方法で計算をしてみる。 プロファイリングは難しい 基本的にこの手のマイクロベンチマークはほとんど意味を成さないことがほとんどだ。当然ガーベッジコレクタやその時のマシンのCPUの稼働状況などに大きく左右されてしまう。実行するプラットフォームのカーネルバージョンなんかにも影響を受けてしまう。さらにベンチマーク用の小さなコードと実際に稼働する大きなコードでは最適化の程度も大きく異なってくる。当然コードのコンプレクシティが上がれば上がるほどどんどん最適化
Swiftにdoxygenが使えない Objective-Cしか対応していないことに気づきました。私は愚か者なので1ヶ月前から触ってないSwiftコードについて何も覚えていないことに気づきました。一生懸命思い出そうとするのですが、思い出せるのは初孫の名前ばかり。なのでドキュメントをきちんと書いてドキュメンテーションジェネレータできちんと一式揃えていつでも見えるようにしておかなければなりません。役所勤めが長いので書類は打ち出して手にブカブカのアームカバーをつけて頭を剥げさせて丸いメガネで見る癖があります。 今回のタイトルは「〜ってみた」とかいうタイトルがもういい加減鬱陶しいので素直に使った事実を伝えるタイトルにしました。 完成形 まずは今回の作業の完成品です。 なんかいい感じに最近チックな見栄えのナイスなドキュメントが出来上がります。これはChromeで表示したものです。 こんな感じでメソッ
日本語で読めるものに限ってみました Thell - アルゴリズム解説 リバーシソフトウェアThellの開発者によるアルゴリズムの解説。本格的なAIのための情報が非常によくまとまっているのでここをエントリポイントにしてもよいと思う。 Web archive - vsOtha リバーシソフトウェアvsOthaの開発者によるアルゴリズムの解説。サイトが消えてしまったのでWeb archiveにしかない。非常に強力なソフトウェアなのでためになる情報が多い。 Oxelon リバーシソフトウェアOxelonのページ。簡単なアルゴリズム説明があり実装を想像することができる。探索アルゴリズムやその他実装を決めかねている時に手がかりになるかも。 オセロプログラムの作り方 オセロプログラムの作り方が一から丁寧に書かれていて、初学者に全体像をもたらしてくれる。評価や盤面探索など基本をひと通り学ぶことができる。
2015-08-09:この記事にはアップグレード版があります blog.euphonictech.com この記事の入れ方は今は推奨しません。上記の新しい版を参照してください。 あけまして あけましておめでとうございます。5日はブログにまとめようと思っているオセロのAIの開発の方にかまけて更新が滞っております。 cabal hell! IntelliJでHaskellを書いているとだんだんと動作がおかしくなってきて、cabal sandbox delete -> cabal sandbox initしてコマンドラインでcabal buildする回数が多くなってきます。ついにghc-modiが動かなくなってIntelliJ上で型が表示されなくなり…詰みです。 これはcabal hellと呼ばれる現象でぐっちゃぐっちゃになった依存関係の成れの果てです。ぐちゃぐちゃの程度は色々あるでしょうが、動
You have been warned! Swiftは開発途上の言語です というわけで、またSwiftの言語仕様がガラリと変わりまして、さっぱりビルドを通りません。ぱっと見ると17個ものビルドエラー。なーんかC->C++->Ocamlあがりの私としては言語仕様というのはバックワーズコンパチブルでなんぼやというところなのですが、Swiftはそうではないようです。未来の開発者がクリーンな言語仕様で働けるようにがしがし後方互換性を殺すというのはまあ、いいのかも。 ですが、私はいましこしこビルドエラーを直さないといけないので、晒しておこうと思います。 変わったところ as of 9 Apr 2015 オーバーフロー演算子のうち(&%)がなくなったっぽい まあ、当たり前なんですが、&%がなくなりました。オーバーフローモジュロというのは意味わからないからだと思いますが、直交性のない演算子の組み合わせ
このエントリの続き Haskellでコンピュータ将棋を書く、のテンプレート - euphonictechnologies’s diary Macでコンピュータ将棋を楽しむ環境をまずセットアップしてみる。 コンピュータ将棋は基本的に思考エンジンとフロントエンドGUIがわかれていて、エンジンとGUI間はCSAやUSIといったプロトコルでつながっている。 USIの方が新しい規格のようで、ほとんどの後発エンジンはUSIに対応している。このUSIに対応したフロントエンドとしては将棋所が最も有名なようで、コンピュータ将棋界ではデファクトスタンダードとなっているようだ、が、将棋所はWindows専用アプリケーションなのでMacで動かすには細工が必要。 Macでコンピュータ将棋を楽しむには Macに対応した思考エンジンを用意して Macに対応したGUIか、将棋所をMacで動かせるようにする。 といった作業
このエントリはバージョンアップグレード版があります Haskell - 2015年のMac + Haskell + IntelliJことはじめ、あるいはghcの再インストール - euphonictechnologies’s diary このエントリも部分的に役に立ちます。 IDEじゃなきゃやだやだ! 昔々、私がプログラミングを始めた頃はまだ手元にスクリーンエディタがなくて、ラインエディタしかなかった。それでも10000行を超えるプログラムを書いていたのだから人間、開発環境なんかなくても長いプログラムが書けるんじゃないかなって気がする。でもそれは十年以上前の話、当時すでにスクリーンエディタは存在していたし、WYSIWYGワープロもあった。時間が経つに連れてTurbo C、Visual C++と順番にリッチ環境でプログラムを書くようになっていった私はついにIDEのインテリセンスがなければ関数
Haskellのパワーはなんといっても遅延評価。Ocamlから移ってきた私としては一番戸惑うのはその部分で、末尾最適化への気の払い方とかが若干違ってくる気がします。なんというか、foldl'と比べてfoldrなら必要な部分しか評価されないから無限リストも処理できるし効率もいいですよ…ほんとか?みたいな。Welcome to the world of laziness! foldlを直す - 純粋関数空間 optimization - foldl is tail recursive, so how come foldr runs faster than foldl? - Stack Overflow How Lazy Evaluation Works in Haskell | HackHands とはいえ、この遅延処理が多用されるのがゲーム木探索のようで将棋プログラムに何故coroutine
ここ数週間ずっとswiftを書いてきたのですが、swiftは 書いていてつまらない 言語仕様がちょっと頭おかしい オフィシャル言語なのにIDEが糞 未来が見えない と、ぶっちゃけ飽きてしまったので、HaskellでiOSアプリを書くという茨の道に行ってみたいと思いました。 HaskellでiOSアプリがかければ共通部分の処理はHaskellのままAndroidで動かすとか色々できそうです。ぶっちゃけHaskellからCに落としちゃえばどこでも動かせるはずです。というわけで色々探していたところ HaskellがiOSをサポート、性能を改善 というわけで、動くのは動くらしい。少し触ってみて感じを掴んでみることにしました。まずは環境をつくって"Hello, world."です。 今回の参考資料 今回は基本的にこれに従って進めていきます。 ghc-ios/ghc-ios-scripts · Git
protocolの仕様は未だに不安定 Appleは未だにこの辺りの仕様をXcodeのバージョンを上げるたびにコロコロ変えているように見えます。この情報は2014/10/25日現在私がXcode ver 6.1(611052d)で確認した内容です。 delegateってどんなだっけ おさらい。デザインパターンというやつですね。登場人物は 通知がほしいReceiver 通知ををくりたいSender と単純です。Senderはプロパティとしてdelegateをもっていて、ReceiverはSenderのdelegate変数に自分自身をセットします。 SenderはReceiverに通知するとき、delegateプロパティのReceiverに予め取り決めておいたメッセージを送って(Objective-C風の言い方。つまり予め決めておいたメソッドをコールする)、通知をします。 当然この"予め取り決め
動機 Python用の機械学習ライブラリscikit-learnは機械学習がさっぱりわからない私のような素人にも機械学習が使えるというすごいライブラリだ。正直大学時代に機械学習概論の単位を落としかけて以来、あまり寄り付かないようにしていたのだけれど、データサイエンティストっていうのは話しによればお金になるらしい。というわけでそういうスケベゴコロ満開で機械学習ライブラリに何かデータを分析させてみようと思う。 今回のモチベーションは http://blog.parosky.net/archives/2212 でツイートの文章クラスタリングを見たので、ここのところを2chのレスに変えてやってみよう、というだけの話。それだけでは華がないので、PaaSサービス上で動かしてみたいな、というところ。つまり今回目指すのは scikit-learnを使っての文章クラスタリング scikit-learnに文章
このページを最初にブックマークしてみませんか?
『blog.euphonictech.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く