DEODERED BLOG でブロックチェーン関連の話題が多くなってきましたので、専用にBlogを立ち上げました。
Archive for the ‘未分類’ Category
Blockchain Blog
火曜日, 1月 4th, 2022Embedded
日曜日, 12月 18th, 2016DECODERED BLOG
金曜日, 6月 17th, 2016calling Haskell from Swift / Linux
土曜日, 12月 26th, 2015今月Swiftがオープンソースとして公開されました。何か試したかったのでC言語とのリンクをと思ったのですが、少し踏み込んでHaskellにしてみました。
環境: swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu15.10.tar.gz / Ubuntu 15.10
Swiftインストール:
https://swift.org/download/#latest-development-snapshots
からダウンロードした上記ファイルを解凍して、usr/binにパスを通します。
usr/lib/swift/linuxにある、libswiftCore.soをLinuxの/usr/local/libにコピーします。
とりあえず簡単なテストをするだけなので、これだけにしました。
export PATH:~/swift/usr/bin
sudo cp libswiftCore.so /usr/local/lib
sudo ldconfig
Haskellインストール:
sudo apt-get install ghc
fib.hs
module Fib where import Foreign.C.Types fibonacci :: Int -> Int fibonacci n = fibs !! n where fibs = 0 : 1 : zipWith (+) fibs (tail fibs) fibonacci_hs :: CInt -> CInt fibonacci_hs = fromIntegral . fibonacci . fromIntegral foreign export ccall fibonacci_hs :: CInt -> CInt
参考: https://wiki.haskell.org/Calling_Haskell_from_C
このコードをそのまま使い、Swiftから呼び出してみます。
fibsw.swift
import Foundation hs_start() var a: CInt = 12 let fb = fibonacci_hs(a) print("fibonacci \(a) : \(fb)") hs_end()
なんとダイレクトで呼び出せてしまいます。しかし、初期化処理とか必要になってくるので、Cのグルーコードを用意します。
fibc.h
#include "fib_stub.h" int hs_start(); int hs_end();
fibc.c
#include <stdio.h> #include "fibc.h" int hs_start() { int argc = 2; char *argv[] = {"+RTS", "-A32m", NULL}; char **pargv = argv; hs_init(&argc, &pargv); return 0; } int hs_end() { hs_exit(); return 0; }
fib_stub.hは、Haskellコンパイル時に自動生成されます。
#include "HsFFI.h" #ifdef __cplusplus extern "C" { #endif extern HsInt32 fibonacci_hs(HsInt32 a1); #ifdef __cplusplus } #endif
ビルド:
ghc -c -O fib.hs
cc -c -o fibc.o fibc.c -I/usr/lib/ghc/include
swiftc -c -o fibsw.o fibsw.swift -import-objc-header fibc.h -I/usr/lib/ghc/include
ghc –make -no-hs-main fibsw.o fibc.o fib.o -o fibsw -lswiftCore
実行結果:
SwiftがLinuxで手軽に使えると、サーバ、クライアントともSwiftで開発ができるのでいろいろと便利かもしれません。
Perfect.orgなども要注目ですね。
Update iPhone App ‘PPPPiano’
月曜日, 5月 18th, 20155年ぶりにiPhoneアプリをアップデートし、先週承認されました。(12日)
6年前にリリースした’Perfect Pitch Practice Piano’です。
https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=320982874&mt=8
iOS8で使えなくなった等のレビューがありましたので、対応させていただきました。
もっと早く対応したかったのですが、開発していたMacがクラッシュした事故もあり、リリースがかなり遅れました。
ユーザの皆様にはご迷惑をおかけしました。
また、iPhoneOS2の時代のプロジェクトファイルなので、APIやライブラリ、Xcodeのファイルが現在と大きく変わっていて、戸惑いました。画面オリエンテーション(ランドスケープにならない)や起動スクリーン(表示されない)に手間取りました。iOS側の変更でプログラムが動かなくなったとき、当時とXcodeの開発環境もかなり違うため、修正にかなり時間がかかります。長くサポートすることは大変なことですね。しかし動作したということは、よかったと思うべきかもしれません。
プログラム仕様は変更はありません。画面の部品が変わっているので、若干レイアウトをずらしました。
Macが使えなくなったとき、本当に気持ちが萎えました。他にAndroid,Windowストアアプリにも興味があったこともあり、そちらに行ってからはiOSにはほとんどノータッチ状態になってしまいました。復旧したハードディスクから過去のプロジェクトを新しいMacのXcodeで動くように少しずつ手をつけていました。最近仕事で再びiOSにかかわるようになって、モチベーションが少しずつ上がってきたのは、幸いでした。
他のアプリもできる限り対応していきたいと思っています。(互換性があやしいやつもありますが・・)
Before iOS7, After iOS7
土曜日, 9月 28th, 2013Windowsストアアプリを初公開
土曜日, 6月 22nd, 2013このブログ久しぶりになってしまいました。
今回初めてWindowsストアアプリを開発して、ようやく今日公開することができました。(広告の出方がよくないよう気が・・まだ直すところあるかも)
何度もリジェクトされたのは、プライバシーポリシーの表示の仕方に問題があったようです。チャームから参照できるようにするのと、ダッシュボードにもそれが書かれたURLを記述しないといけなかったみたいです。リジェクトコメントが機械的なので、どこが悪いのかわからないと何度も違うところを直して、リジェクトを繰り返すことになりますので注意が必要です。こういう場合は早めにサポートにメールした方がよさそうです。(日本人が相手ですし結構すばやく対応してくれます。)
あと申請してから時間がかかったことは、本人確認の認証のところです。クレジットカードで仮の支払金額(支払後返金することによって金額を明細にのせる)を入力する部分がありますが、カード会社によって支払と返金のプロセスが同時に行われた取引を明細に載せないことがあるので、この金額が確認ができないことがあります。これを知るためにはカード会社にいちいち問い合わせをしなくてなりません。この金額を入力しないと審査が全く進みません。いつまでたってもほったらかしにされます。こんなこともあってリリースまでになんと二か月もかかってしまいました。なんかもっと気をきかせて欲しいところです。
さてiPhone、Androidアプリと開発をやってきて、次はWindowsPhoneをやってみたい、と思っていましたが、日本ではWindowsPhone8が発売されなかったので、今一つ盛り上がることができませんでした。こういう開発は、仕事以外の時間を使ってやるので、モチベーションがあがらないと何も進みません。気持ちの盛り上がりが何よりも大切になってきます。幸いWindows8という新しいOSが出たことにより、新しいもの好きの私としては、技術的に大きな進化があるこのOSにとても興味を持ったため、ストアアプリの開発をするモチベーションにつながりました。WindowsPhone8の開発も同じ作り方でできるという点も大きな意欲となりました。
本題のアプリの内容ですが、PCを使っていないときに起動して時刻をメロディで告知するというシンプルなものです。(スクリーンセーバとして起動できればいいのですが・・よくわからなくて・・) はっきりいってあまり一般的なアプリでないかもしれません。(まあ私のものかこういったものが多いのですが・・)JavaScriptとSVGで、ちゃちゃと作りました。
Windowsの場合、元々他のプラットホームに比べて開発方法にたくさんの選択肢があります。その上今回新しいUIのが登場したこともあって、一つ二つのアプリではなかなかどのような開発スタイルが適しているかよくわからないのではと思っています。(現在開発中のものは、C# + XAMLで作っています。)ですのでいくつかアプリを作ってみる必要があると思っています。これからも何タイトルが作っていく予定です。
とりあえず今日は「赤霧島」で乾杯!
「Clocklavier」
http://apps.microsoft.com/windows/ja-jp/app/clocklavier/64cabc92-6777-4de5-a509-3947ba39abd3
iPhone5 ‘Beat Stop Camera’
水曜日, 11月 21st, 2012My iPhone5 App is ready
金曜日, 10月 12th, 2012久しぶりのiPhoneApp新作です。メトロノームアプリ’Dr Metronome.01’をiPhone5でリリースしました。
開発のきっかけは、以前のメトロノームアプリのユーザのでDJの方から、小数点以下のBPMのものが欲しいというリクエストをいただいたことです。最初その必要性がよくわかりませんでしたが、最近私もDJに興味がありちょっとやってみると、小数点以下のBPMがあるといいなぁと思うようになりました。
iPhone5も出たことですし、何か作ってみたいということで、初心にかえりこのアプリを作りました。
また、海外からリモート同期メトロノームアプリ’Dr Metronome:Synchronicity’でバイブに対応してほしいというリクエストがありました。バンドの練習でうるさい中メンバー同士で同期をとるそうです。バグもあったためこれもバージョンアップしました。
しばらく開発から遠ざかっていると、開発環境や申請のいろんなルールがかわっていて戸惑うこともありましたが、やはりiPhoneの開発は楽しい、とあらためて思いました。
ということで、次はカメラをつかったものをやる予定です。
Xcode 4.5
月曜日, 10月 1st, 2012iPhoneアプリの開発を初めて、三年半ほどたちますが、ここ一年くらい一休みしていました。この間Androidの開発(個人アプリ、受託など)やソーシャルアプリなどの開発をしていましたが、iPhone5の登場でまた開発を再開することになりました。
# この間、サポートがろくにできず、不都合が生じたユーザの方には申し訳ありませんでした。
まず最初の仕事としては、昔のアプリをiPhone5に対応させることです。互換性がいいとはいえ、いくつか動作しないアプリがありました。(まだ調査中ですが・・)
昔のアプリはiPhoneOS2とかで作られているので、これを最新のXcode4.5で読み込んで動作させようとすると、なかなか一筋縄ではいきません。しかし最近はiPhoneの情報がネットでかなりあるので、Googleで検索して一つ一つ解決していましした。
問題となったのは、複数の開発マシンであるMacでのプロビジョニング、複数バージョンのXcode設定項目の差異、armv6非対応などなどです。
これらの問題をクリアしていくのに、Googleが必要というのも、ちょっと皮肉ですね。
Androidでは幅広いバージョンに対応することを、よしとするのですが、iPhoneは積極的に下位バージョンを切り捨てていくようです。Xcode4.5ではarmv6非対応、iOS4.3以上となります。過去のXcodeを使おうと思ったのですが、iPhone5を接続できなかったので、(できるのかもしれませんが他に時間がかかりすぎてあまり粘りませんでした)結局、Xcode4.5でビルドしたものを最新バージョンとして、昔のアプリをアップデータしました。
アップデートだけでなく、再スタートとして新しいアプリも申請中です。’Dr Metronome.01′ という簡単なメトロノームアプリですが、とりあえず何か作ってみたかったので、開発してみました。開発にはモチベーションの維持が重要なので、このような小さな目標を達成して次に進むというやり方をいつも心がけています。
アイディアはあるので、できれば年内にもう一タイトルつくりたいと思っています。