manager(略称SPM)で,本連載でも第38回をはじめあちこちで紹介しているのですが,今回は実践編ということで実際に筆者がGitHubで公開しているモジュールを通して解説を進めていくことにします。パッケージをサポートしたたいていの言語では,最初のパッケージのひな形を一発作成してくれるコマンドが存在します。Tests/MyModuleTests/XCTestManifests.swiftと最低限必要なファイルが生成されるわけですが,トップディレクトリの作成自体は行わないのがちょっと不思議ではあります。MyModuleとディレクトリ名が指定されている場合は1コマンドで済むようにして,指定がなければカレントディレクトリをトップにするという仕様にしたのですが。それはさておき,この状態ですでにパッケージとしてはビルドしてテストに成功する状態になっています(図1⁠)⁠。secondsあとはここから.swiftなファイルを編集したり,Sources/MyExampleディレクトリ以下にSwiftソースファイルを追加したり,Tests/MyModuleTests以下にテストコードを追加したりしていくわけですが,最初にやっておくべきなのが.gitignoreの差し替え。SPMが生成してくれるものは,.DS_Store/.build/Packages/*.xcodeprojしかないのですが,実際にXcodeも併用する場合はプロジェクト自体はリポジトリに含めつつプロジェクト内の不要なファイルだけを外すようにしたいですし,SPMだけでなくCocoaPodsやCarthageなどのSPMの「先輩」たちとも共存させたい。GitHub自身がメンテナンスしているgithub/gitignoreにSwiftが含まれているので,ここにあるSwift.gitignoreと差し替えるのがよいでしょう。initとしてもよいでしょう。-aしておきましょう。モジュールはなるべくモジュラーに次に行うべきは,Package.swiftの編集。[]の中に.packageを追加しておきます。)が追加されています。これはexpやsinといった,Foundationで追加される数学関数をFloatingPointMathというプロトコルに準拠する型Tの型関数,つまりT.expやT.sinとして明示的に指定して使えるようにする,つまり名前空間をプロトコルとして提供するためだけのモジュールですが,これを別モジュールとして分離したことで,swift-bignumなどとのコードの重複を防いでいます。名前空間をプロトコルとして提供することで,Double.sqrtがComplex.sqrtと別物として利用できてコードの見通しが向上します。1}余談かつ私見ですが,Foundationはあまりに多くの関数をトップレベルにimportしてくれるおかげで小さなプログラムを手軽に書ける反面,見通しはよろしくない。logは対数なのかログなのか......JavaScriptでもMath.logとconsole.logと一目瞭然なのに。FoundationはObjective-Cのレガシィを背負ったモジュールである以上,よりモジュラーなFoundation相当は別途用意すべきなのかもしれませんが。モジュール著者プロフィール小飼弾(こがいだん)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.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。