fig.write_imageを実行するとValueErrorが発生してハマった話

plotlyで作成したグラフをPDF出力とhtml出力させようとしたらハマった話の第一弾です。

### 環境
使用した環境
・Google Colaboratory
使用言語
・Python

### 実現したいこと
Plotlyで動的なグラフを作成し、作成したグラフを出力する。


```python:サンプルコード
!pip install japanize-matplotlib

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
import japanize_matplotlib 
import plotly
import plotly.graph_objs as go

# plotlyを使用するための準備
import plotly.io as pio
from plotly.subplots import make_subplots
pio.renderers.default = "colab"

# orcaのインストール
!pip install plotly>=4.7.1
!wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O /usr/local/bin/orca
!chmod +x /usr/local/bin/orca
!apt-get install xvfb libgtk2.0-0 libgconf-2-4

plt.rcParams['font.family']
plt.rcParams['font.family'] = 'IPAexGothic'

!pip install fpdf

# 「IPA」フォントをインストール
!apt-get -y install fonts-ipafont-gothic
# matplotlibのキャッシュをクリア
!rm /root/.cache/matplotlib/fontlist-v300.json

# plotlyの簡単なグラフを作成
trace = go.Scatter(
    x = [1,2,3,4,5],
    y = [10,20,30,20,10],
    mode = 'markers + lines',
    text=["A","B","C","D","E"],
    marker= dict(size= 14,
                line= dict(width=1),
                color= "red",
                opacity= 0.3
                ),
)

data = [trace]
go.Figure(data).show()

trace1 = go.Scatter(
    x = [1,2,3,4,5],
    y = [10,20,30,20,10],
    mode = 'markers + lines',
)

trace2 = go.Scatter(
    x = [1,2,3,4,5],
    y = [20,20,20,20,20],
    mode = 'markers + lines',
)

data = [trace1, trace2]

layout = go.Layout(
    title  ="2つのトレース",
)

fig = go.Figure(data, layout)
fig.show()

fig.write_image("該当ファイルを置きたいパス/test.pdf")
```
</div></details>

上記のコードを実行するとValueErrorが発生しました。

<details><summary>エラー内容</summary><div>

>ValueError                                Traceback (most recent call last)
<ipython-input-6-b33b13fc2872> in <module>()
----> 1 fig.write_image("該当ファイルを置きたいパス/test.pdf")

>4 frames
/usr/local/lib/python3.7/dist-packages/plotly/io/_orca.py in validate_executable()
   1182 for more info on Xvfb
   1183 """
-> 1184         raise ValueError(err_msg)
   1185 
   1186     if not help_result:

>ValueError: 
The orca executable is required in order to export figures as static images,
but the executable that was found at '/usr/local/bin/orca'
does not seem to be a valid plotly orca executable. Please refer to the end of
this message for details on what went wrong.

>If you haven't installed orca yet, you can do so using conda as follows:

>    $ conda install -c plotly plotly-orca
...以下割愛
</div></details>

エラー内容を見てみるとorcaをインストールしていなければするように記載されていますがインストールする記述はしており、実際にコマンドでバージョンの確認もとれています。

## やってみたこと
・[こちら](https://github.com/plotly/orca/issues/290)のサイトをもとに以下コマンドの実行
→変化無し

```
！pip install plotly == 4.7.1
！wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O / usr / local / bin / orca
！chmod + x / usr / local / bin / orca
！apt-get install xvfb libgtk2.0-0 libgconf-2-4
import plotly.graph_objects as go
```

## 解決方法
[こちら](https://stackoverflow.com/questions/58473837/plotly-missing-orca)のサイトをもとにorcaではなくkaleidoを使用するようにorcaを使用する記述を削除し以下を追記する

```
!pip install plotly
# kaleidoをインストール
!pip install -U kaleido
!pip install --upgrade plotly
```

→ValueError解消！
また、[こちら](https://github.com/plotly/plotly.py/issues/3298)にはorcaではなくkaleidoの使用が推奨されている旨の記載がありました。
しかし、新たにAttributeErrorが表示されてしまいました。。。
続きます。。。

## 参考サイト
https://github.com/plotly/orca/issues/290

https://stackoverflow.com/questions/58473837/plotly-missing-orca

https://stackoverflow.com/questions/57262385/saving-or-downloading-plotly-iplot-images-on-google-colaboratory/57272111#57272111

https://github.com/plotly/plotly.py/issues/3298