Skip to content

Instantly share code, notes, and snippets.

@nkmrh
Last active January 30, 2023 10:36
Show Gist options
  • Save nkmrh/8a846726e9e6fa62f8be842f412b22cc to your computer and use it in GitHub Desktop.
Save nkmrh/8a846726e9e6fa62f8be842f412b22cc to your computer and use it in GitHub Desktop.

Bazelは、Googleによって開発されたビルドツールです。 Bazelは、ビルドやテスト、デプロイなどのタスクを自動化し、大規模なソフトウェア開発プロジェクトを管理するためのツールです。

Bazelは、複数のプログラミング言語に対応しており、C++、Java、Python、Goなど多くの言語に対応しています。 Bazelは、多数のプラットフォームにも対応しており、Linux、macOS、Windowsなどで使用することができます。

Bazelは、Google内での大規模なソフトウェア開発において使用されてきました。そのため、Bazelは大規模なプロジェクトを扱うことができ、スケーラビリティに優れています。

Bazelは、ビルド設定を「BUILD」ファイルと呼ばれる特別な形式で記述します。このBUILDファイルは、ビルド対象のファイルやライブラリ、依存関係などを記述します。

Bazelは、ビルドタスクを高速に実行することができるため、ビルドやテストなどのタスクを高速に実行することができます。また、依存関係を自動的に解決するため、依存関係の管理も簡単になります。

by Chat GPT (Q: Bazel ってなに?)

参考

https://engineering.mercari.com/blog/entry/20221215-16cdd59909/

https://engineering.linecorp.com/ja/blog/line-ios-build-performance-improved-with-bazel/

https://unnnyong.com/2020/09/21/iosdc-japan-2020-bazel%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-micro-modular-architecture/

https://speakerdeck.com/ra1028/micro-modular-architecture-with-bazel?slide=63

運用にはかなりのコストがかかる

Tips: Kubernetes の開発でも Bazel が Remove された事がある https://mixi-developers.mixi.co.jp/byebye-bazel-welcome-make-b966bfd37fce

試してみる

https://github.com/bazelbuild/rules_apple/blob/master/doc/tutorials/ios-app.md

Bazel をインストールするには https://github.com/bazelbuild/bazelisk を使う

brew install bazelisk

cd $HOME git clone -b source-only https://github.com/bazelbuild/examples

WORKSPACE, BUILD file を記述する

bazel build //ios-app:ios-app

bazel run //ios-app:ios-app > Build the app in the simulator


Bazel コードリーディング https://github.com/bazelbuild/bazel/tree/531df65129f632a19ce0fd27422d55696af42511/src/main/java/com/google/devtools/build/lib/rules/apple

JAVA で実装されている

BUID ファイルは Starlark 言語で書く https://github.com/bazelbuild/starlark/ Python の方言のようなもの

https://zenn.dev/kesin11/books/c86010deb5b8008f394f/viewer/9eb544 リモートキャッシュ https://bazel.build/remote/caching?hl=ja


Buck

Buckは、Facebookによって開発されたビルドツールです。Buckは、ビルドやテスト、デプロイなどのタスクを自動化し、大規模なソフトウェア開発プロジェクトを管理するためのツールです。

Buckは、Java、C++、Objective-Cなどの言語に対応しており、AndroidやiOSなどのモバイルプラットフォームにも対応しています。Buckは、多数のプラットフォームにも対応しており、Linux、macOS、Windowsなどで使用することができます。

Buckは、Facebook内での大規模なソフトウェア開発において使用されてきました。そのため、Buckは大規模なプロジェクトを扱うことができ、スケーラビリティに優れています。

Buckは、ビルド設定を「BUCK」ファイルと呼ばれる特別な形式で記述します。このBUCKファイルは、ビルド対象のファイルやライブラリ、依存関係などを記述します。

Buckは、依存関係を自動的に解決するため、依存関係の管理も簡単になります。そして、ビルドタスクを高速に実行することができるため、ビルドやテストなどのタスクを高速に実行することができます。

Buckは、Bazelに似た機能を持っている。特に、JavaScriptなどの言語に対応していない、または、Androidなどのモバイルプラットフォームに対応していないBazelに対して、Buckはそれらに対応していると言える。

by Chat GPT (Q: Buck ってなに?)

参考

https://www.infoq.com/jp/news/2013/05/Facebook-buck-xctool-build/

https://github.com/airbnb/BuckSample

https://narlei.com/development/getting-start-with-buck-build-system/

最近の記事は見つからなかった

https://buck.build/setup/getting_started.html

arm64 に対応してなさそうだったので試しませんでした

https://github.com/facebook/buck

開発止まっていそう

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment