きそくただしいせいかつ

日々の生活のペースセッター

カスタマーサクセス

カスタマーサクセス――サブスクリプション時代に求められる「顧客の成功」10の原則

カスタマーサクセス――サブスクリプション時代に求められる「顧客の成功」10の原則

 

冬休みに読んだ本。 本書の内容は、サブスクリプションビジネスを進めていく上では、必要な考え方かなと思いました。ある程度インストールベースができたら、新規の営業よりもカスタマーサクセスのほうが重要視されるという考え方が打ち出されており、顧客側がいつでも止められるサブスクリプションにおいては確かにそのとおりかなと思いました。カスタマーサクセスを重視する上でじゃあ実際にどうすべきなの?という点も書かれています。

従来から、ロイヤルカスタマーを確保することの重要性はあったと思うのですが、契約や取引が容易になった昨今、すぐ使える・すぐ止められるので、本当に顧客のロイヤリティをつないでおくのは大変だと思われます。

製品のクオリティやその後のアフターサービスなど製品を提供する側に撮っては大変ではあると思うのですが、製造業者にとってはサブスクリプション型で直接契約のチャンスも広がっていると思われます。一方で、製品を仕入れてきめ細やかな要望に答えることで価値を出していた、代理店・販売店は、どこで価値を見出すのか難しい時代になってきているなと思います。

いずれにしても作る側に回らないとしんどいかなという印象を受けました。

オラクルクラウドをラクに使いたい - OCI の構成情報を Python SDK で Excel に出力

この記事は Oracle Cloud Advent Calendar 2018 - Adventar の15日目です。

お分かりになるかと思いますが、タイトルはダジャレです。

ということで、今回は構成情報を Excel ファイルに落とすスクリプトを作りたいと思います。きっかけは以下の本を買ったところ、 Excel ファイルを操作する章があったことです。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
 

VCN(Virtual Cloud Network) の設定をそれなりにちゃんとやったり、一杯インスタンス作ったりすると、それらを設計書等々 Excel ファイルで管理することも多いかと思うので、それを自動化することで、ラクに使えればと思います。

AWS でも同様なことを実装されている記事を見ると、APICLI で取った情報を jq で編集する、するパターンもありますが今回は Python SDK で書いてみたいと思います。私が Python 勉強したいかったので。。。
(CLI での実装はこちらも参考にしていただけるとよいかと思います。
コマンドライン(CLI)でOCIを操作する - Oracle Cloud Infrastruc... | Oracle Community)

今回は Python SDK の利用までの手順を追ってみて、サンプルスクリプトを作成してみたいと思います。私の Python のレベル感としては、以下の本に沿ってゲームを作る手前までやったぐらいなので、おかしなところがありましたらご容赦ください。

はじめるPython!  ゼロからのゲームプログラミング

はじめるPython! ゼロからのゲームプログラミング

 

Python SDK のセットアップ

Python SDK については公式のドキュメントがあるので以下に沿ってインストールします。前提として Python / pip / virtualenv のインストールが必要ですが、こちら環境によってネット上にいろいろと記事があると思いますのでそちらご参照ください。

https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/installation.html

ちなみに私は CentOS 7.5 でやっております。

まず virtualenv で今回用の仮想環境を作ります。

<code>
$ mkdir oci
$ virtualenv oci
$ source oci/bin/activate
</code>

で pip で oci パッケージをインストールします。これだけなので簡単でした。

<code>$ pip install oci</code>

あと念のために、 ssl のバージョンを確認しておきます。私の環境は OpenSSL 1.0.2k-fips だったので何もしなかったのですが、もし 1.0.1 よりも低いバージョンをお使いであれば、上記ドキュメント上にある手順でバージョンの問題をバイパスしていただければと思います。

<code>$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"</code>

Python SDK のユーザ情報の設定

次に OCI の SDK で利用するユーザの認証情報を設定し、 SDK から OCI に対する操作ができるよう、以下のドキュメントを参照しながら設定します。

https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/configuration.html

config.from_file() モジュールでは、引数に何も指定しない場合 ~/.oci/config を読み込むため、今回はこちらをそのまま作成することにします。

Configuration File のサンプルは以下にあります。

SDK and CLI Configuration File

また、 事前に API 用のユーザ (api.user) を作成し、 API 用の公開鍵を追加しておきます。以下、 OCI の CLI を使うチュートリアルにある内容を参考に実施します。

https://community.oracle.com/docs/DOC-1019624#jive_content_id_21_API_

https://community.oracle.com/docs/DOC-1019624#jive_content_id_32_API

で、~/.oci/config に以下の内容で記載します。 user や tenancy の ocid は上記のチュートリアルにも確認方法が載っていますので、そちら参照してご確認頂き、環境の内容に置き換えてください。(以下は、ドキュメントの記載をそのまま載せています。API 用の秘密鍵の場所(key_file)や region も環境に応じて変更ください。)

<code>
[DEFAULT] user=ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzjcaty5eqbb6qt2jvpkanghtgdaqedqw3rynjq
fingerprint=20:3b:97:13:55:1c:5b:0d:d3:37:d8:50:4e:c5:3a:34

key_file=~/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr4jqae5f15p2b2m2yt2j6rx32uzr4h25vqstifsfdsq
region=us-ashburn-1
</code>

Python SDK のサンプルなど

Python SDK による OCI の操作については以下にサンプルが結構あります。 (他の SDK についても oraclegithub 上にサンプルがありますので、ご参照ください)

github.com

今回のやりたいことに近いサンプルは、以下の get_all_instance_ip_addresses_and_dns_info.py なので、こちらを参考に実装していきました。

oci-python-sdk/get_all_instance_ip_addresses_and_dns_info.py at master · oracle/oci-python-sdk · GitHub

また、 Excel に書き込む部分は openpyxl で実装します。 これは前述の本を参考にしていますが、 Web 上にもたくさん情報があるのでご参照いただければと思います。

今回の実装例

以下のような実装としてみました。 Python 手習い中のため、間違いなどありましたら申し訳ありません!また、エラーハンドリングもまともにやってなくて恐縮です。。

 

  • 18-23 行目 : get_config() で config ファイルを読み込み、 config ファイルに基づいて compute を操作する ComputeClient を生成しています。 get_instance_info() で instance の情報を読み込み、 create_file() でファイルを生成します。 Compute 以外を操作する場合は VirtualNetworkClient や IdentityClient を利用する必要があります。
  • 26-34 行目 : get_config() ですが、デフォルトの場所以外にも指定できるようにしてみました。
  • 37-41 行目 : compartment id を指定してもらい、インスタンスの一覧を取得します。
  • 44-68 行目 : インスタンスの一覧を記載する箇所です。取ってきたインスタンスの情報を全部書くと冗長なので、書き出したいものだけ displayitems に一覧しています。その後は、リストの要素を順次 for ループで書き出し、インスタンスの一覧を書き出していくのですが、リストのインデックスは0から始まるものの Excel の業は 1から始まるので、 +1 しています。ここ場当たり的なので、何かもっといいかき方があるかもです。。。最後にファイル名を聞いて、 .xlsx を保存します。

そうすると、以下のように Excel ファイル (開いているの LibreOffice ですが)が、作られます。 openpyxl で列幅や背景色も指定できるので、もうちょっと作り込めば、設定書を全部スクリプトで作れるようになるのかな、と思います。

f:id:k_kane:20181215114714p:plain

Excel ファイルのイメージ

最後に

今回実装した範囲ですと、正直もっとラクな方法がある気もしますが、 SDKCLI、 Terraform などを利用して自動化していくことでラクに OCI を操作できると思いますので、ぜひいろいろと試してみて頂けると幸いです。(私も、日々ラクできるところはラクしていきたいと思います!)

PX-049A を買いました

12月に入ってからもの買いすぎなんですが、年賀状刷ろうと思ってプリンタ買いました。 EPSON PX-049A。

f:id:k_kane:20181202110212j:plain

PX-049A

これの前は PIXUS MG3130 を使っており、特に問題もなかったのですが、インク買う値段くらいで本体が買えるので、時々本体を変えることにしており、今回そのタイミングとしました。ずっとキヤノンだったのですが、4色独立がいいかなあと思ってエプソンにしてみました。以下、あんまり意識せずに買ってから気づいたこと。

  • USB ケーブルは前から見て左側
  • 電源ケーブルは後ろ
  • EPSON のサイトからダウンロードできるソフトウエアで簡単に無線 LAN でつながった、これは楽だった(ただ、ダウンロードできるサイトへたどり着くのが難しいので、ついてくる紙のドキュメントのアドレスを直打ちしたほうがよい)
  • 前面給紙じゃないので上に空きスペース必要 (これはキヤノンの方が良かったかなと思った点、ただこのおかげで高さが低く小さく見える)
  • 持った感じ軽い、あとコストカットされてる感がひしひしと感じられる、けど個人的にはいいことかなと(さすがに5000円で買えるプリンタに高級感を求めてはいけないのではと思ってます)
  • 結構音がする(静音モードがあるが、あんまり使わない気もする)、すごい勢いで印刷されて紙が出てくる
  • 部屋が明るくなるので、なんとなく白、いい

新しい機械はいいものです。

Oracle Cloud を使ってみるうえでご覧頂きたいページ

※ 今日は会社の宣伝みたいな記事です。
※ ビール飲みながら家でかいた記事なので、ご不明な点は会社ではなく私までお問い合わせください。

Oracle Cloud を使ってみようと思う方にご覧頂きたいページ(いつも私が見ているページ)をご紹介したいと思います。

なにせ、製品の多い会社なので、なかなか目的の情報が探せないこともあるかと思いまして。。

f:id:k_kane:20181128201617p:plain

第2世代クラウド (Oracle Cloud Infrastructure) の Console

コンソール

Oracle Cloud には以下のページの真ん中上のほうにある「サイン・イン」からログイン可能です。

cloud.oracle.com

また、第二世代クラウド(Oracle Cloud Infrastructure) には以下からログインすることも可能です。

https://console.us-ashburn-1.oraclecloud.com/

前者のコンソールでログインすると、様々な PaaS が使える環境に入れます。後者のコンソールでログインすると、 IaaS + Database のシンプルな環境が使えます。

前者は Identity Cloud Service という多機能な認証の Cloud サービスを利用しており、後者は Oracle Cloud Infrastructure に統合された IAM の機能を使っています。

ドキュメント

ドキュメントは DB や他の製品と同じ一覧に、「クラウド」という項目があるので、こちらから参照可能です。

OTN Japan マニュアル

クラウドのドキュメントへの直リンクは以下です。

クラウドのドキュメント - クラウドのドキュメント

上記のドキュメントからも行けるのですが、第2世代クラウド (Oracle Cloud Infrastructure) のドキュメントは以下です。

Oracle Cloud Infrastructure(日本語)

上記日本語版なのですが、翻訳に時差があるケースがあるので、以下の英語版も参照頂けると最新の情報が反映されています。(私もそんなに英語得意でないので、上記でざっくり概要掴んだ後で、詳細は英語版で確認しています)

Oracle Cloud Infrastructure

使い方的なページ

アカウント管理や課金といった使う上で知っておいていただきたい内容は下記にまとまっています。

blogs.oracle.com

また、第二世代クラウド (Oracle Cloud Infrastructure) の日本語チュートリアルは以下です。こちら参照いただくと、かなりスムーズに利用を進めていただけるかと思います。

community.oracle.com

ポリシー

Oracle Cloud がどのような規格・認証に対応しているかは以下にまとまっています。

cloud.oracle.com

また使って頂く上でのサービスのポリシーなどは以下にまとまっています。Cloud Service Agreement という文書が、クラウドを利用頂く上での基本契約になります。環境の提供方針は Hosting and Delivery Policies、 SLA/SLO などは Pillar Document にまとまって記載されています。(前者は日本語版もあります)。

Cloud Services | Oracle Contracts

また価格系の疑問などは以下の FAQ がご参考になるかと思います。

製品・ライセンス・価格・サポート契約 - FAQ -

製品情報・新着情報

製品の最新情報はブログを中心に公開されています。以下は、日本のブログになります。

community.oracle.com

第二世代クラウド (Oracle Cloud Infrastructure) の IaaS っぽい内容のリリースは以下のブログで行われています。(頻繁に機能追加があるので、そのたびにブログで更新されるイメージです)

blogs.oracle.com

上記で、広くご覧頂きたいものは、日本語訳も以下で提供されています。

community.oracle.com

また、数ある Oracle Blogs の中から、厳選したエントリが、以下でも日本語でウォッチ可能ですので、ぜひご覧ください。

orablogs-jp.blogspot.com

トライアル

ラククラウドにもトライアルがあります。トライアル期間は30日/35,000円までなのですが、トライアル中はプロモーション価格ということで PaaS であっても IaaS の費用しかいただか(IaaS の単価で高価な PaaS も利用可能)なので、かなりのリソースでテストができるかと思います。

cloud.oracle.com

上記でいきなり申し込もうとすると、何入れればいいの?となる箇所があるかもしれませんので、以下の FAQ で手順確認頂くとスムーズかと思います。

Oracle PaaS (Database、Autonomous Data Warehouse、Java、Application Container 他 )および Oracle IaaS(Compute、Storage、Bare Metal 他)の無償トライアルについて、申し込み方法や使用方法を教えて下さい。

最後に

12月ということで、 Advent Calendar も開催されています!12月15日に別の記事を書くつもりです!

adventar.org

(実は本記事も Advent Calendar 用のバックアップ(できなかったらどうしようの保険)でした…。が、なんとか時間取れそうなので、こっちは公開してしまいます、何事も早いほうがいいので!)

システム・アーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考

すごい厚さがあって随分前に買って積んでたのですが、やっと読み終えました(その間に第2版が出、さらにそちらも Kindle 版しかなくなっていた)。

システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考 (IT Architects' Archiveソフトウェア開発の実践)

システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考 (IT Architects' Archiveソフトウェア開発の実践)

 

 積んでしまっていたものの、勉強になる一冊で、アーキテクチャ図とか構成図とか書く方は一度読んでおいていいかなと思います。構成図など書いているときに、「これは何をカバーしているのか?どこまでスコープに入れるのか?」など悩みますが、この本に従えば、自覚的に表現できるのではと思いました。

とはいえ、結構冗長に感じられる箇所もあるので、これのエッセンシャル版とかあってもいいかなと思いました。(四六判で200ページぐらいの…)

次、これ読んでるんですが、またこれも長いけど勉強になる本。

詳解 システム・パフォーマンス

詳解 システム・パフォーマンス

 

 

本土寺 紅葉狩り

だいぶ紅葉も色づいてきたころあいなので、松戸の本土寺紅葉狩りに行ってきました。HTC U11 Life で写真を撮ってみました。

その前に、柏でラーメン。背油ちゃっちゃ系でおいしかったけど、油少なめにすればもうちょいスープのめたかなという後悔(スープ飲みたい派、さすがに最近全部飲みませんが)

こってりらーめん誉 (ほまれ) - 柏/ラーメン [食べログ]

f:id:k_kane:20181125123810j:plain

らーめん誉 みそらーめん

本土寺ははじめて行きましたが結構境内も広く、参道に2、3店もあって、そのわりに人も多くなく、いい散歩具合でした。紅葉は、今年あったかいせいか、まだ色づき始めでまばら、でもきれいな箇所もありました。。

f:id:k_kane:20181125132029j:plain

f:id:k_kane:20181125132154j:plain

f:id:k_kane:20181125132353j:plain



 

 

CentOS 7.5 に jedi-vim を入れてコード補完しよう(と思って手こずった話)

内容はタイトルのとおりなんですが、 WindowsVSCode 使ってみると、コード補完あったほうがいいよなと思いはじめ、CentOS だとなんとなく Vim 使っているので、以下の記事を参考にやりはじめたのですが。。。

yuukiyg.hatenablog.jp

qiita.com

VimPythonインターフェースが有効になっていない

上記参考に dein.vim / jedi-vim をインストール、設定してみたのですが、実際に Pythonスクリプトvim で開いてみると、 python がない旨のエラーが出る。ので、ググってみたところ、以下の記事を発見。

もともと何の気なしに CentOS に入っている vim を使ってたんですが、 Python インターフェースが有効になっていないのでした。

kashewnuts.github.io

有効になっている / なってないは以下のコマンドで python / python3 に + マークが付いていれば有効、 - マークが付いていれば無効です。

$ vim --version 

python-devel を入れてなかった

なので、以下の記事を参考に vim8.1 をインストールしはじめたんですが、ここでもひっかかりました。

goodbyegangster.hatenablog.com

CentOS7.4にソースファイルからVim version 8をインストールする – StupidDog's blog

特にあまり深く考えず、上記参考に以下の通り configure したのですが、 python の configuration directory がないと怒られているっぽい。

$ sudo ./configure --with-features=huge \
--enable-multibyte --enable-gui=gtk2 --enable-perlinterp \
--enable-pythoninterp --enable-python3interp  --enable-tclinterp \
--enable-luainterp=dynamic --with-lua-prefix=/usr --enable-gpm \
--enable-acl --enable-cscope --enable-fontset --enable-xim --enable-fail-if-missing

(中略)

checking --enable-perlinterp argument... no
checking --enable-pythoninterp argument... no
checking --enable-python3interp argument... yes
checking --with-python3-command argument... no
checking for python3... /bin/python3
checking Python version... 3.4
checking Python is 3.0 or better... yep
checking Python's abiflags... m
checking Python's install prefix... /usr
checking Python's execution prefix... /usr
checking Python's configuration directory...
can't find it!

いろいろググると、 python の configuration directory を configure するときに渡してやればいいとか、出てくるのだが、結果的には以下の StackOverflow にあるとおり、 python-devel (以下は ubuntu なので python-dev) が足りなかった。

stackoverflow.com

この後も configure したときの引数に合わせて、いろいろ足りないと言われた package を追加して、なんとか Vim をインストールでき、コード補完を使えるようになりました。

f:id:k_kane:20181124165958p:plain

ちょっとフラストしましたが、やったことのないことはやってみると勉強になるもんでした。