見出し画像

CSVダウンロード機能を3分で作る

まずはBon Jovi の It's My Lifeを流します。

次にAzure Logic Appsを作成します。

このままでは空っぽのLogic Appsです。


でも、ここからがマグマなんです。



用意するstepは以下の4つだ。

①When a HTTP request is received
②Execute a SQL query
③Create CSV table
④Response

①When a HTTP request is received
これはエンドポイントってやつだ。URLだ。Saveすると勝手にURLが作られるイカした奴で、URLをブラウザとかで開くとイベントが発火するようになる。

②Execute a SQL query
接続文字列を入力してSQL Serverへ接続するんだ。
正しく接続できると、SQLが直に書けるようになる。
SQLのSELECT句ではカラム名をセットしておくとよいだろう。
SELECT * はなるべく使うな。

③Create CSV table
fromに②のResultSetsをセットするんだ。
Columnsは最初はAutomaticでいいだろう。

④Response
Headersには以下二つをセットする
・Content-Dispositionをattachment; filename="physicalmonster.csv"
・Content-Typeをtext/csv; charset=UTF-8
Bodyには③のOutputをセットするんだ。

①~④まで作ったら保存して終わりだ。発火用のURLが作られる。
「ヤーッ!」と言いながらアクセスしてphysicalmonster.csvがダウンロードされたら成功だ。

ダウンロードできなかった人、恐らくだが体幹が足りていない。
プランクから始めよう。2分続けれるようになれば、新しい気付きも生まれるだろう。ところでこのCSVダウンロード誰がいつ使うねん...


いちお、注記が2点。
①このCSVはBOM無しだ。Excelで開くと当然文字化けする。
そして残念なことに、LogicApps内でBOMを追加するのは執筆時点では難しいようだ。勿論プログラミング(AzureならAzureFunctionsがbetterだと思う)でいくらでも解決できるのだが、それをやっちゃうともう全部それでええやん、になっちゃう。ローコードのメリットも半減だ。

②SQLはエンジニアにチェックしてもらって欲しい。RDBに余計な負荷が掛かってしまい、最悪、本番環境が停止するなんてことになったら土下座ならぬ土下プランク必至である。


あとがき

今回はローコードってやつだ。
俺はエンジニアの端くれだが、実は生粋のエンジニアほどローコードってやつを触ったことないのではないかと思う。CSVダウンロードなんてのは今まで5万回は開発したであろう機能なので、もちろん過去の遺産を流用できないか考える。

動的なSQLが実行できて、入力チェックも出来て、エラーハンドリング、非機能要件もバッチリなサンプルなんて腐るほどあるわけで、楽勝である。

SQL ServerなのでC#にしておこう。
Azureでいいだろう。PaaSにしようかな。Serverlessにしようかな。うふふ。
あのプロジェクトのあの辺の処理を切り出して…
そういえばORMはDapperだったか、プラットフォームもちょっと古いしアップデートしておくか…
そもそもここのDI基盤がブツブツ…

気づけば1時間経過

てへぺろ(・ω<)

今回のシチュエーション以外にも、活躍できそうな機能が沢山用意されていて、選択肢に入ってきそうだ。

現場からは以上です。

この記事が気に入ったらサポートをしてみませんか?