X標準のAPIへのアクセスでした。今回はサードパーティのC/Objective-Cプロジェクトを,Swiftから活用する方法を実例をもとに見ていきます。swift-gmpintご存じのとおり,Swiftにおける整数=Intは,C/Objective-C/C++のint同様,1ワード。64bitプラットフォームなら64bit,32bitプラットフォームなら32bitです。RubyやPythonやHaskellなど,昨今の言語では組み込みの整数を任意精度にする事例が増えています。Swiftでも任意精度の整数を扱えるようにしたいというのは自然の欲求というものでしょう。任意精度整数が組み込みでない言語でその欲求を叶える方法としては,次の2通りが考えられます。A.100%自分で実装B.既存のライブラリを活用たとえばJavaScriptでは事実上A.の方法しか採れませんが,SwiftならプランB.があります。Mathematicaでも採用されている定番の任意精度整数ライブラリ,GMPを,そのままSwiftから使えるようにしてしまえばいいのです。そんなわけで作ったのがswift-gmpintです。MacPortsでインストールしたGMPを,Swiftから使えるようにします。Homebrew派の皆さん,ごめんなさい。未確認ではありますが,本記事中の/opt/localを/usr/localにすればもしかして動くかもしれません。Start前口上は抜きにして早速試してみたいという読者は,次のようにしてください。標準出力を確認してみてください。2**1024が179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216であることなどが確認できます。main.swiftをあれこれ書き換えてみて,任意精度整数演算を楽しんでみてください。普通のプロジェクトとの違いそれでは,実際のプロジェクトをみてみましょう。プロジェクトファイル(図1)から。通常のSwiftプロジェクトとの違い通常のプロジェクトとの一番の違いは,Cフラグとリンクオプション。-L/opt/local/libが追加してあります。ほかは通常のSwiftプロジェクトと変わりません。次にプロジェクト中のファイルをみてみましょう。main.swiftmpz.swiftgmp-int-Bridging-Header.hmpz.c特徴的なのが,mpz.cとgmpint-Bridging-Header.h。Objective-C]に出てくる三角形の上2つがこれに相当します(図2⁠)⁠。前々回と前回のプロジェクトではXcode組み込みのファウンデーションを利用していたためこれらは不要でしたが,今回はGMPというサードパーティライブラリを使うため必要となります。プロジェクト名*-Bridging-Header.hという名前をつけてプロジェクトに手で追加してもOKです(図3⁠)⁠。Bridging-Header.hの追加それでは,gmp-int-Bridging-Header.hを見てみましょう(リスト1⁠)⁠。*mod);これらの関数名が,Swiftでそのまま使えます。そのまま使えるのは関数名までで,型の名前は読み替えが必要になります。CintはSwift上でInt32になりますし,char*はUnsafePointer<Int8>になります。Objective-C]にも載っていますが,実際にはXcodeのコード補完でいつでも確認できるのでそれほど気にする必要はないでしょう。IDE万歳といったところです。サードパーティ著者プロフィール小飼弾(こがいだん)1969年生まれ,東京都出身。GOのガチトレーナーのほうが有名になりつつある......かもしれない永遠のエンジニアオヤジ。https://twitter.com/dankogai,ニコニコチャンネルは,http://ch.nicovideo.jp/dankogai,blogはhttp://blog.livedoor.jp/dankogai/当社刊行書籍は『小飼弾のアルファギークに逢ってきた』『小飼弾のコードなエッセイ』など。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。