PowerAppsでフリマアプリを作って、オンライン決済の実装に挑戦した話
イカにちは~🦑💛
勉強系VTuberのあきイカと申します!
こちらの記事は、『Microsoft Power Automate Advent Calendar 2022』の24日掲載記事です。
初挑戦のアドベントカレンダー!!
せっかくだから新しいことに挑戦したい!!
ということでPower Appsで新しいアプリを作ってみることにしました!
なにを作ろうか。。特にネタのないときは!
既製品のアプリをパクってみよう!(!?
プログラミングの勉強方法としても、「すでにあるサービスを真似て自力で一からサービスを作ってみる」という勉強法がありますよね!
特にフリマアプリを作りたかったわけではないのですが、「Power Appsでオンライン決済ってできるのかな??」と疑問が浮かび、挑戦してみたくなったのでした。
以前ゆるゆる勉強会の中で「PleasanterというWebデータベースプラットフォームから顧客情報を取得する」というフローを、りなたむ先生や視聴者のみなさんに助けていただきながら実現できましたが(☆1)、あれから自力でAPIを実装するということはできていませんでした。
☆1・・・第1回目 配信デビュー!!#MicrosoftPowerPlatform × #Pleasanter 外部API連携 ノーコード開発①【Study with me/RPA】
動画URL : https://youtu.be/Nll8xAxpQ4k
絶対に難しいだろうことはわかっていたのですが、APIの知識を自分のものにするべく、オンライン決済の実装にチャレンジしました!
フリマアプリの出来ばえ
細かいところまで作りこめてはいないのですが、決済につなげるまでの一通りの機能は入れることができました!
出品商品の登録
ラベルのクリックで表示するアイテムを切り替え
三点リーダーをクリックすると画面左にメニューが出現
いいねのハート♡ボタンでお気に入りに登録
ゆるゆる勉強会の家計簿アプリ作成で身についた知識がかなり役立ちました!(宣伝)
データベースは私の好きなDataverseにしました。(これもゆるゆる勉強会で…ry)
今回ちゃんと設計から入らずに、なんとなくで作り始めてしまったので、データベースの構成では失敗したぁ、、ということが何度かありました。
今回まったくリレーションを作らなかったんですよね。ここは絶対間違っている気がする。きっともっとうまくできたはずです。。💦
アプリの動きが見えるように動画にしています。
PowerAppsでフリマアプリを作って、オンライン決済の実装に挑戦した話① 出品登録
高すぎたオンライン決済の壁
昨今は多種多様のオンライン決済がありますが、まずはメジャーなPayPayを使おうと考えました。しかし、断念・・・
PayPayでは決済の導入方法としてSDKというサービスを展開しているのですが、このSDKというのはAPIとは似て非なるものなんですね!
Power AutomateのHTTP要求コネクタでAPI連携をするための情報を探していた私は、この違いを知らずにかなりハマりました、、
PayPay決済導入の動画を見て、何か違う!?という嫌な予感はしたものの、Pythonの環境を作りSDKを動かすことには成功しました。しかし、「ここからPower Appsにどうやってつなげていくの??」というところで固まってしまいました。。
Power PagesでWebサイトを作り、VSCodeで編集してPythonのコードを貼り付けることで使えるようにできるのかも!?…とも思ったのですが、そのためだけにPagesを使うのも間違っているような気がしてやめました(難易度高いし…)。
そして、PayPalやLINEPay、AmazonPayなど片っ端から(私に)使えそうなAPIはないかなと、APIを探し求める旅にでて4日が経ち、諦めそうになっていたところ…やっと見つけました!!
出会ったのは、我らがりなたむ先生の動画でした。
なんと、サンプルフローまで配布してくださっているではなイカ!!
ググりまくったのになかなか見つけられなかったのは、検索の際にずっと
「PowerApps オンライン決済」で検索していたからでした、、
「PowerAutomate オンライン決済」で検索したところHitしました!
長い旅だった・・・
本当にありがとうございます!!!!!!!!!!!
動画の内容では
LINE→Power Automate→LINE→決済サービス→Power Automate→LINE
という流れでサービスをつないでいたのですが、私の場合は、LINEではなくPower Appsから入力をしたかったので、動画とフローを参考に下記のようなフローを作りました。
りなたむ先生のサンプルフローを読み解き、LINEが絡んでいる部分をPowerAppsに置き換え、ECサイトではなくフリマアプリなので、アプリの仕様に合わせて組み替えました。
決済の流れを動画にしています。
PowerAppsでフリマアプリを作って、オンライン決済の実装に挑戦した話② 決済処理
商品登録も自動でできなイカ?
このStripeという決済サービスは、事前にサービス内で商品登録してある商品に対して、決済処理ができる仕組みになっていました。この事前の商品登録作業を自動で、新しい商品が出品された際に都度自動で登録されるように頑張ってみました!
決済の部分はりなたむ先生のフローをいじらせていただくことでできましたが、今回はAPIリファレンスを読みこんで自力で頑張ってみました。
リファレンスは英語だし、やっぱり意味がわらない・・・要求本文の記述に悩みました。ひたすらにりなたむ先生の要求本文とリファレンスをにらめっこして、「あれ!これってもしかして!」と法則がわかった気がしました。
おそらく下記がルールのようでした。
パラメータの区切り位置は&でつなぐ
パラメータ名[子パラメータ名]=値という記載になっている
パラメータ名のあとに[0]がついているのは、パラメータがarray型だから。array型でないパラメータの場合は[0]は不要
必須のパラメータは必ず記載する
なんとなく法則が見えてきたあとは、試行錯誤してなんとかリクエストに成功しました!!!
こちらのPower Automateの実際のフローは、Microsoft Power Automate Advent Calendar 2022のほうにQiitaの記事で投稿させていただきました。
よかったら、こちらもご覧ください!
今回の挑戦で学んだこと
とにもかくにもググるべし!
諦めずにいろんな方向からググってみる。
先人の知恵に頼れば、自分の力以上のことができますね。
APIと仲良くなれた!
自力でAPIを実装しようとしても、リファレンスを開いて無言で閉じてしまう私でしたが、今回で少し仲良くなれた気がします!根気があればなんとかなる!
他社製品との連携ができると自動化の幅が広がるので、やっぱりAPIはマスターしたい!と改めて思いました。
便利なGUID
DataverseにID列を設定しなくていいの?とずっと疑問だったのですが、
自動でGUIDが設定される列がデフォルトで存在していました。
GUIDはユニークな番号なので、アイテムを識別するのに便利でした。
アプリデザイン
世の中で普及しているアプリは、ユニバーサルデザインという優れたデザインが使われているそうです。すごい人たちが作ったアプリをパクることで、一般に好まれるデザインがなんとなく理解できました。
文字は小さいほうがオシャレ!とか流行りのデザインや機能がわかりました。
デザインの勉強をせずにデザインが学べたので、得した気分になりました!
Launch関数とParam関数
アプリ画面から決済画面を開いたり、決済完了したらアプリ画面を開いたり
画面遷移にLauncn関数が大活躍しました。
さらに、アプリを開く際にParam関数でパラメータを渡して、開く画面を指定することができました。
何か自分でアプリを作ってみたいけど、アイデアもないしなぁ・・・
という方!ぜひ既製品のまねっこに挑戦してみてください🦑🎵
今回は感想を含めて伝えたかったのでnoteに書きましたが、Qiitaの初記事にも挑戦しました。Qiitaなんて、私が投稿してもいい場所なの!?と躊躇する気持ちもありましたが、私がりなたむ先生の動画に出会って救われたように、私のQiitaも誰かの助けになるかもしれないと思い書いてみました。
登壇も・・・勇気を出して挑戦したいと思っています!!
アドベントカレンダーがなければ、今回のような挑戦は考えなかったと思います。機会をいただけて本当に感謝です!!
最後に
私はエンジニアに転職してもうすぐ二年になるのですが、この二年はとにかく一人前になりたくて必死でした。
仕事も一人エンジニア担当なのでわからないことばかりでしたが、勉強も一人ではつまづいてばかりで、独学は中々進みませんでした。焦る気持ちから、最短距離で成長する方法を考え、YouTubeチャンネルを作り勉強会を主催するという思い切った行動をしました。
勉強会をするようになって半年、どれだけ成長できたのか試したかったこともあり、自力でどこまでできるのか挑戦しました。
りなたむ先生の動画がなければ完成できなかったと思いますが、それでも、フローを読み解いて理解したり、なんとか自分の目的に合わせて組み替えたり、参考にしながら別のAPI連携を実装することもできました。いつも参加者のみなさんに頼って教えてもらうばかりでしたが、それでもちゃんと成長できているんだなと、今回の挑戦を通して改めて感じることができました。
ここまで成長できたのも、いつも助けてくださるみなさまのおかげです。お名前を全員こちらに並べたいぐらいですが、今読んでくださっているあなたも、いつも本当にありがとうございます✨
また、Power Automateに関してはほとんど自分で触れていなかったので、ここまでできたのはいつも気ままに勉強会で勉強させていただいている知識が吸収できていたおかげだなと感じました。
以前、「お世話になってばかりで恩返しできていないのです」とTiwtterにつぶやいたところ、気ままに勉強会のたなさんに「恩返しというより、恩送りがいいよ」と声をかけていただきました。
恩送り=得た知識を世の中に発信することかなと思いますが、これは人のためだけでなく、自分のさらなる成長にもつながるものだと思います。
来年も、新しい挑戦をたくさんしていきたい!
そして私の挑戦が、どこかの誰かのためになって、恩送りということにつながっていたら、とてもうれしい。
よかったらYouTubeチャンネルに登録いただけるとうれしいです!
connpassにも登録をして、イベントのお知らせをしています。
興味を持っていただけたら、Twitter・noteのフォローお願いします🦑✨
フォロバします!