3
6

More than 3 years have passed since last update.

GitPod と Eclipse/Che の使い分けポイント

Last updated at Posted at 2020-09-09

TL;DR

  • 開発をコンテナ 1 個で軽量に行いたいなら GitPod
  • バックエンド DB など複数コンテナが要るなら Eclipse/Che。1

両者の違い

以下、結論だけ書かれても納得行かない方々のために。

違わないところ

両方とも、Eclipse/Theia を IDE というかエディタ UI として持ち、ワークスペースがコンテナ仮想化された環境で動きます。GitHub との親和性は GitPod のほうが上ですが、Che も VSCode 用のプラグインを流用することで、プルリクなどを IDE 内で管理できます。

ながらく「GitPod は OSS じゃないから」っていうネガティブポイントがあったのですが、既に OSS 化されたので、その点でも差がなくなってしまいました。

どちらでもいいよね、という感じがしなくもないかもしれませんが。思想的な違いはあります。それが大きく反映されているのは、コンテナの数です。

起動設定ファイルで見る違い

GitPod の起動設定ファイルを見てみましょう。通常 .gitpod.yml で定義されます。

# The Docker image to run your workspace in. Defaults to gitpod/workspace-full
image: <your-workspace-image>
# Command to start on workspace startup (optional)
tasks:
  - init: yarn install
    command: yarn build
# Ports to expose on workspace startup (optional)
ports:
  - port: 8000
    onOpen: open-preview

公式ページ にあるサンプルを引っ張ってきました。

ここから読み取れることは、ワークスペース用のイメージは 1 個で、タスクの設定と開放するポートを指定できる、です。シンプル。

さて、Eclipse/Che の起動設定ファイルを見てみましょう。通常 devfile.yaml で定義されます。

GitHub で公開されているものを引っ張ってきました。GitPod と同じく Node で yarn を使用する想定の内容です。長いので、ざっと眺める程度で次の文章まで飛ばしてください。

---
apiVersion: 1.0.0
metadata:
  generateName: nodejs-mongo-
projects:
  -
    name: nodejs-mongodb-sample
    source:
      type: git
      location: "https://github.com/che-samples/nodejs-mongodb-sample"
components:
  -
    type: chePlugin
    id: che-incubator/typescript/latest
    memoryLimit: 512Mi
  - 
    type: chePlugin
    id: ms-vscode/node-debug2/latest
  -
    type: dockerimage
    alias: nodejs
    image: quay.io/eclipse/che-nodejs10-ubi:nightly
    env:
      # The values below are used to set up the environment for running the application
      - name: SECRET
        value: 220fd770-c028-480d-8f95-f84353c7d55a 
      - name: NODE_ENV
        value: production
    memoryLimit: 512Mi
    endpoints:
      - name: 'nodejs'
        port: 8080
    mountSources: true
  -
    type: dockerimage
    alias: mongo
    image: docker.io/centos/mongodb-36-centos7
    memoryLimit: 512Mi
    env:
      - name: MONGODB_USER
        value: user
      - name: MONGODB_PASSWORD
        value: password
      - name: MONGODB_DATABASE
        value: guestbook
      - name: MONGODB_ADMIN_PASSWORD
        value: password
    volumes:
      - name: mongo-storage
        containerPath: /var/lib/mongodb/data 
    endpoints:
      - name: mongodb
        port: 27017
        attributes:
          discoverable: 'true'
          public: 'false'
commands:
  -
    name: run the application
    actions:
    - type: exec
      component: nodejs
      command: npm install && node --inspect=9229 app.js
      workdir: ${CHE_PROJECTS_ROOT}/nodejs-mongodb-sample
  -
    name: Debug remote node application
    actions:
    - type: vscode-launch
      referenceContent: |
        {
        "version": "0.2.0",
        "configurations": [
          {
            "type": "node",
            "name": "Debug (Attach) - Remote",
            "request": "attach",
            "port": 9229
          }]
        }

GitPod に比べて、下記の点で大きな違いがあることに気づくでしょう。

  • 使うプラグインが指定されています。(上記では che-incubator/typescript/latestms-vscode/node-debug2/latest )
  • 2 つの docker イメージが (nodejsmongo) が指定されています。
  • マウントボリュームが指定されています。
  • どの git リポジトリからソースコードを引っ張ってくるのかが明示されています。

多くの要素は配列なので、もっと多くのプラグインや docker イメージをサポートできそうと読めます2

優劣はない。使い分けが必要。

単一の Git リポジトリで済み、外部のデータベース等を使わないケースでは、GitPod が向きます。
しかし、上記のような、イミュータブルな外部データベース(上記の例では MongoDB)を絡めた開発を行いたい場合には、 Eclipse/Che が向きます。

複数人開発などで、プラグインも含めた開発環境の完全統一が求められる場合には、Eclipse/Che が向きます。
反対に個人開発で、開発環境の再現性はさほど興味がない場合には GitPod が向きます。

これは、Docker における、docker コマンドのみの身軽さを採るか、docker-compose を使った環境再現性を採るかに、似ている選択かもしれません。

まとめ

両者とも、GitHub Coespaces への強力な OSS オルタナティブです。(GitHub Codespaces もまた便利ですが :sunglasses:)

うまく使い分けて、開発環境構築の手間を低減して行きましょう。


  1. 実は Eclipse/Che は「Theia 以外もエディタにできる」という超ヤンチャな技があるのですが。本稿では、Che でも大人しく標準エディタである Theia を使う、という前提を置いてます。 

  2. 実際できます。 

3
6
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
6