1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PlanetScaleを使ってみた、その記録

Posted at

ガチ勢(商売でWebをやっているような人たちとか、そこそこのサービス動かしている人たち)向けの記事ではないです。私はWebプログラミングで遊ぶのが趣味のただの人なので、「しょしんしゃ」でない方はご遠慮ください。役に立たないし、「は?何めんどくさいことやってんの?」ってことを多分やっていると思う…。

どうでもいい経緯

昨晩、とても暇だった。あまりにも暇だったので、Qiitaの「しつもんコーナー」というところ覗き、的外れなコメントを乱発するという迷惑行為を行ったのだが、一つだけ気になる質問があった。それが、今回のタイトルにあるPlanetScaleというサービスに関わるものだった。

全く聞いたこともなく、知りもしなかったのだが、「質問」されているということは、ナウでヤングなサービスに違いないと思い、ちょっと見てみたら本当にナウでヤングなサービスでした。私のように、中途半端にWebを触ったことのあるあなたなら、絶対に好きになるぞ。なんと、サーバーレスDBと呼ばれる類のサービスで、

MySQLデータベース5GBまで無料で使わせてくれる。

そんなサービスの模様。大昔はXAMPPとかlocal(by flywheel)とかでローカル環境構築してたもんだけど、今時誰もそんなことしないんだね。なんか、Web業界って5年くらいで浦島太郎になるよね(いやXAMPPとか言ってたのは、もう十年以上まえだけどさ!)。

ちなみに、PlanetScaleを使いたい人は、サイトに行ってSign Upしたらすぐ使えるようですぞ。拙者はgmailで登録しました。

後は画面の指示に従って、DB名を入力すれば新しいデータベースができるぞ。

コマンドラインツール

ちなみに、このPlanet Scaleにはコマンドラインツールが用意されている。その名もpscale(ここでエコーがかかる)。

Linuxを使っているおりこうさんや、Macを使っているおハイソなお兄さんやお姉さんは、すぐにインストールできるっぽいぞ。いつものあれ(brewとかrpmね)でインストールしませう。

そして、私と同じゲーム厨の君、私たちはWindowsというクソOSを使うという茨の道を選んだのである。よって、binとかscoopというパッケージ管理システムを使うのが良いらしい。私はbinを使った。あのさ、nugetとかってあったよね?あれって、こういうのには対応しないのかなぁ。.NETライブラリとかだけなの?だいぶ前にchocolateyってのもなかったっけか?もう、いい加減にパッケージ管理システムくらいry) ——この先はQiitaのガイドラインに抵触する恐れがあるためカット。

初期データのインポート

というわけで、ちょっと使ってみたのだけど、データのインポートの仕方ね。分からん。なんか、画面があるらしいんだけど、そもそも、PlanetScaleを知るきっかけになった質問が、ローカルDB「からの~」インポートに失敗するという話だった。そしてplanetscale.comのインポートの画面を見たら、なんかPlanetScale側から見えてるDBじゃないとダメっぽい雰囲気を醸し出している(未確認だけどそんな雰囲気、情報求む)…ただ、どっちにしろlocalhostにMySQL入れるほどのもの好きでもないので(昔local使ってたって言ってたじゃんって?いや、うん、昔はね!)、ローカルのCSVファイルからインポートを試みるという設定にする。ちょっとPlanetScaleを使って、今時感を出したいだけなので、それでいいや。

念のためセキュリティとか

今回私はpythonを使ってMySQLdbで接続することにした。たぶん、SSLかかっていると思うけど、確認したわけでもなんでもない。それに、「○○使ってみた」といういい加減なタイトルの記事だし、第一流すデータがどうでもいいものだし、確認する理由もないのでしていない。が、大事なデータを流す場合、こういうことはちゃんと確認した方が良いので一応、多分、みんなそんなことくらい知っていると思うけど念のため、まかり間違って平文で流してないかとか、確認くらいはしようね(今時大丈夫だと思うけどさ。ライブラリとかも、どうせ下回りでOpenSSLとか使ってるしさ)。特に人のデータな。ま、多分大丈夫だと思うけど、多分でいいのはおうちで遊んでいるときだけね。

データベースにアクセスする

さて、みんなpscaleは入ってるね。ちゃんとPATHは通したかな?では、おもむろに下記のコマンドを実行してみよう。

C:\xxx> pscale auth login

Confirmation Code: XXXXXX

If something goes wrong, copy and paste this URL into your browser: https://auth.planetscale.com/oauth/device?user_code=XXXXXX

Successfully logged in.

するとなんということでしょう!勝手にコマンドがブラウザを開いて認証を通してくれる。なんか「APIきー」的なものが必要なのかと思いきや、そんなものいらんとばかりにブラウザ認証だよ。すげー。ナウでヤングなサービスなんだから、こうでなくっちゃね。ブラウザに、変な七桁くらいのコードが表示されるので、とりあえず承認ってやると、端末が認識されるっぽい。すごーい。クール。

というわけで、これで認証できたのであとはやり放題である。PlanetScale側の管理画面から、ユーザー名やパスワードが見えるので、ちゃんと確認しよう。PlanetScaleにログインして、コンソールから「Connect」って押すと、あんな情報や、こんな情報が見れるぞ。

image.png

というわけで、直接接続する場合、ここの情報を使って刺さって行けば、データベースにアクセスできるっぽい(わざわざ、サンプルコードまで表示してくれている。親切。感謝)。

ちなみに、mysqlコマンド(クライアント側で使うあれ)がインストールされている人は、下記のコマンドから直でmysqlの操作ができるよ!ちなみに、このmainとかなんとかってのは、ブランチと呼ばれるものの名前(コンソールから追加したり削除したりできる…と思われ)。あの、バージョン管理のブランチと同じで、複数のバージョンのDBを並行的に管理したりできる模様。

もし、mysqlコマンドがなくても、LinuxやMacの人は大丈夫。いつものやつ(rpmとかbrewね!)で入れればいいから!そして、そこのゲーム厨君、君は私と同じだ。セットアップウィザードが待っているぞ。

ほんとは、データベースをタダで使わせてくれるサービスじゃなくて、こういうところがメインのサービスなんだろうね。システムを止めずに、DBをすぽんと入れ替え出来ますぜ。みたいな。ようするに5GBの無料枠は、お試し用という感じなのでしょうか。こういう、儲かってそうなところからお金を取り、我々貧民にはただでリソースを分けてくれるというサービスっていいよね。これぞ、富の再配分。

C:/> pscale shell [DB名] main
xxx/main> create table test( id integer, name varchar(50), primary key(id)  );

おもむろにテーブルを作ってみる。実はサイトがわ(PlanetScaleのコンソール)にも「Console」ってメニューがあって、mysqlコマンドを実行できるようになっている。Windowsのシェルからmysqlでしこしこやるくらいなら、こっちの方がよっぽど便利。

image.png

テーブルができた模様。

ローカルホストにバインド

なお、pscaleのconnectコマンドを利用すると、PlanetScaleのデータベースをローカルにバインドできる。

C:\xxx> pscale connect [DB名] main
Secure connection to database XXX and branch main is established!.

Local address to connect your application: 127.0.0.1:XXXX (press ctrl-c to quit)

こんな感じでメッセージが表示され、127.0.0.1:[ポート番号]から、あたかもPlanetScaleのDBがローカルにあるかのようにアクセスできるようになる。どうやらpsacleがローカルポートで待ち受けて、通信を中継してくれるらしい。まー、直接アクセスしてもいいのかもしれないけど、開発中とか、設定をlocalhostにしたりするから地味に便利。毎回、やたら小難しいホスト名にアクセスするのではなく、pscaleでlocalhost:ポート番号にバインドして、あとはmysqlなり、なんだかよく知らないけど、あなたのお気に入りのツールなりでデータベースを操作すれば、良い感じですね。

特に、開発してるときとか、楽そう。とりあえず、ローカルでMySQLを動かしておき、設定はlocalhostにする。ある程度、アプリが出来てきたら、ローカルサーバーを止めて、pscale connect経由でPlanetScaleのDBに接続…で、なんかおかしくなったらローカルに戻してデバッグ、のような作業を想定すると地味に便利。

データを入れる

私のお気に入りのツール、それはpython(ここでエコー)。

というわけで、IDLEX(いや、まじで、これがお気に入り。そこのPythonistaのあなたも、まさかエディタがIDLEXだとは思わなかったでしょう?)をおもむろに起動しよう。ユーザー名とか、パスワードは認証時に一時的に発行されるものなのかも。パスワードは「pscale_pw_」で始まり、後はハッシュみたいなのがずらーっとと言う感じ。dbはPlanetScaleに登録したときのデータベース名ね。

>>> import MySQLdb
>>> connect = MySQLdb.connect(host='localhost', port=XXXX, user='XXXX', password='XXXXX', db='[データベース名]')
>>> cursor=connect.cursor()
>>> cursor.execute("INSERT INTO test (id, name) VALUES (0, 'Yay!')")
1
>>> cursor.execute("INSERT INTO test (id, name) VALUES (1, 'Boo!')")
1
>>> cursor.close()
>>> connect.commit()
>>> connect.close()

おー、ここまで来たらあとはやり放題ですな。ハハハ。

image.png

ちゃんとデータも入ったようでなによりです。あとは、CSVなりなんなりで、まー、SQLダンプとかの人は「なんとかアドミン」とかのツール使ったりして、データを入れればいいと思うぜ。

感想

こういうサービスって、「とっても簡単です♡」みたいな雰囲気を醸し出しておきながら、使ってみるとクソ面倒だったりすることがよくある。私もちょろっとWebの仕事に関わったくらいだし、あんまりこういうののお勉強には時間使いたくないなーと思ったりするので(いや、やってみたいとは思ってるよ!Web!興味あり!あれ、今時の、なんだっけ、ReactとかVue.jsとかね!React知ってる!知ってるよ!インストールしたもん)、めんどいのは嫌である。仕事でやっている人はなおさらそうだろう。

ところが、である!このPlanetScaleってやつは、タダもんじゃないよ。普通、記事書くのにかかる時間と記事の準備にかかる時間って、大体半々くらいになるのね、毎回。今回に関しては、作業にかかった時間30分もないからね。MySQLクライアントの「いんすとーる」から始めたのにさ。それもこれも、PlanetScaleが導入しやすいおかげだ。ちょっと興味を持ってからトータル2~3時間無駄にしたけど、2時間はこのうんこ記事の推敲に費やされた時間。マジで。もう誰も読まない記事なんて書くのやめようかなぁ…ただね、あたしにゃね、物書きの衝動があるんよね。

というわけで、まとめ。

  • 私のように遊び半分の人は、5GBの無料MySQLサーバーとして遊べる。
  • 「ブランチ」みたいな機能があるのが便利そう。ダウンタイムなしでスキーマ変更みたいな、そういうの。

というわけで、真面目に何かやろうとしている人も、遊びの人もPlanetScaleを使ってみたらいいと思うぜ。よけいな「きのう」とか「いんたーふぇいす」がなくて、コマンド一発で何でもできるところが、とてもいい感じでした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?