Google Cloud Platform(GCP)の始め方

 GCPの始め方は、GMailのアカウントを持っていればとっても簡単。持っていない場合は作りましょう。

  1. Chromeにてログインした状態で「https://cloud.google.com」へアクセス。
  2. 「無料トライアルを試す」をクリック
  3. 必要事項を入力すれば、新規プロジェクトが作成されて使える状態になります。

1.https://cloud.google.comへアクセスします。

2.「無料トライアル」をクリックすると必要事項を入力する画面へ遷移します。
 利用規約(英文)を読んで、内容確認して、「同意して続行」をクリック。次の画面でも必要な情報を入力して「無料トライアルを開始」ボタンをクリックすれば、自動的に最初のプロジェクトが作成された状態で「ようこそ」の画面が表示されます。あ、無料トライアルの2/2画面はスクリーンショットを取り忘れました。すみません。

3.「ようこそ」画面。

これで、Google Cloud Platformが使える状態になりました。

そして、みなさんはこのあとGCPを何に使う予定でしょうか。
 ぼくは、このあとMarketplaceからWordPress(Google Click oo Deploy)を探し出してデプロイしました。MarketplaceとはGoogleのテクノロジーパートナーが提供している有料のソリューションサービスを検索することができて、すぐにデプロイ(展開)して利用できるサービスです。ちょうどこのページはそのサービスが利用されています。月々およそ3000円ほどかかっていますがその他は今のところ無料です。WordPressは最新版に更新するのも簡単で、セキュリティ面も安心です。
 GCPが提供しているクラウドサービスの中でも、WordPress用の仮想マシン(VM)をクラウド上に作るという、一番イメージしやすい使い方ではないでしょうか。

 そして、GCPについては、ただいまQwicklabsにて学習中です。先日GCP入門編トレーニングセミナーに参加したら、1か月分のサブスクリプションを提供していただけました。あ、Qwicklabsというのはオンラインのハンズオントレーニングサービスです。つまり1か月は、タダでWeb上のトレーニングサービスを自由に使えるということです。Googleさま、さすが太っ腹です。あと、Cloud OnAirという木曜日の18時から放送されるGoogleの新製品の機能説明番組があって、それを見て勉強しています。そちらも視聴してしばらくしたらQwicklabsのサブスクリプションをプレゼントしてくれました。
 今のところ、ひとりでもくもくと勉強しておりますが、新しい概念を自分のものにするのはなかなか難しいものですね。誰か一緒に勉強してくれる人、いませんかねぇ♪

不審物か?!

 何の前ぶれもなく、Panasonic Storeから小包が送られてまいりました。

 会社を始めるにあたり、開発の会社なんだから、やっぱりパソコンはサイコーのやつが欲しいよね、ということでLet’s noteの2019年春モデルが発売されるのを少しだけ待って、カスタマイズモデルでスペックが一番よいのをチョイスして購入しました。しばらく使っているうちに、以前使っていたSurfaceにはスタイラスペンがついていたのに、Let’s noteにはついていなかった、ということに気づきました。それで、Panasonic Storeをウロウロして付属品を見つけて、付属品と書いてあるのに別売りなのかよ~、とブツブツ言いながら買い物かごに入れておいた記憶があったのです。なので、荷物が届いたときに思ったのが、まさかスタイラスペンが届いたのか?ということです。でも、まだ一円も利益を出していない会社に、使ってみたいだけのスタイラスペンは無駄遣いだよね、と、注文ボタンは押さなかったはずなんだけど、と、自分を疑ってから、勝手に注文されて送られてきたのか、と、Panasonic Storeを疑いました。

 で、疑うのはそこそこにして、箱を開けてみました。中にはなにやら小さな箱が。

 そう、レッツノートオリジナル名刺ケースが送られてきたのでした。
中に入っていた紙には『「カスタマイズレッツノート2019春モデルご購入特典」プレゼント発送のご案内(中略)今後とも、パナソニック ストアをご愛顧賜りますよう心よりお願い申し上げます。』と書かれてありました。はい、心よりご愛顧、しちゃってますよね~。そして、、、スタイラスペンじゃなかった!
 そして、肝心の名刺ケース、ちょっとぐっときましたよ。(笑)

ローマ字変換ファンクション

 お仕事でひらがなをローマ字に変換するプログラムが必要になったのですが、ちょっと調べてみて、うまく利用できそうなやつが意外となかったのでデータベースOracle用として作ってみました。
 ご利用は自己責任でどうぞ。

CREATE OR REPLACE FUNCTION HIRA2ROMAN (HIRA IN VARCHAR2)
  RETURN VARCHAR2
IS
  TYPE tMapping IS RECORD (
    hira varchar2(10), roman varchar2(10)
  );
  TYPE tTable IS TABLE OF tMapping INDEX BY BINARY_INTEGER;
  vTable tTable;
  REP VARCHAR2(4000);
-- http://www.mext.go.jp/b_menu/hakusho/nc/k19541209001/k19541209001.html
-- 第二表があるものはそちらを優先して、変換対象のひらがなが長い順にならべる
  PROCEDURE INIT IS
    i NUMBER;
  BEGIN
    i := 1;
    vTable(i).hira := 'きゃ'; vTable(i).roman := 'kya'; i := i + 1; -- 第一表
    vTable(i).hira := 'きゅ'; vTable(i).roman := 'kyu'; i := i + 1; -- 第一表
    vTable(i).hira := 'きょ'; vTable(i).roman := 'kyo'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぎゃ'; vTable(i).roman := 'gya'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぎゅ'; vTable(i).roman := 'gyu'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぎょ'; vTable(i).roman := 'gyo'; i := i + 1; -- 第一表
    vTable(i).hira := 'くぁ'; vTable(i).roman := 'kwa'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぐぁ'; vTable(i).roman := 'gwa'; i := i + 1; -- 第二表
    vTable(i).hira := 'しゃ'; vTable(i).roman := 'sha'; i := i + 1; -- 第二表
    vTable(i).hira := 'しゅ'; vTable(i).roman := 'shu'; i := i + 1; -- 第二表
    vTable(i).hira := 'しょ'; vTable(i).roman := 'sho'; i := i + 1; -- 第二表
    vTable(i).hira := 'じゃ'; vTable(i).roman := 'ja'; i := i + 1; -- 第二表
    vTable(i).hira := 'じゅ'; vTable(i).roman := 'ju'; i := i + 1; -- 第二表
    vTable(i).hira := 'じょ'; vTable(i).roman := 'jo'; i := i + 1; -- 第二表
    vTable(i).hira := 'ちゃ'; vTable(i).roman := 'cha'; i := i + 1; -- 第二表
    vTable(i).hira := 'ちゅ'; vTable(i).roman := 'chu'; i := i + 1; -- 第二表
    vTable(i).hira := 'ちょ'; vTable(i).roman := 'cho'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぢゃ'; vTable(i).roman := 'dya'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぢゅ'; vTable(i).roman := 'dyu'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぢょ'; vTable(i).roman := 'dyo'; i := i + 1; -- 第二表
    vTable(i).hira := 'にゃ'; vTable(i).roman := 'nya'; i := i + 1; -- 第一表
    vTable(i).hira := 'にゅ'; vTable(i).roman := 'nyu'; i := i + 1; -- 第一表
    vTable(i).hira := 'にょ'; vTable(i).roman := 'nyo'; i := i + 1; -- 第一表
    vTable(i).hira := 'ひゃ'; vTable(i).roman := 'hya'; i := i + 1; -- 第一表
    vTable(i).hira := 'ひゅ'; vTable(i).roman := 'hyu'; i := i + 1; -- 第一表
    vTable(i).hira := 'ひょ'; vTable(i).roman := 'hyo'; i := i + 1; -- 第一表
    vTable(i).hira := 'びゃ'; vTable(i).roman := 'bya'; i := i + 1; -- 第一表
    vTable(i).hira := 'びゅ'; vTable(i).roman := 'byu'; i := i + 1; -- 第一表
    vTable(i).hira := 'びょ'; vTable(i).roman := 'byo'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぴゃ'; vTable(i).roman := 'pya'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぴゅ'; vTable(i).roman := 'pyu'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぴょ'; vTable(i).roman := 'pyo'; i := i + 1; -- 第一表
    vTable(i).hira := 'みゃ'; vTable(i).roman := 'mya'; i := i + 1; -- 第一表
    vTable(i).hira := 'みゅ'; vTable(i).roman := 'myu'; i := i + 1; -- 第一表
    vTable(i).hira := 'みょ'; vTable(i).roman := 'myo'; i := i + 1; -- 第一表
    vTable(i).hira := 'りゃ'; vTable(i).roman := 'rya'; i := i + 1; -- 第一表
    vTable(i).hira := 'りゅ'; vTable(i).roman := 'ryu'; i := i + 1; -- 第一表
    vTable(i).hira := 'りょ'; vTable(i).roman := 'ryo'; i := i + 1; -- 第一表
    vTable(i).hira := 'あ'; vTable(i).roman := 'a'; i := i + 1; -- 第一表
    vTable(i).hira := 'い'; vTable(i).roman := 'i'; i := i + 1; -- 第一表
    vTable(i).hira := 'う'; vTable(i).roman := 'u'; i := i + 1; -- 第一表
    vTable(i).hira := 'え'; vTable(i).roman := 'e'; i := i + 1; -- 第一表
    vTable(i).hira := 'お'; vTable(i).roman := 'o'; i := i + 1; -- 第一表
    vTable(i).hira := 'か'; vTable(i).roman := 'ka'; i := i + 1; -- 第一表
    vTable(i).hira := 'が'; vTable(i).roman := 'ga'; i := i + 1; -- 第一表
    vTable(i).hira := 'き'; vTable(i).roman := 'ki'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぎ'; vTable(i).roman := 'gi'; i := i + 1; -- 第一表
    vTable(i).hira := 'く'; vTable(i).roman := 'ku'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぐ'; vTable(i).roman := 'gu'; i := i + 1; -- 第一表
    vTable(i).hira := 'け'; vTable(i).roman := 'ke'; i := i + 1; -- 第一表
    vTable(i).hira := 'げ'; vTable(i).roman := 'ge'; i := i + 1; -- 第一表
    vTable(i).hira := 'こ'; vTable(i).roman := 'ko'; i := i + 1; -- 第一表
    vTable(i).hira := 'ご'; vTable(i).roman := 'go'; i := i + 1; -- 第一表
    vTable(i).hira := 'さ'; vTable(i).roman := 'sa'; i := i + 1; -- 第一表
    vTable(i).hira := 'ざ'; vTable(i).roman := 'za'; i := i + 1; -- 第一表
    vTable(i).hira := 'し'; vTable(i).roman := 'shi'; i := i + 1; -- 第二表
    vTable(i).hira := 'じ'; vTable(i).roman := 'ji'; i := i + 1; -- 第二表
    vTable(i).hira := 'す'; vTable(i).roman := 'su'; i := i + 1; -- 第一表
    vTable(i).hira := 'ず'; vTable(i).roman := 'zu'; i := i + 1; -- 第一表
    vTable(i).hira := 'せ'; vTable(i).roman := 'se'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぜ'; vTable(i).roman := 'ze'; i := i + 1; -- 第一表
    vTable(i).hira := 'そ'; vTable(i).roman := 'so'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぞ'; vTable(i).roman := 'zo'; i := i + 1; -- 第一表
    vTable(i).hira := 'た'; vTable(i).roman := 'ta'; i := i + 1; -- 第一表
    vTable(i).hira := 'だ'; vTable(i).roman := 'da'; i := i + 1; -- 第一表
    vTable(i).hira := 'ち'; vTable(i).roman := 'chi'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぢ'; vTable(i).roman := 'di'; i := i + 1; -- 第二表
    vTable(i).hira := 'つ'; vTable(i).roman := 'tsu'; i := i + 1; -- 第二表
    vTable(i).hira := 'づ'; vTable(i).roman := 'du'; i := i + 1; -- 第二表
    vTable(i).hira := 'て'; vTable(i).roman := 'te'; i := i + 1; -- 第一表
    vTable(i).hira := 'で'; vTable(i).roman := 'de'; i := i + 1; -- 第一表
    vTable(i).hira := 'と'; vTable(i).roman := 'to'; i := i + 1; -- 第一表
    vTable(i).hira := 'ど'; vTable(i).roman := 'do'; i := i + 1; -- 第一表
    vTable(i).hira := 'な'; vTable(i).roman := 'na'; i := i + 1; -- 第一表
    vTable(i).hira := 'に'; vTable(i).roman := 'ni'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぬ'; vTable(i).roman := 'nu'; i := i + 1; -- 第一表
    vTable(i).hira := 'ね'; vTable(i).roman := 'ne'; i := i + 1; -- 第一表
    vTable(i).hira := 'の'; vTable(i).roman := 'no'; i := i + 1; -- 第一表
    vTable(i).hira := 'は'; vTable(i).roman := 'ha'; i := i + 1; -- 第一表
    vTable(i).hira := 'ば'; vTable(i).roman := 'ba'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぱ'; vTable(i).roman := 'pa'; i := i + 1; -- 第一表
    vTable(i).hira := 'ひ'; vTable(i).roman := 'hi'; i := i + 1; -- 第一表
    vTable(i).hira := 'び'; vTable(i).roman := 'bi'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぴ'; vTable(i).roman := 'pi'; i := i + 1; -- 第一表
    vTable(i).hira := 'ふ'; vTable(i).roman := 'fu'; i := i + 1; -- 第二表
    vTable(i).hira := 'ぶ'; vTable(i).roman := 'bu'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぷ'; vTable(i).roman := 'pu'; i := i + 1; -- 第一表
    vTable(i).hira := 'へ'; vTable(i).roman := 'he'; i := i + 1; -- 第一表
    vTable(i).hira := 'べ'; vTable(i).roman := 'be'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぺ'; vTable(i).roman := 'pe'; i := i + 1; -- 第一表
    vTable(i).hira := 'ほ'; vTable(i).roman := 'ho'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぼ'; vTable(i).roman := 'bo'; i := i + 1; -- 第一表
    vTable(i).hira := 'ぽ'; vTable(i).roman := 'po'; i := i + 1; -- 第一表
    vTable(i).hira := 'ま'; vTable(i).roman := 'ma'; i := i + 1; -- 第一表
    vTable(i).hira := 'み'; vTable(i).roman := 'mi'; i := i + 1; -- 第一表
    vTable(i).hira := 'む'; vTable(i).roman := 'mu'; i := i + 1; -- 第一表
    vTable(i).hira := 'め'; vTable(i).roman := 'me'; i := i + 1; -- 第一表
    vTable(i).hira := 'も'; vTable(i).roman := 'mo'; i := i + 1; -- 第一表
    vTable(i).hira := 'や'; vTable(i).roman := 'ya'; i := i + 1; -- 第一表
    vTable(i).hira := 'ゆ'; vTable(i).roman := 'yu'; i := i + 1; -- 第一表
    vTable(i).hira := 'よ'; vTable(i).roman := 'yo'; i := i + 1; -- 第一表
    vTable(i).hira := 'ら'; vTable(i).roman := 'ra'; i := i + 1; -- 第一表
    vTable(i).hira := 'り'; vTable(i).roman := 'ri'; i := i + 1; -- 第一表
    vTable(i).hira := 'る'; vTable(i).roman := 'ru'; i := i + 1; -- 第一表
    vTable(i).hira := 'れ'; vTable(i).roman := 're'; i := i + 1; -- 第一表
    vTable(i).hira := 'ろ'; vTable(i).roman := 'ro'; i := i + 1; -- 第一表
    vTable(i).hira := 'わ'; vTable(i).roman := 'wa'; i := i + 1; -- 第一表
    vTable(i).hira := 'を'; vTable(i).roman := 'wo'; i := i + 1; -- 第二表
  END;
BEGIN
  INIT;
  REP := HIRA;
  FOR i in vTable.FIRST .. vTable.LAST LOOP
    REP := REPLACE(REP, vTable(i).hira, vTable(i).roman);
  END LOOP;

  -- その他の変換ルール
  -- yと母音(aeiou)が続く「ん」は、「n'」と続くyまたは母音(aeiou)に変換
  REP := REGEXP_REPLACE(REP,'ん([yaeiou])','n''\1');
  -- その他の「ん」は「n」に変換
  REP := REPLACE(REP,'ん','n');
  -- 「っ」は、続く子音の文字を重ねるよう変換
  REP := REGEXP_REPLACE(REP,'っ(.)','\1\1');
  RETURN REP;
END;
/

DMBOK2概説セミナー

 現在ぼくは、データマネージメント協会日本支部(DAMA Japan Chapter(略称 DAMA-J))という組織の会員です。そちらから「DMBOK2 概説セミナー」のお知らせが送られてまいりましたので、聞いてきました。ちなみにDAMA-Jというのは、国際データマネージメント協会(Data Management Association International(略称 DAMA-I)) の日本支部で、データ管理を実践する国際的な非営利団体で、データマネージメントを普及するために活動しています。

 ここでDMBOK2といっているのは、データマネージメント知識体系ガイド 第二版(DATA MANAGEMENT BODY OF KNOWLEDGE SECOND EDITION)のことで、DAMA-Iから出版された書籍の日本語訳本のことです。2018年12月にDAMA-J会員有志の方々によって翻訳されました。ぼくは会員になって日が浅くて、翻訳にも参加していないし、内容も軽くしか理解していません。会員の方の会話についていくのがやっと、という状況なので、今回のセミナーは、ぼくのような書籍の内容が難しくてよく分かりません、という人たちはとってもありがたいものでした。
 セミナーは、

  • データマネジメント概説(15分)
  • DMBOK2概説(45分)
  • DMBOK2第1章概説(45分)

という構成になっていて、終了後にフリーディスカッション(懇親会)という感じでした。すべてをここに記載するわけにはいかないので、現時点で受け取れた、ぼくなりのデータマネージメントのまとめを記載しておきます。

データマネジメントのまとめ

  • データとは
    • 日常業務を記録する
    • 企業にとって重要な資産(ただし、積極的に管理している組織はほとんどない)
    • データが集まることで(データ→インフォメーション→ナレッジ→ウィズダム)
      • 意思決定の基になる
      • 知恵を創出する基になる
  • データマネジメントについて
     データマネジメントは、データを資産として考え、その価値を高めるために実施されます。それぞれのデータに存在するライフサイクルについて維持管理するための計画や手順を決めることや、それらを実施することもデータマネジメントに含まれます。より詳細な内容は書籍にゆだねるとして、キーワードとしては以下のようなものがありました。
    • データの資産価値を高めるために行う
      • 正確さ、完全性、新しさ、整合性、アクセスしやすさ、セキュアなど
      • 信頼性の高い高品質なデータにより → 優れた意思決定が可能になる
    • ITの発展により、その重要性が増してきている
      • IT活用範囲とデータ活用範囲は異なっている
    • データの価値
      • 物理的なものではなく、金銭的価値を与えるのが困難
      • 評価基準がなく価値を定めるのが難しい
      • 品質の低いデータは処理コストがかかり、ビジネス戦略に悪影響を及ぼす
    • より高品質なデータを目指す
      • 計画
      • アーキテクチャ
      • モデリング
      • 戦略的なアプローチ
    • メタデータ、データライフサイクル
      • 業務スキル
      • 高度なITスキル
      • 組織横断的で全社的な視点

 DMBOK2は、データマネージメントに関する知識について、ITのツールだけでなく、人や組織、プロセス面からも検討された導入書になっています。もし興味を持たれた方は、ぜひ一緒にDAMA-Jで学びましょう。

Googleさまからお電話が!

Google Cloud Platformを始めてちょうど2か月ほど経ったところ、Google Cloudさまからお電話をいただきました。ぼくはちょうど不在だったということで、「 【GCP無料トライアル】ご登録ありがとうございました 」というタイトルでメールをいただきました。クレジットカードによる決済方法も登録してあったので、無料トライアル中だとは思っていなかったのですけど、そうなのですね。

その後、電話がつながったので、「こんなところに問題があって、こんな風に利用したいと思っています。」と、お伝えしたところ、提案させてほしい、ということに。ま、営業活動でやっていることでしょうから、当然の流れですよね。本来はGCPを学んで検証の終わったぼくが、こんな風に構築したいと思っています、と、お客様に提案しようと思っていたので、これからどんな流れで仕事が進むのか、ちょっと不安な気持ちになりました。でも、いろいろとより早く、より便利になるならそこには目をつぶりましょう。

ぼくは競合に負けないように、GCPの使い方についていろいろと検証しないといけませんね。ということで、先日入門トレーニングで教えてもらった、QWIKLABSのクエストにチャレンジしてみます。QWIKLABSはGCPを学べるオンライン学習プラットフォームです。最初のクエストはなぜか英語ですが「GCP Essentials」です。
さあ、がんばるぞ~!