Lapis Lazuli

technical blog for web developer

GCPは赤字だったけど売上は伸びている

先日、GCPが5900億円の赤字であるニュースが掲載されていました。

forbesjapan.com

現状、パブリッククラウドはシェア1位のAWSを筆頭に、2位のAzure、GCPは3位という位置にいます。
3位といえど差は歴然で、去年のデータですが下記のようになっています。

www.itmedia.co.jp

AWSとAzureで半分のシェアを握っており、GCPはAzureの半分のシェアほどしかありません。
そのうちアリババに抜かれそうですね。そのうえ赤字だったと。
暗雲立ち込めているような情報ですが、実はそこまで悲観するようなものでもないかなと思います。

japan.zdnet.com

2020年度Googleの決算ですが、GoogleCloudが2019年比で1.5倍に増えています。
クラウドの膨大な投資によって赤字だったにせよ、1.5倍の伸びはかなり驚異的です。
AWSが30%なので、それを上回るスピードで成長している事になります。

japan.cnet.com

azureも同等のペースで伸びているので、決してGoogleの一人勝ちではないですが、普通にヤバい水準ではないです。
そもそもAWSもazureもエンタープライズのシェアを持っているので大きいのであり、そこが不利なGCPは中々難しいかなと思います。
とはいえGCPも他には無いサービスがあるので(spanerとかbigqueryとか)そこは他にはないメリットなのですが、自社開発系が使っているイメージがありますね。
spannerとか画期的だと思うんだけどなぁ・・・って思います。
ただそこまで必要になってくるスケールのサービスも限られているので絶対に必要かと言われると、うーんですが。

【ツール】DBクライアントを購入したので使ってみた結果

今回は使ってみて良かったツール類を紹介したいと思います。
数ヶ月前にセールをやっていたので、前々から気になっていたTablePlusを購入しました。
tableplus.com

購入した理由とメリット

一番の大きな理由はモダンで軽快なUIで使い勝手が良いという点です。
↑の公式にも画像が掲載されていますが、洗練されたUIで、DBを操作する上で必要なものがそろっている感じがします。
もう一つはマルチなDBに対応している点です。
同じような使い勝手のUIのクライアントにSquelAceがあるのですが、こちらはMySQLのみの対応になります。
無料なのは良いですが、たまにPosgre使ったりSQLiteを使ったりする私にとっては結構困る感じでした。
以前使っていたDBeaverほどではないですが、メジャーどころはほぼ対応しているので問題はないです。
対応しているのは下記の通りになります。

PostgreSQL
MySQL
MariaDB
SQLite
Microsoft SQL Server
Amazon Redshift
Oracle
CockroachDB
Snowflake
Cassandra
Redis
Vertica
MongoDB (Beta)

AWSのRedShiftとかも対応していてスゴイ。

使ってみてのデメリット

メリットばかり挙げましたが、デメリットもあります。
まず有料で買い切りではないということ。$59もするのに更新されるのは1年間のみです。
一応更新されなくなるだけなので引き続き使う事は出来るのですが、新しいバージョンに対応しなくなったり、対応DBが増えなくなったりします。
ただDBに関しては、あまり最新のものを使う機会はないですし(MySQL8はまだ使ったことない)対応DBもメジャーどころがそろっているので、そこまで困らないかな。と思います。
私はひとまず1年使って問題なければ更新せずに使おうと思っています。ちなみに更新は$39と最初よりは安いです。
あとは1ライセンスで1台にしかインストール出来ない事でしょうか。
つまり複数台で使いたかったら追加ライセンスを買う必要があります・・・同じ有料ツールであるintelijIDEAなどと比べると柔軟性に欠けますね。

まとめ

コスト面やライセンス面でのデメリットが目立ちましたが、アプリケーション自体はとても良いです。
M1macへの対応も既になされていますし、有料なりの早さというのは実感できます。
買うか否かの分水嶺MySQL以外を使うか否かだと思うので、使う方は無料でも機能制限で使用できるので使ってみてはいかがでしょうか。

MySQL5.6がEOLに

まだまだ使っているところが多いと思われるMySQL5.6が2021年2月のEOLになります。

www.mysql.com

意外に早いなーと思いましたが、ExtendedSupportはGAから8年なので、リリースされたのは2013年なんですね。
移行するのでしたら、5.7は2023年10月までいけるので、こちらに乗り換えるか、思い切って最新の8にするかの選択肢になると思います。8なら2026年まで大丈夫ですしね。

5.7にして特に下記が使えるようになるのが大きいでしょうか。
JSON型のサポート
全文検索での日本語サポート

JSON型のサポート

カラムの型にJSON型を使うことができるようになります。
5.6まででJSONを格納しようと思ったら、そのまま文字列としてVACHARに格納して取り出したときにパースする使い方でした。
これでも一応使えるのですが、検索したいときとかは毎回展開する必要があるので面倒でした。
JSON型を使うときはテーブルの型をJSONにするだけです。
検索するときなどは関数を使い、keyとvalueを指定して取ってくることができます。

mysql> SELECT * FROM `json_table` WHERE JSON_CONTAINS(column_name, '"value"',  "$.key");

上記はJSON_CONTAINS関数で特定のkeyに設定してあるvalueを検索する方法です。
他にもJSON_EXTRACTで件数取得したりとJSON関数は色々と使えます。ただフレームワークを使用していてJSONを扱う機能があるのならそっちを使うほうが良いパターンはあります。

全文検索での日本語サポート

これはその名の通り、日本語で全文検索ができるようになりました。
5.6でも全文検索はできたのですが、英語など言語が限られていましたが、新たに日本語パーサーを搭載することで実現しました。
全文検索を使うにはFULLTEXTインデックスを貼ってパーサーの指定を行う必要があります。

ALTER TABLE table_name ADD FULLTEXT INDEX n_gram_idx (column_name) WITH PARSER ngram;

上記ではパーサーにN-gramを指定しましたがMeCabも使えます。
実際に検索するときはMATCH AGAINST関数を使います。

SELECT * FROM table_name WHERE MATCH (column_name) AGAINST ('文字列');

検索モードを指定すると細かく条件を指定し、これによって検索結果が変わってきます。
デフォルトだとIN NATURAL LANGUAGE MODEになっており、他のモードを使ったときの挙動は次回独立した記事で検証してみます。

Auroraの場合

AWSの場合、RDSでAuroraを使っているケースもあると思いますが、Auroraの5.6は特にEOLとかはアナウンスされていないようです。
あくまでも互換で、AWS独自の実装が多いので、公式に発表されるまでは大丈夫かなと思います。
そもそもAuroraは5.6と5.7の差が本家ほど多くないです・・・先行して実装してしまっているものも多いので。