1
4

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 3 years have passed since last update.

はじめてのodooカスタムモジュール - DockerとVisual Studio Codeを使った開発環境

Posted at

DockerとVisual Studio Codeを使って、odooの開発環境を構築し、odooカスタムモジュールを作成・インストールします。

参考ページ:

はじめに

本記事では、次の3つについて、説明しています。

  1. odooのDocker開発環境を作成し、実行します。
  2. Visual Studio Code(以下、VSCode)をインストールし、Dockerにアクセスするための構成を設定します。
  3. 開発環境でodooカスタムモジュールを新規に作成し、odooデータベースにインストールします。

前提条件

この記事の内容を検証するには、次のものが必要です。

  • Windows10 Home (64bit版, バージョン 20H2)
  • Git for Windowsのインストール (git bashを使うため)
  • Docker Desktopのインストール
    Docker Desktopのインストール後、「Linux カーネル更新プログラム」のインストールが必要な場合があります。
  • PostgreSQLデータベースサーバーへのアクセス環境
    git bashで次のコマンドを実行します。
odoodb.sh
docker run -d \
  -e POSTGRES_USER=odoo \
  -e POSTGRES_PASSWORD=odoo \
  -e POSTGRES_DB=postgres \
  -v postgres11-data:/var/lib/postgresql/data \
  -p 5432:5432 \
  --name db postgres:11

  • 素のodooデータベースを備えたDockerで実行されているodooのコピー
    これにはjunari/odoo Dockerイメージを使用することをお勧めします。これについては、次のステップ1で説明します。:)

ステップ1:Docker開発環境を起動します

junari/odoo Dockerイメージを使用する場合は、次のコマンドを使用してodoo開発環境を起動できます(作業を楽にするために、シェルスクリプトファイルとして保存しておくことをお勧めします!)

odoojunari.sh
docker run --rm -it \
  --name=junari-odoo-dev \
  -v junari-odoo-data:/opt/odoo/data \
  -v junari-odoo-vscode:/opt/odoo/.vscode \
  -v junari-odoo-custom-addons:/opt/odoo/custom_addons \
  -v junari-odoo-home:/home/odoo \
  -p 8069:8069 \
  --env-file=odoo.env \
  junari/odoo \
  bash

image.png

odoo.envファイルを参照していますので、実行前にカレントディレクトリに次のファイルを作成してください。

odoo.env
DB_HOST=host.docker.internal
DB_PORT=5432
DB_USER=odoo
DB_PASSWORD=odoo
ODOO_EXTRA_ARGS= --db-filter=^%d$

ファイル追加後、再実行するとエラーが出ますので、exec winpty bashを事前に実行してから、再実行してください。

exec winpty bash

image.png

このコマンドが何をしているのかを、確認していきましょう。

  1. junari-odoo-devと名付けた新しいjunari/odooコンテナを起動します。
  2. 次のようなDocker「ボリューム」(ミニ仮想ハードディスクのようなもの)に接続します。
  3. junari-odoo-dataボリューム
    アップロードやセッションに関するodooファイルを保存します
  4. junari-odoo-vscodeボリューム
    Visual Studio Codeのワークスペースファイルを保持します
  5. junari-odoo-custom-addonsボリューム
    ここで、新しいodooカスタムモジュールを開発します
  6. junari-odoo-homeボリューム
    odooユーザー(開発ユーザー)のホームディレクトリを指定します。
    VS Codeはここにいくつかのファイルを保存します。また、コードをGitHubにアップロードする場合は、SSHキーをこのフォルダーに配置する必要があります。
  7. コンテナが実行されると、「bash」コマンドプロンプトが表示されます。

image.png

ステップ2:DockerコンテナーにアクセスするようにVSCodeを構成する

VSCodeをまだお持ちでない場合は、こちらからダウンロードしてください。
VSCodeには、コンテナ(さらには、仮想マシンやWSLも)内にいるかのように開発できる優れた「リモート開発」機能があります。これは、VS Code Serverユーティリティをコンテナ内のホームディレクトリにアップロードすることで機能しています。このユーティリティを使用して、VSCodeユーザーインターフェイスからコンテナ内で直接コードを実行できます。うまく出来ていますよね。
DockerコンテナーでVSCodeリモート開発を使用するには、最初に「Remote-Containers」拡張機能をインストールしてください。「Extentions」ツールバーボタンをクリックし、「remote」をキーワードとして拡張機能を検索し、インストールします。

image.png

これをインストールしたら、「Remote Explorer」ツールバーボタンをクリックします

image.png

odooコンテナが実行されている場合は、「Others Containers」リストに表示されます(「Others Containers」とは、まだVSCodeで開発用に使用されていないコンテナです)。

開発用のコンテナを開くには、名前の右側にある小さな四角をクリックすると(Attach to Container)、新しいVSCodeウィンドウが起動します。すると、VSCodeによって、サーバーユーティリティがコンテナのodooホームフォルダーに自動的にインストールされ、「Welcome」画面が表示されます。

image.png

ソースコードにアクセスできるようにするには、VS Codeの左上にある「Explorer」ツールバーボタンをクリックして、「Open Folder」ボタンをクリックします。
すると、「Open Folder」ダイアログがポップアップ表示されます。

image.png

/home/odoo/opt/odoo に変更し、OKボタンをクリックすると、odooコードのルートフォルダーが開かれます。

image.png

これで、準備が整いました。

ステップ3:odooモジュールを新規に作成する

このステップでは、「空の」odooモジュールを作成し、odooデータベースにインストールする準備をします。

custom_addonsフォルダを開き、その中に新規にcontact_widgetsフォルダを追加作成します。
さらにそのフォルダの中に、2つの空のファイル、__manifest__.py__init__.pyを作成します。

__manifest__.pyファイルを開き、次のとおりに、編集し、保存します。

__manifest__.py
{
    'name': 'Contact Widgets Module',
    'version': '13.0.0',
    'summary': 'Test Module',
    'author': 'My Company Ltd',
    'website': 'https://www.mycompany.com',
    'depends': [
        'contact',
    ],
    'data': [
    ],
    'installable': True,
    'application': True,
    'auto_install': False,
}

image.png

はじめてのodooモジュールを作成できました。さらに進めていきましょう。

#ステップ4:VSCode Python拡張機能をインストールし、odooを起動します。

新しいodoo開発コンテナを初めて使用するときは、そのコンテナ中にPython拡張機能をインストールする必要があります。これを行うには、コンテナーに接続されているVSCodeウィンドウ内から、Extentionsツールバーボタンを押し、Pythonをキーワードに検索して、「Install in Container junari/odoo (/junari-odoo-dev)」ボタンを押下します。「ウィンドウのリロード」を求められたら、それを実行してください。

image.png

次に行わなければいけないことは、正しいPythonインタープリターを選択することです。

image.png

Pythonファイルをクリックすると、これを行うように求められますが、そうでない場合は、VSCodeステータスバーを確認して、Python通知をクリックしてください。
※ 執筆現在、Python 3.6.9 64bitを選択しました。

image.png

次に、VSCodeにodooの起動方法を指示する「Launch Configuration」を作成する必要があります。
これを行うには、「Run and Debug」ツールバーボタンをクリックし、「create a launch.json file」リンクをクリックして、「Python」、「Python File」の順に選択します。これにより、ワークスペースの.vscodeフォルダーに新しいlaunch.jsonファイルが作成されます。

image.png

launch.jsonの内容を次のように置き換え、保存します。

launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information visit:
    // https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Odoo",
            "type": "python",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "program": "${workspaceRoot}/odoo/odoo-bin",
            "args": [
                "--db_host=${env:DB_HOST}",
                "--db_port=${env:DB_PORT}",
                "--db_user=${env:DB_USER}",
                "--db_password=${env:DB_PASSWORD}",
                "--database=odoo13",
                "--limit-time-real=100000"
            ],
            "console": "integratedTerminal"
        }
    ]
}

image.png

これで、VSCodeの「実行」領域に「Odoo」オプションが表示されます。

image.png

緑色の「Start Debugging」ボタンを押すと、odooが起動します。

image.png

ステップ5:カスタムモジュールをインストールします!

これですべてが実行されます。ブラウザで http://localhost:8069/ を起動し、odooデータベースにログインします(admin/admin)。

image.png

Appsモジュールを見ると、新しいウィジェットアプリが表示されていないことがわかるでしょう。これは、odooに新しいモジュールと更新されたモジュールをスキャンさせる必要があるためです。

image.png

そのスキャンを行うには、開発者モードを有効にする必要があります。これを行うには次の2つの方法があります。

  1. 【通常の方法】Setting -> General Settings に移動し、Activate the developer modeリンクをクリックします。
    ※初期状態ではGeneral Settingsがありません。例えば「Discuss」などのアプリをインストールすると表示されます。
  2. 【簡単な方法】?debug=1をブラウザのアドレスバーに追加してEnterキーを押すだけです。
    http://localhost:8069/?debug=1

image.png

これで開発者モードが有効になりました。Odooの「Apps」領域に、「Update Apps List」メニュー項目が表示されます。これを押下すると表示される画面の「Update」ボタンを押下し、利用可能なアプリのリストを更新します。

image.png

すべてがうまくいっていれば、検索するとピッカピカの新しいモジュールが表示されるはずです。

image.png

Install」ボタンを押してインストールし、成功をかみしめてください。

image.png

おっとー、「contact」モジュールが見つからないですって!?

__manifest__.py
{
    'name': 'Contact Widgets Module',
    :
    :
    'depends': [
        'contacts',
    ],
    :
    :
}

おわりに

本記事では、DockerとVSCodeを使った開発環境を構築し、odooカスタムモジュールを作成し、インストールしました。

  • Git、Docker、PostgresSQL実行環境を準備しました。
  • junari/odoo Dockerイメージを使用して、dockerコンテナを起動しました。
  • VSCodeをインストールし、dockerコンテナにアクセスできるようにしました。
  • odooカスタムモジュールを新規に作成しましたq。
  • Python拡張機能をつかって、odooを起動しました。
  • odooカスタムモジュールをインストールしました。
1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?