PayPal のアカウントと Odoo で、カード決済のできるショッピングカート付きのコーポレートサイト（しかも多言語！）を 30 分で立ち上げる話し


# 始めに

## Odoo とは?
[Odoo 日本語コミュニティ](https://odoo-japan.com/page/website.Odoo)によると、Odoo とは世界で最も人気のある **オープンソース**の **業務アプリケーションスイート** なんだそうです。ERP ってアレとかアレとか色々思いつきますがみんな凄く高いですよね。でもオープンソースな実装があったんですね！個人商店でも ERP が導入できる（してどうするんだというアレもありますが ^^;）時代になったんですね

[本家サイト](https://www.odoo.com)をみると、ユーザーには Auchan(フランスのスーパーです)、Danone（フランスのヨーグルトメーカーです。日本法人もあった気が...）、La POSTE(フランスの郵便局です、ちなみにフランスでもイタリアでもスペインでもポストは黄色)とフランスの会社が多いみたいですが、フランス以外でもジャンバジュースやWWF もつかってるそうです


## きっかけ
Odoo は python で実装されているそうです。その辺りも含めていろいろと興味を持ち、下記の本など読むにますます興味が深まり

<a href="http://www.amazon.co.jp/gp/product/B00VRP1TQQ/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=247&creative=1211&creativeASIN=B00VRP1TQQ&linkCode=as2&tag=grenouille0d-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00VRP1TQQ&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=grenouille0d-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=grenouille0d-22&l=as2&o=9&a=B00VRP1TQQ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
こちらは Odoo のアプリケーションを開発するためのエッシェンシャルなのですが、そもそも１章を読んでインストールして少し遊んでみて気がついたのですが、人事、財務、サプライチェーンマネジメントだけでなく **Web サイトを作る機能もかなり強力** で、eCommerce 機能付きの今時のコーポレートサイトが一瞬でできてしまいそうなパワーを感じます。それだけの為にでも使ってみる価値がありそうです
それに、これを使った結果として大繁盛して個人商店が大企業に成長してしまったとしても、Odoo 本来の ERP の優秀な機能があるので会社経営の心配もありません（杞憂）

# 本題：カード決済のできるショッピングカート付きのコーポレートサイト（しかも多言語）を30分でたちあげる

こういうのを業者さんにお願いしたらえらい時間とお金がかかりそうです。自力で 30分でできればありがたいです
以下、イタリアのとある街の街路樹の下に生えていた美味しそうなキノコを売るお店を作る、というシナリオで実際にサイトをつくってみます。写真とってたらおばさんが「ボーノ・ボーノ」と笑いながら声かけてくれたので、きっとおいしいんだと思います。

ちなみにこんなキノコです... 本当にたべられるのかなぁ...
![2013-10-29 17.32.02 のコピー.jpg](https://qiita-image-store.s3.amazonaws.com/0/46544/6c94cd17-a56a-e542-6e33-69abfbc35866.jpeg "2013-10-29 17.32.02 のコピー.jpg")


## 用意するもの
1. PayPal のビジネスアカウント
動作確認だけならダミーアカウントでできるので、本運用の予定がない場合は PayPal アカウントの取得は後回しでもいいです。本運用では必要です

2. Debian のサーバ
Odoo は Debian と相性がよいそうです。ちなみに Raspberry Pi model B+ 上の Raspbian でも以下の手順でインストール可能（ストレージを1.5GByte 程使います）で、かなり遅いけど動作しました ^^; 
DigitalOcean の月 5$ の Droplet でも快適に動きます。

## Odoo のインストール
本を参考に、インストールの手順は以下になります

0.準備

```bash:
apt-get update && apt-get upgrade
apt-get install sudo
```

1.Odoo を実行するアカウント(Odoo はセキュリティーへの配慮から 
root では起動しません)とフォルダを作成

```bash:
useradd -m -g sudo -s /bin/bash odoo
su odoo
mkdir ~/odoo-dev
cd ~/odoo-dev
```

2.git から Odoo をクローンする

```bash:
sudo apt-get install git
git clone https://github.com/odoo/odoo.git -b 8.0
```

3.Odoo (と、依存する python モジュール)のインストール

```bash:
./odoo/odoo.py setup_deps
```

4.PostgreSQL のインストール

```bash:
./odoo/odoo.py setup_pg
```

5.Odoo の起動

```bash:
~/odoo-dev/odoo/odoo.py
```

デフォルトでポート 8069 で起動します。

## 設定

### 1. モジュールのインストール
最初に起動すると以下の画面になります。いい感じで日本語です

![スクリーンショット 2015-08-12 15.36.06.png](https://qiita-image-store.s3.amazonaws.com/0/46544/5db444eb-5cdb-83b0-eac9-542e9fe8bbac.png "スクリーンショット 2015-08-12 15.36.06.png")

データベース名はなんでもいいのです。デフォルト言語もなんでもいいのですが私は一番得意な日本語にしておきました
ここで指定する password が、後で設定に利用する administrator のパスワードになります
Create Database ボタンを押して次に

![スクリーンショット 2015-08-12 15.36.54.png](https://qiita-image-store.s3.amazonaws.com/0/46544/c11981d6-7f01-7310-db5e-8312ec6babce.png "スクリーンショット 2015-08-12 15.36.54.png")

下記のようにローカルモジュールを選択する画面になります。そもそもが ERP なので CRM、Billing、プロジェクト管理、会計・財務、販売管理、倉庫管理とよりどりみどりです。これさえあればだれでも効率的で透明でスピーディーと、あまり日本的でない会社経営ができてしまいそうです。が、今回はこれらはつかいません。機会がありましたらまた別途ご報告させていただければと存じます
右上、赤い三角のビックリマークがでてますが、これは私がシンガポールサイトの digital ocean を使ったために、サーバとクライアントでタイムゾーンがあってないという親切なワーニングです

![スクリーンショット 2015-08-12 15.37.57.png](https://qiita-image-store.s3.amazonaws.com/0/46544/6bec29a3-2f5a-a2e0-eb2f-0cd7a0cc2f33.png "スクリーンショット 2015-08-12 15.37.57.png")

以下のように、タイムゾーンを日本に統一してしまいます

![スクリーンショット 2015-08-12 15.38.33.png](https://qiita-image-store.s3.amazonaws.com/0/46544/757607e7-c2c0-813f-2fc6-c85737d993d5.png "スクリーンショット 2015-08-12 15.38.33.png")

で、ずーっと下にスクロールしていくと **Website Builder, Blog, Online Event, Forum, eCommerce** といった企業ウェブサイトに関係あるモジュールが並んでいますのでこれらを順番にインストールします。依存関係のあるものは自動的にインストールされるので Website Builder を除いた 4つをそれぞれインストールします

![スクリーンショット 2015-08-12 15.39.32.png](https://qiita-image-store.s3.amazonaws.com/0/46544/1d2b7859-ddb5-a5b6-b0e6-7d10bc58517a.png "スクリーンショット 2015-08-12 15.39.32.png")

eCommerce をインストールする際に、依存関係から自動的に会計のモジュールが入ります。会計基準と通貨をきかれるので
![スクリーンショット 2015-08-12 15.41.12.png](https://qiita-image-store.s3.amazonaws.com/0/46544/36292d4c-d782-99ab-98d6-9468ffaaef61.png "スクリーンショット 2015-08-12 15.41.12.png")

以下のように日本会計基準と日本円を選択します
![スクリーンショット 2015-08-12 15.42.03.png](https://qiita-image-store.s3.amazonaws.com/0/46544/870db83c-7b88-8359-69a9-5da9f7c2f2c5.png "スクリーンショット 2015-08-12 15.42.03.png")

尚、それぞれのモジュールのインストール後は、そのモジュールのが関係する Web サイト（例えば Shop とか Forumsとか）の編集画面に遷移しますので、右上の Administrator メニューで My Account を選択してログインし、設定メニューに戻ってインストールを続けます

![スクリーンショット 2015-08-12 15.45.15.png](https://qiita-image-store.s3.amazonaws.com/0/46544/1a5a52bb-accc-43e8-6b30-3fecc65a77be.png "スクリーンショット 2015-08-12 15.45.15.png")

5つ全部インストールされましたので、設定メニューのとなりの Website メニューをクリックします
今回は説明を省略しますが、Shop の他にイベント通知、ユーザーフォーラム、ニュース、コンタクトと企業サイトに必要になりそうなものが揃っています
![スクリーンショット 2015-08-12 15.45.48.png](https://qiita-image-store.s3.amazonaws.com/0/46544/df3f3f77-9758-8c77-9c59-23c7f51b1967.png "スクリーンショット 2015-08-12 15.45.48.png")

### 2. Web ページの設定

こんな感じで英語なので、右下の add a language リンクをクリックして
![スクリーンショット 2015-08-12 15.46.23.png](https://qiita-image-store.s3.amazonaws.com/0/46544/80aff552-50b0-70cd-0cb9-a4130e27f7f5.png "スクリーンショット 2015-08-12 15.46.23.png")

言語を追加します
いろんな言語に対応してるので、将来多国籍企業に成長しても問題なしです
![スクリーンショット 2015-08-12 15.46.43.png](https://qiita-image-store.s3.amazonaws.com/0/46544/b225faf8-152d-bac7-0b97-27fc6c1761be.png "スクリーンショット 2015-08-12 15.46.43.png")

とりあえず日本語
![スクリーンショット 2015-08-12 15.46.55.png](https://qiita-image-store.s3.amazonaws.com/0/46544/6b9be49e-13ce-6a92-b8a3-3525cef8ce2f.png "スクリーンショット 2015-08-12 15.46.55.png")

こんな感じで日本語リンクが追加されました
![スクリーンショット 2015-08-12 15.47.55.png](https://qiita-image-store.s3.amazonaws.com/0/46544/0b68d93f-c624-7ba7-67d2-cd64235d505c.png "スクリーンショット 2015-08-12 15.47.55.png")

サイトがさびしいのでバナーを追加します。右上の Edit ボタンを押すと編集モードになるので、Insert Blocks から Banner をサイトにドラッグ&ドロップします
![スクリーンショット 2015-08-12 15.48.12.png](https://qiita-image-store.s3.amazonaws.com/0/46544/d68a8ddd-bdc2-79dc-0452-4c041e264500.png "スクリーンショット 2015-08-12 15.48.12.png")

こんな感じでバナーが追加されるので、タイトルを変更します
![スクリーンショット 2015-08-12 15.48.27.png](https://qiita-image-store.s3.amazonaws.com/0/46544/779fa7f8-0346-b6d4-01eb-4321be1cca35.png "スクリーンショット 2015-08-12 15.48.27.png")

変更したら Save ボタンで保存。
![スクリーンショット 2015-08-12 15.49.43.png](https://qiita-image-store.s3.amazonaws.com/0/46544/0bfe21ff-0560-5fdc-791e-6e3e3078342d.png "スクリーンショット 2015-08-12 15.49.43.png")

日本語ページは日本語リンクをクリックして開いたページで Edit ボタンをクリック。下記のように「白い所は英語の原文なので、黄色いところに訳文をいれてね」という notification が開くので OK を押して
![スクリーンショット 2015-08-12 15.50.07.png](https://qiita-image-store.s3.amazonaws.com/0/46544/c79cd935-c920-c284-fd54-82d4bf7b7632.png "スクリーンショット 2015-08-12 15.50.07.png")

訳文を入れていきます
![スクリーンショット 2015-08-12 15.50.35.png](https://qiita-image-store.s3.amazonaws.com/0/46544/c105cf37-8048-6e18-6095-04957f4d5471.png "スクリーンショット 2015-08-12 15.50.35.png")

ちょっと手抜きですが、日本語ページもできました
![スクリーンショット 2015-08-12 15.50.53.png](https://qiita-image-store.s3.amazonaws.com/0/46544/6f2ee5cf-e379-73cc-a989-f2618cfae1ec.png "スクリーンショット 2015-08-12 15.50.53.png")

### 3. 商品の登録
Shop リンクをクリックしてもまだ商品が登録されてないのでカラです
![スクリーンショット 2015-08-12 15.51.06.png](https://qiita-image-store.s3.amazonaws.com/0/46544/fb5119ae-4e4a-5e84-ed04-71581d215438.png "スクリーンショット 2015-08-12 15.51.06.png")

再度、Administrator に戻り
![スクリーンショット 2015-08-12 15.51.17.png](https://qiita-image-store.s3.amazonaws.com/0/46544/e613bef3-af06-654e-021b-248e475a93c7.png "スクリーンショット 2015-08-12 15.51.17.png")

販売メニューで商品を作成します
![スクリーンショット 2015-08-12 15.52.51.png](https://qiita-image-store.s3.amazonaws.com/0/46544/402234f0-157b-86e3-d50f-a7e782086a30.png "スクリーンショット 2015-08-12 15.52.51.png")

ポップが出ている通り、description は内部情報専用なので、お客様が心配するような事を書いても大丈夫です
![スクリーンショット 2015-08-12 15.55.27.png](https://qiita-image-store.s3.amazonaws.com/0/46544/cb6a69d2-2c50-ecb8-dbed-b6daf1291672.png "スクリーンショット 2015-08-12 15.55.27.png")

商品が追加されましたが色が薄いです。実は、登録したままだとまだ商品が publish されていません。明示的に publish して、初めて商品が公開されます
![スクリーンショット 2015-08-12 15.56.34.png](https://qiita-image-store.s3.amazonaws.com/0/46544/453a7b38-4bc8-72e6-4501-120be9d0cb07.png "スクリーンショット 2015-08-12 15.56.34.png")

商品を選択して publish にすると
![スクリーンショット 2015-08-12 15.59.56.png](https://qiita-image-store.s3.amazonaws.com/0/46544/a441e378-37ee-e5d7-20e2-0740368a3264.png "スクリーンショット 2015-08-12 15.59.56.png")

今度は奇麗に表示されます
![スクリーンショット 2015-08-12 16.00.48.png](https://qiita-image-store.s3.amazonaws.com/0/46544/f7ad50bd-bc32-ef3f-64fd-8c79e2b64003.png "スクリーンショット 2015-08-12 16.00.48.png")

### 4. PayPal モジュールの追加
PayPal 決済のために PayPal モジュールをインストールします
PayPal で検索して
![スクリーンショット 2015-08-12 15.57.28.png](https://qiita-image-store.s3.amazonaws.com/0/46544/7f0c25ab-9619-d4c0-06f7-2d9ccf5c64b3.png "スクリーンショット 2015-08-12 15.57.28.png")

インストールします
![スクリーンショット 2015-08-12 15.57.48.png](https://qiita-image-store.s3.amazonaws.com/0/46544/a2398e81-1261-8bd1-64ba-660b33a77a4f.png "スクリーンショット 2015-08-12 15.57.48.png")

### PayPal のマーチャントIDの設定
このままでも Online Shopping の動作確認は可能で、
商品をカートに入れて
![スクリーンショット 2015-08-12 16.00.58.png](https://qiita-image-store.s3.amazonaws.com/0/46544/450d86ee-9a7e-08d2-4f57-4d22eb2086b0.png "スクリーンショット 2015-08-12 16.00.58.png")

決済に進むと
![スクリーンショット 2015-08-12 16.02.48.png](https://qiita-image-store.s3.amazonaws.com/0/46544/870a5061-41c0-63a7-d129-bfed103770fd.png "スクリーンショット 2015-08-12 16.02.48.png")

ダミーですよという画面になります
![スクリーンショット 2015-08-12 16.03.06.png](https://qiita-image-store.s3.amazonaws.com/0/46544/a2822195-75de-e44e-d83d-bcbc12f6f6bb.png "スクリーンショット 2015-08-12 16.03.06.png")

再度、admin でログインして
![スクリーンショット 2015-08-12 16.03.33.png](https://qiita-image-store.s3.amazonaws.com/0/46544/024332b0-970b-4103-18a3-6c797f02a919.png "スクリーンショット 2015-08-12 16.03.33.png")

設定メニューで Payment Acquires から Paypal を選択します
Paypal Emil ID と Paypal Merchant ID がダミーになっているので、こちらに正しい値を設定して
![スクリーンショット 2015-08-12 16.04.23.png](https://qiita-image-store.s3.amazonaws.com/0/46544/a470e2fe-e9c4-7d86-90c5-e1be38915a82.png "スクリーンショット 2015-08-12 16.04.23.png")

Environment を Test から Production に変更して
![スクリーンショット 2015-08-12 16.28.25.png](https://qiita-image-store.s3.amazonaws.com/0/46544/2e8af996-3ce3-1ed1-df8e-7ad4c43d7f8b.png "スクリーンショット 2015-08-12 16.28.25.png")

再度、カートを清算すると今度はこのように、PayPalでの本番決済となり、PayPal かクレジットカードを選択して決済を受けることが可能になります
![スクリーンショット 2015-08-12 16.29.27.png](https://qiita-image-store.s3.amazonaws.com/0/46544/fd4aea02-4fd7-16fc-aa68-0a2595ec4806.png "スクリーンショット 2015-08-12 16.29.27.png")


## その他、雑多
### ポート 80 番での運用
1024番より小さいポートを利用するのには root の権限が必要なのですが、Odoo はセキュリティへの配慮から root では起動しません。そこで、Odoo のコミュニティでは[以下のように](https://www.odoo.com/forum/help-1/question/change-to-port-80-instead-of-8069-23031) 8069番 を 80 番に forward する事が推奨されているようです

```bash:/etc/rc.local
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8069
```

# 感想
とにかく簡単にサクサクとサイトができていく感じでちょっと感動しました

# futur works
Odoo Application Development.

# Threats of Validity
作業しながら取得した画面キャプチャのタイムスタンプをみていたら、ditigal ocean の droplet を作り始めたのが 15:00 頃で、最期の PayPal 決済の画面がでてるのが 16:30 頃なので、タイトルの ”30分で” の表記の Internal Validity が心配になるところではありますが、実際は途中で余計な事（洗濯物の取り入れとか）をしながらなの作業だったので、賞味 30分はホントだと思いますが、追試 WelCome です

# 参考 URL
1. <a href="http://www.amazon.co.jp/gp/product/B00VRP1TQQ/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B00VRP1TQQ&linkCode=as2&tag=grenouille0d-22">Odoo Development Essentials</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=grenouille0d-22&l=as2&o=9&a=B00VRP1TQQ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />: インストール手順はこちらを参考にしました。amazon.com で五つ星の評価ですね
2. [change to port 80 instead of 8069](https://www.odoo.com/forum/help-1/question/change-to-port-80-instead-of-8069-23031): ポート80番で運用する方法についてのコミュニティフォーラムでの議論です
3. [本家サイト](https://www.odoo.com)
4. [日本語コミュニティ](https://odoo-japan.com)
5. [AWSのインスタンス高過ぎワロタ。探せば安くて美味いところはあります](http://qiita.com/kaiinui/items/da47c9850dc09b3cf091): digital ocean や ovh といった安い VPS の紹介