0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

パッケージ定義ファイルの要素

Last updated at Posted at 2021-06-12

古くはビルドするための定義として下記のようなものがあります。

  • MakeMakefile
  • Antbuild.xml
  • Gradlebuild.gradle
  • Mavenpom.xml
  • Visual Studio*.vcxproj*.csproj

現代ではビルドというよりはパッケージを管理するために「パッケージ定義ファイル」を作るように変わってきています。
多くの言語や環境において、パッケージを公開するためのホームページ(レポジトリー)が1つあり、ここに公開するためには次のようなパッケージファイルを作ることになります。

  • Dart における pub.devpubspec.yaml
  • Lua における LuaRocksRockspeck
  • Node.js における npmpackage.json
  • Python における PyPl (pip) の setup.py__init__.py__main__.py
  • Rust における create.io (cargo) の package.toml
  • Ruby における RubyGemsgemspec
  • Swift における Swift Package Manager (SwiftPM) の Package.swift

サードパーティ製としても以下のようなものもあります。

  • CocoaPods*.podspec
  • CarthageCartfile
  • Libraries.io (他のいろんなパッケージ管理を取り込む形)
  • LinuxSnapcraftsnapcraft.yaml

パッケージ管理レポジトリーの役割

パッケージが公開され、それが管理されていると次のような利点があります。

  • 公開されているパッケージを検索できる。
    • このため、各開発環境があらかじめ用意している標準ライブラリ以外を「あたかも公式のライブラリ」のように扱うことができる(実質的な審査は皆無だけれど)。
    • 使用者のコメントや、ダウンロード数、評価数などを用意しているレポジトリーも多い。
  • パッケージのバージョン管理ができる。
    • バージョンアップされた際に、使用者にバージョンアップを促せる。
    • 開発時に使用していたバージョンに固定させる設定を有するシステムもある。

パッケージ定義ファイルの内容

レポジトリーに登録する際には、いくつか決まり事がありますが、
代表するファイルにいくつかの情報を記入します。

使う人向けの情報

まず使う人向けの情報として、下記の情報があります。

要素 説明
ID com.example.asoft パッケージを識別するための ID
Name Awesome Software パッケージの名称。16文字以内程度。Title ということも。
Descriptioin C library for each and every platform パッケージの説明。40文字以内程度。より詳しい説明は README.md で説明。
Version 1.0 現在のバージョン。
Homepage https://www.example.com/ パッケージのホームページ
Licenses proprietary パッケージのライセンス
Author Example Author パッケージの開発組織
Contributors Example パッケージへの寄稿者
Docs README.md ドキュメントへのリンク
Category Middleware パッケージ製品の種類。ネット、ファイルシステム、といったもの
Icon example.ico アイコン
Deprecated N/A 廃止予定であり、他のパッケージに移行すべきことを示す
TAG Audio, Compression パッケージの種類を示すタグ

作る人向けの情報

次に作る人向けの情報として、下記のような情報があります。

要素 説明
Import Dependency N/A 他のパッケージを取り込むことを意味する
Dev Dependency Platform SDK 他のパッケージに依存していることだけを示し、内包しない
Runtime Dependency VC2019 Runtime 実行時のパッケージ依存
DevEnv Dependency CMake OS や言語への依存性を示す
Language C 使用するプログラミング言語

パッケージ定義ファイルの内容

パッケージをレポジトリーに登録する際にも用いるファイルを「パッケージ定義ファイル」と勝手に読んでいますが、
各種システムで登録するファイル名やその形式、情報源となる URL を下記にまとめます。

システム 公式レポジトリー パッケージ定義ファイル名 ファイル形式 情報源
Dart https://pub.dev/ pubspec.yaml YAML https://dart.dev/tools/pub/pubspec
Lua https://luarocks.org/ rockspec https://github.com/luarocks/luarocks/wiki/Rockspec-format
Node.js https://www.npmjs.com/ package.json JSON https://docs.npmjs.com/files/package.json
Python https://pypi.org/ setup.py Python https://packaging.python.org/tutorials/packaging-projects/
Rust https://crates.io/ package.toml TOML https://doc.rust-lang.org/cargo/reference/manifest.html
Ruby https://rubygems.org/ gemspec Ruby https://guides.rubygems.org/specification-reference/
Swift N/A Package.swift Swift https://developer.apple.com/documentation/swift_packages/package
CocoaPods N/A *.podspec Ruby https://guides.cocoapods.org/syntax/podspec.html
Carthage N/A Cartfile OGDL https://github.com/Carthage/Carthage
Snapcraft https://snapcraft.io/ snapcraft.yaml YAML https://snapcraft.io/docs/snapcraft-yaml-reference
システム 公式レポジトリー パッケージ定義ファイル名 ファイル形式 情報源
Apple App https://www.apple.com/jp/app-store/ info.plist XML https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html
CMake 独自 https://cmake.org/cmake/help/latest/
Make N/A Makefile 独自 https://www.gnu.org/software/make/manual/make.html
Ant N/A build.xml XML http://ant.apache.org/manual/using.html
Gradle N/A build.gradle Groovy https://docs.gradle.org/current/userguide/tutorial_using_tasks.html
Maven N/A pom.xml XML https://maven.apache.org/pom.html
MSIX N/A appxmanifest.xml XML
Visual Studio N/A *.vcxproj XML https://docs.microsoft.com/ja-jp/visualstudio/msbuild/msbuild-project-file-schema-reference
Visual Studio Code https://marketplace.visualstudio.com/vscode package.json JSON https://code.visualstudio.com/api/references/extension-manifest
Windows Store App https://www.microsoft.com/ja-jp/store/apps/windows
Winget https://github.com/microsoft/winget-pkgs https://github.com/microsoft/winget-cli/blob/master/doc/ManifestSpecv1.0.md
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?