Ansibleで宅配便♪

これは [Ansible Advent Calendar 2024](https://qiita.com/advent-calendar/2024/ansible) の1日目のエントリーです。

# はじめに

いつもながら、すっごくどうでもいい前口上(ポエム)を述べます。
ほんと、どうでもいい内容なので読み飛ばしても読んでるあなたの人生に何ら損失を与えません。むしろ読むほうが時間という貴重なものを失います。(というか、そもそもこのエントリー自体、技術要素がほぼゼロで、ほとんどポエムなんじゃないかと…)

## 反省

えーと、私が Ansible Advent Calendar に以前参加したのは、忘れもしない [Ansible Advent Calendar 2017](https://qiita.com/advent-calendar/2017/ansible) でした。
このときは時間を書けて「はじめに」を長大に書いたのですが、読んで頂ければわかるように(いや、読む価値もないんですが)、操作ミスを犯して全部記事を削除してしまい、とても失意のドン底で書いたため、恐らくしんかい12000でも潜れないほど深く重い文面になりました。

## 狙い

そもそもそんな大失態を犯しておいて7年ぶりに何をとお思いかもしれません。私も「なんで7年振りに皆様へ醜態を晒すようなことを再び…」と思いましたが、一方で私ももう老害と呼ばれる歳です。そうなるとそろそろ社内の中堅エンジニアが僕の寝首を掻く…いやいやそんな姑息なことをせずとも、怒涛の技術力で下剋上やテクハラをしてきてもおかしくない、むしろそうして欲しいテクハラしてほしい、容赦なく「え?まだ手でコード書いてるんですか?」とかマウント取りにきてほしい。
しかし、悲しいことに今の職場では IaC な人口が圧倒的に少なく、Ansible に至っては職場で使われているところを目にしたことがなく、このままではまずいと考え「人に勧めるからには自分が率先して Ansible の利便性を伝えねばと思いました。

そうです、私が Ansible Advent Calendar の1日目を書くことで社内では「Ansible って便利で簡単なんだ」と思ってもらい、さらに Ansible は日常的に使ったり開発している諸兄諸姉の皆様も「Advent Calendar ってバキバキのコアなエンジニアじゃなくても気軽にエントリーしていいんだ」と思ってもらうことが狙いです。

## ところで

Ansible

という文字列を見ているうちに、ふとあるものが共通点を持っていることに気付きました

そう、

Precure

「ナニ言ってんだコイツ?」と思ったかたも少しは居るでしょう。でもこのエントリーを読んでいる聡明な皆様はこう思ったに違いないです。「あ、やっぱりな。前から似てると思ってたんだ」と。

いや、ちょっと待ってください。あなたいまそっと閉じようと思いましたね?ここまで読んでしまったならあとちょっと我慢しましょう。あと間も無くですよ、本題は。

で、何が共通点を持っているかと言うと、まず文字数。はい、6文字です。そもそも7年前に私が「Ansibleで印刷♪」というタイトルでエントリーしたのもこの Precure という共通点が作用したからです。「印刷」そう Printer。これもまた6文字。伊達や酔狂で Ansible で印刷をやったわけじゃなかったんです。もうこれは大いなる意思によって…いやプリキュアの話をしてんだかクリィミーマミの話をしてんだかわからなくなってきました。話を元に戻します。

次の共通点ですが、Ansible のコアモジュールは(たぶん)71個です。

```
$ ansible-doc -l 2>/dev/null | wc -l
71
```
一方、Ansible と共通点の多いプリキュアですが、レギュラープリキュアは現在82人です。あれ?いつの間にそんなに増えてたの?ついこの間まで77人ぐらいだと思っていたのに、わんだふるをちゃんと観てないうちに、もう82人も…

まぁ、たった11の違いは誤差のうちですね。

そんなこんなで Ansible と共通点の多いプリキュアですが、2025年1月には「魔法使いプリキュア!!〜MIRAI DAYS〜」が始まります。

そう、魔法使いと言えば魔女です。魔女と言えば宅急便です。宅急便と言えば宅配便です。

はい、やっと本題の「Ansibleで宅配便♪」に繋がりました。長かった。「なんで Ansible で宅配便なんだよ?」と違和感を持たれないよう説明するのに、これほど苦労するとは思いませんでした。

# 本題

さて、本題の「Ansible で宅配便♪」ですが、7年ぶりに書かせて頂くからには前回のような粗相はできない、ちゃんと入念に準備に準備を重ね、それはもうミルフィーユかクロワッサンかっていうぐらいに準備を重ねるつもりで挑みました。

まず、宅配便と言えば私がよくお世話になっているのは某クロネコさんです。サイトを見ると YBM For Develepers のアカウントを作成すると以下の API が提供されていることがわかります。

| 提供API | 概要 | 料金 |
|:------:|:-----------:|:------------:|
| EC自宅外受け取りAPI            | ECサイトで購入した商品を自宅以外のコンビニや宅配便ロッカーなどでの受け取り場所が選択できるようになるAPI     | 無料 |
| クロネコメンバーズサービス連携API | 商品の受け取り場所や日時の変更などができるクロネコメンバーズのサービスをECサイト内でも利用できるようにする API | 無料 |
| 配送連携API                   | 宛名書き不要でQRコードをかざすだけで簡単配送できる機能や、その他色々な発送に関する機能を持つ API          | 有料 |

よし、私が今回使いたいやつは、この「配送連携 API に違いない。ECサイトじゃないけど EC と IaC はほぼ似てる文字数。そう Ansible と Precure のように。

で、サイトの説明を読み進めていくと、ある説明に愕然とします。

> 開発環境のお申し込みから本番環境のご提供まで3か月ほどの期間を見込んでいただくようお願い致します。

お、おぅ… 3ヶ月… 11/17 に準備をはじめるべくヤマトビジネスメンバーの登録を行いましたが、そこからさらに三ヶ月…。

おまけに

| 流れ |
|:---:|
| お問い合わせ |
| ▼ |
| APIご提供可否のご連絡 |
| ▼ |
| お見積り・ご契約 |
| ▼ |
| 開発環境のご提供 |
| ▼ |
| 本番環境のご提供 |

と丁寧に書かれているではありませんか。絶対に「ご提供可否」の部分で却下される気がする。僕が中の人だった「え? Ansible で宅配便? 何言ってんだコイツ。ユーカリの葉っぱキメすぎて阿呆になったんじゃねーの?」とか思って却下します。

さらに…さらに読み進めていくと

> 他社の開発したECモールやビジネスツールなどには実装不可となります。貴社構築（フルスクラッチ）されたアプ リケーションにのみ実装可能です。実装に伴う開発費用は事業者さま負担となります。

とも書いてあります。Ansible のモジュールだから「フルスクラッチ」と言えるのかどうかとても微妙です。

雲行きが怪しくなってきました。もう僕の中の天使と悪魔が囁きます。

天使「どうせあなたがまともな記事を書けるなんで誰も思っていないわ。そもそも過去の Advent Calendar で成功したエントリーなんて1つでもあったかしら?全部失敗談じゃないの、それも中途半端な。大丈夫よ、傷つくような経歴も栄光もあなたになんてないわ」

悪魔「失敗こそお前。お前 is 失敗。むしろ成功したら白ける。1日目のエントリーなんだからむしろ失敗しろ。2日目以降の人の心理的敷居を海抜4メートルぐらいまでに下げるのがお前の役目。安心して失敗するがよい」

でも痩せても枯れてもエンジニアです。代替手法を模索せずに「失敗でした、てへぺろ」で終わらせるわけにはいきません。こうなったら違う宅配業者で API 提供しているところを探しましたところ、ありました。さすがは我らが FedEx さん。

* [FedEx API](https://www.fedex.com/ja-jp/shipping/industry-solutions/ecommerce/webservices.html)

これで念願の「日本鰻師同好会の名誉会員だか名誉副会長だか何だかよく覚えてないけど [@tsukaman](https://x.com/tsukaman) に日本鰻師同好会のロゴを印刷したTシャツを [Unazon箱](https://github.com/unagy/2017.adventcalendar/wiki/unazon) に入れて Ansible で発送手続が出来る！

と思い、料金を検索しようとしたら…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42575/b2ee9030-ff76-1418-760c-4de43caa46cf.png)

> この国では、国内サービスはご利用いただけません。

おっふ…、国内配送やってなかった…orz

# さいごに

日付を跨いでからの公開なのに、そして今回も何ひとつ成功していないのに、こうやって恥を忍んで公開します。とくとみさらせい、これが似非エンジニアの生き様じゃい！

明日は…というかもう今日ですが、2日目のエントリーは [@mitomito](https://qiita.com/mitomito) さんによる「AnsibleでAWSリソースを作る」です。すごくまともな内容が期待できるタイトルです。すごく安心。