また誰得な妄想ネタですみません><
突然ですが、Objective-Cでパターンマッチがやりたいんです。MLだとかOCamlだとかScalaだとかみたいに。
MLの例: http://kktoppa.web.fc2.com/smlnj4.html
OCamlの例: http://www.geocities.jp/m_hiroi/func/ocaml04.html
パターンマッチがないせいで、StoryboardでSegueを使ったとき、こんな何かの冗談みたいなコードを書かなくちゃいけないんです。
見ての通り、大学時代に恩師が「アホのn段重ね」と読んでいたif~elseの重ね技です。これ以外に方法がないんです。
だからこういうコードが書きたいんです。厳密には関数型言語のパターンマッチと違う気がしますしなんか色々とメチャクチャな文法になってますが、だいたいなんかこんな感じのコードが。
しかし残念ながらObjective-C (CでもC++でもいいですけど) の文法を捻じ曲げるのは極めて難しいです。
Rubyならこんな感じでパターンマッチを実現するライブラリがあるみたいです。素敵ですね。
http://www.callcc.net/diary/20120303.html
https://github.com/k-tsj/pattern-match
というわけで今日もアホのn段重ねでSegueを使おうと思います\(^o^)/
2013年11月3日日曜日
2013年10月30日水曜日
【誰得】ncursesをiOS 7向けにビルドしてみた
久々のブログ投稿がこんな内容でほんとすみません。
ややタイトル出落ち感がありますが、ncursesをiOS向けにビルドしてみました。環境は以下のとおりです。
- OS X 10.8.5 (Mountain Lion)
- Xcode 5.0 & iOS SDK 7.0
- ncurses-5.9
- TerminalにはOS X付属のTerminal.appを使用
※注意: 本当に使えるかどうかまでは試してません。ちょっと根性が足りませんでした。あくまでiOS向けにC/C++で書かれたライブラリをビルドして使えるようにするときの参考になったりならなかったり程度でお考えください。
というわけで、まずはncursesのソースコードをhttp://ftp.gnu.org/gnu/ncurses/あたりからサクッと拾ってきます。今回はncurses-5.9を使用しましたがどのバージョンでも大して変わらないと思います。
あとはconfigureしてmakeすればOKですが、configureが少々厄介です。そのままだと
error: Cross-build requires two compilers.
とか言われてしまいますので、./configureの当該箇所をコメントアウトしてからオプションを付けて実行してください。それから./configureを実行した端末エミュレータ向けにビルドされてしまうようで、その挙動を変更するオプションが見つからなかったのでこちらも注意してください。私は今回xterm向けにビルドしてしまいましたがxtermエミュレータが用意できない場合はVT100などに変更した上でビルドしたほうが良いかと思います。うまくいけば無事ビルドが通ってタイトルの画像のようになります。
CFLAGSでarchとisysrootを指定してビルドする手法は他のautoconfを使っているオープンソースのライブラリでも応用できそうですね。
さてlibncurses.aはビルドできたのですが、このままでは端末エミュレータがなくてどうにもならないので、iOS用の端末エミュレータを用意しなければなりません。幸いにしてオープンソースのmobileterminalというプロジェクトを見つけましたので、こちらをお借りしましょう。ライセンスがGPLですがどうせこんな酔狂なものを人様の前に晒すことは決してないはずなので問題ありません。
あとはhttp://www.kis-lab.com/serikashiki/man/ncurses.htmlでも参考にncursesでのCUIプログラミングをお楽しみください。多分、きっと、運が良ければ、動くと思います。
参考文献:
http://d.hatena.ne.jp/maminus/20100129/1264781242 - configureのbuild、host、targetの違い
https://twitter.com/moriyoshit - @moriyoshi
2013年5月15日水曜日
「モバイルアプリのバックエンド(Web API)に特化したサービスのまとめ」のその後(2013年版)
1年ほど前にモバイルアプリのバックエンド(Web API)に特化したサービスのまとめというBaaSサービスについて非常に丁寧にまとめた記事が公開されていたのをつい最近知ったのですが、公開から1年が経ちBaaSサービス周りも統合再編が起きているようなので誠に勝手ながら2013年版を引き継いて書いてみようかと思います。
まずBaaSについて基本的なところはlaisoさんの元記事が素晴らしく良くまとめてくださっていますのでそちらを参照してください。
2013/05/16追記: こちらのSlideshareにも2013年現在のBaaSサービスを取り巻く状況が非常に丁寧にまとめられていますので、オススメです。
その結果、はっきりと人気がある勢と人気がない勢が分かれました。
https://www.stackmob.com
実際に使ってみたわけではないのですが、多機能さが目につきます。元記事で言われていたサンプルが動作しないなども直っているようです。しかしながらクラウド側コードをJava/Scalaという結構ガッツリ系言語で書く必要があったりして、お手軽さがParse.comなどと比べて今ひとつ、売りの機能面では最近赤丸急上昇のKinveyに遅れを取っている印象があります。
機能一覧はこちらから。
Parse.com
http://www.parse.com
最近Facebookに買収された、BaaS分野では一番の知名度を誇ると思われるサービスです。以前に実際に使ってみた時の感想など書いてみましたが、ドキュメントとクライアントSDKが極めて充実しており、導入が非常に簡単なのが良いところだと思います。まず困ったら比較基準元としてとりあえず使っておけるサービスとしてオススメできます。
反面、お手軽なぶん機能面では外のサービスに及ばない箇所が見受けられます。特に既存データとの接続が直接的にはサポートされていなかったりするため、エンタープライズ系のサービスには向かないと思います。
機能一覧はこちらやこちらが参考になるかと思います。
Kinvey
http://www.kinvey.com
最近トレンドサーチで赤丸急上昇なサービスです。路線としてはStackMobのような多機能でエンタープライズ系も狙えるような路線になっていますが、見た感じクラウド側コードもJSで比較的お手軽に書けるのがいいですね。iOSのSDKだけを見れば、Core Dataのサポートがあったり、NSNotificationで状態通知を飛ばしていたりするなど何かと多機能で嬉しいです。課金がAPI呼び出し数ではなくアクティブユーザー数単位だったりするのもユニークなところです。
機能一覧はこちらやこちら、またはこちら。
Appcelerator Cloud (元Cloudfish)
http://www.appcelerator.com/cloud/
CloudfishがTitaniumの開発元であるAppceleratorに買収・統合されました。Titaniumを使っている人は事実上全員がターゲット層になりますし、根強い人気が今後も期待できそうです。
https://cloudmine.me/
ちょっとドキュメントを見てみただけでダメそう感が伝わってくるのがなんとも。
Buddy
http://buddy.com/
どうもクラウド側コードを走らせる機能が無さそうです。イマイチ。ゲームAPIなどが最初から用意されているのですが、内容を見ても(少なくとも日本では)余り使える内容に見えません。
QuickBlox
http://quickblox.com/
LocationやVideo Chat、Content RankingなどのB2Cアプリ向けのサービスが標準提供されており、そういう用途だと良いかもしれません。
yorAPI
http://www.yorapi.com/
サイト自体が潰れてます。
http://www.baasbox.com/
完全にオープンソースなのが売りみたいです。ScalaのPlay!フレームワーク上に実装されており、自分でJVMの動作するサーバを用意すれば環境を構築することができます。弱点は機能がまだほぼ皆無でクライアントSDKもまったくないことです。要するにまだ全然使えません。一応クライアントSDKはリリース予定があるみたいです。
appiaries
http://www.appiaries.com/jp/index.html
ついに登場した日本のBaaSサービスです。が、残念ながら現地点では機能が大きく人気のある勢に対して劣っており、クライアントSDKもクラウド側コードもどうやらまだ存在しないようです。現段階ではオススメしづらいですが、今後どうなるか次第ですね。
Kii
2013/05/16追加
http://www.kii.com/
もう一つの日本のBaaSサービスです。appiariesよりも完成度が高くParseにサービス内容と料金体系が似ています。iOS/Android向けのクライアントSDKもきちんと用意されていますが、クラウド側コードはまだ準備中になっており使用出来ませんでした。特徴的な点としてアドネットワークとの連携が標準で用意されていたり、ファイルストレージにゴミ箱機能や共有機能があったりします。実際には試せていないのですが、サーバが日本にあるため応答性が良いかもしれません。
機能一覧はこちらやこちら。こちらのスライドも非常によくまとめられていてわかりやすいです。
Windows Azure Mobile Services
2013/05/16追加
https://www.windowsazure.com/en-us/develop/mobile/
Microsoftが提供しているWindows AzureクラウドのMobile向けサービスです。クライアントSDKもWindows/Android/iOSに対応済み、クラウド側コードをJSで記述可能、さらにはcronに相当するクラウド側コードの定期実行も可能と、こういったところはさすがのMicrosoftという印象を受けます。ただしクライアントSDKはWindows向けのもの以外開発途中でドキュメントも貧弱、サービス内容もそれほど充実していません。Windows Azure自体との連携もあると思われますが、詳細がよくわかりませんでした。
まずBaaSについて基本的なところはlaisoさんの元記事が素晴らしく良くまとめてくださっていますのでそちらを参照してください。
2013/05/16追記: こちらのSlideshareにも2013年現在のBaaSサービスを取り巻く状況が非常に丁寧にまとめられていますので、オススメです。
2013年のトレンド
まずは元記事で上がっていたBaaSサービスの名前を片っ端からGoogleトレンドに突っ込んでみて人気度を評価してみました。その他、2013年になって登場してきたサービスがないか調べてみました。その結果、はっきりと人気がある勢と人気がない勢が分かれました。
人気がある勢
StackMobhttps://www.stackmob.com
実際に使ってみたわけではないのですが、多機能さが目につきます。元記事で言われていたサンプルが動作しないなども直っているようです。しかしながらクラウド側コードをJava/Scalaという結構ガッツリ系言語で書く必要があったりして、お手軽さがParse.comなどと比べて今ひとつ、売りの機能面では最近赤丸急上昇のKinveyに遅れを取っている印象があります。
機能一覧はこちらから。
Parse.com
http://www.parse.com
最近Facebookに買収された、BaaS分野では一番の知名度を誇ると思われるサービスです。以前に実際に使ってみた時の感想など書いてみましたが、ドキュメントとクライアントSDKが極めて充実しており、導入が非常に簡単なのが良いところだと思います。まず困ったら比較基準元としてとりあえず使っておけるサービスとしてオススメできます。
反面、お手軽なぶん機能面では外のサービスに及ばない箇所が見受けられます。特に既存データとの接続が直接的にはサポートされていなかったりするため、エンタープライズ系のサービスには向かないと思います。
機能一覧はこちらやこちらが参考になるかと思います。
Kinvey
http://www.kinvey.com
最近トレンドサーチで赤丸急上昇なサービスです。路線としてはStackMobのような多機能でエンタープライズ系も狙えるような路線になっていますが、見た感じクラウド側コードもJSで比較的お手軽に書けるのがいいですね。iOSのSDKだけを見れば、Core Dataのサポートがあったり、NSNotificationで状態通知を飛ばしていたりするなど何かと多機能で嬉しいです。課金がAPI呼び出し数ではなくアクティブユーザー数単位だったりするのもユニークなところです。
機能一覧はこちらやこちら、またはこちら。
Appcelerator Cloud (元Cloudfish)
http://www.appcelerator.com/cloud/
CloudfishがTitaniumの開発元であるAppceleratorに買収・統合されました。Titaniumを使っている人は事実上全員がターゲット層になりますし、根強い人気が今後も期待できそうです。
人気がない勢
CloudMinehttps://cloudmine.me/
ちょっとドキュメントを見てみただけでダメそう感が伝わってくるのがなんとも。
Buddy
http://buddy.com/
どうもクラウド側コードを走らせる機能が無さそうです。イマイチ。ゲームAPIなどが最初から用意されているのですが、内容を見ても(少なくとも日本では)余り使える内容に見えません。
QuickBlox
http://quickblox.com/
LocationやVideo Chat、Content RankingなどのB2Cアプリ向けのサービスが標準提供されており、そういう用途だと良いかもしれません。
yorAPI
http://www.yorapi.com/
サイト自体が潰れてます。
新しく登場した勢
BaasBoxhttp://www.baasbox.com/
完全にオープンソースなのが売りみたいです。ScalaのPlay!フレームワーク上に実装されており、自分でJVMの動作するサーバを用意すれば環境を構築することができます。弱点は機能がまだほぼ皆無でクライアントSDKもまったくないことです。要するにまだ全然使えません。一応クライアントSDKはリリース予定があるみたいです。
appiaries
http://www.appiaries.com/jp/index.html
ついに登場した日本のBaaSサービスです。が、残念ながら現地点では機能が大きく人気のある勢に対して劣っており、クライアントSDKもクラウド側コードもどうやらまだ存在しないようです。現段階ではオススメしづらいですが、今後どうなるか次第ですね。
Kii
2013/05/16追加
http://www.kii.com/
もう一つの日本のBaaSサービスです。appiariesよりも完成度が高くParseにサービス内容と料金体系が似ています。iOS/Android向けのクライアントSDKもきちんと用意されていますが、クラウド側コードはまだ準備中になっており使用出来ませんでした。特徴的な点としてアドネットワークとの連携が標準で用意されていたり、ファイルストレージにゴミ箱機能や共有機能があったりします。実際には試せていないのですが、サーバが日本にあるため応答性が良いかもしれません。
機能一覧はこちらやこちら。こちらのスライドも非常によくまとめられていてわかりやすいです。
Windows Azure Mobile Services
2013/05/16追加
https://www.windowsazure.com/en-us/develop/mobile/
Microsoftが提供しているWindows AzureクラウドのMobile向けサービスです。クライアントSDKもWindows/Android/iOSに対応済み、クラウド側コードをJSで記述可能、さらにはcronに相当するクラウド側コードの定期実行も可能と、こういったところはさすがのMicrosoftという印象を受けます。ただしクライアントSDKはWindows向けのもの以外開発途中でドキュメントも貧弱、サービス内容もそれほど充実していません。Windows Azure自体との連携もあると思われますが、詳細がよくわかりませんでした。
登録:
投稿 (Atom)