LoginSignup
3
1

More than 5 years have passed since last update.

(随時更新) Nimを活用したUI/UX開発をCoreFoundation経由で。

Last updated at Posted at 2016-12-22


(随時更新) 
斜め上の意味で(?)、
(Swift + Objective-C)のポテンシャル ≒ (Nim+Spry)のポテンシャル
と捉えている。
なら、メジャーなSwiftとObjective-Cを使っておけばいいじゃんとなりそうだが、
なかなかそうはいかなそうなのが、クロスプラットフォーム開発とIoT開発。
要するに、iOS/Darwin以外の環境でSwiftを動かすのが、どうやら至難の業なのだ。
...Objective-Cを介したブリッジあたりの実装コストが高いためか。

ということで、
Objective-C + (Nim+Spry)
という組み合わせで、
クロスプラットフォーム開発やIoT開発にチャレンジしたいと思っている。
iOS開発を仕事で行っているわけではないため、
ゆっくりなメモとはなってしまうが、Cで実装されているCoreFoundationを意識すべきとの方向性は定まったため随時追記のメモ書きをさらしはじめる。

CとObjective-cの関係

Objective-cの入門書を読むと、
C++と違って、Objective-cはC言語そのものだよ、
と書いてある。
それ自体は間違っていないのだが、OSを書いているだけあって、
Objective-C クラスの依存関係はかなり複雑。

ビジュアル化例
Hackbook の依存関係図

出典 http://d.hatena.ne.jp/shu223/20140309/1394388414

Nimは、Objective-cにコンパイル可能だが、この世界に直接入り込むのは手間が大きくメリットが感じられなかった。ということで、NimをC言語にコンパイルし、
Objective-cと相互インターフェースすることとしたい。

ちょうど、
https://teratail.com/questions/14278
のQAで良い図式を書いてくださっていたので引用しておく。

C言語とObjective-Cとの呼び出し関係

C言語   |  Objective-C
関数<--+ー--メンバ関数  ○
関数ーーー+ーー>メンバ関数  ×
関数ーーー+ーー>関数     ○
     |

C言語とObjective-Cとの組み合わせ方

C言語   |   Objective-C
関数<--+--メンバ関数
 |   |   ↑
 +ーーー+ー> 関数

すなわち、相互呼び出しは、
Objective-Cのコード内にC言語のラッパーを用意すれば良い。

CoreFoundationをお手本に

Mac OS もiOSも低レベルのところはC言語で実装されている。
その中でも中心的なライブラリのひとつが、CoreFoundation。

実用ライブラリであるCoreFoundationの使われ方を学べば、

CにコンパイルされたNim/SpryとObjective-Cとの実用的な組み合わせ方が見えてくるものと考える。

---------(ここまで2016.12.23)-------------

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1