AzureにRedmineを立ててgithubと連携する方法

なぜやろうと思ったのか

社内で使っていたredmineでタスクの内容とgithubのコード変更を結び付け、トレースできるようにするため。 本番環境でいきなり試すわけにはいかないのでDockerを使ってみたり色々試したのち、AzureのVMでやるとうまくいったので。 「redminegithubの連携を試したいけどどんな環境でやればいいの」という人に使えるかもです。

できるようになること

gitのコミットメッセージに「refs #〇〇」という文字列を含めることで、対応した番号のissueからこのcommitの情報や変更内容を参照できるようになる。 f:id:nam_yu_sql:20190329080947p:plain commit毎の変更内容が確認できるのでどのIssueでどのような修正をしたかが分かる。 f:id:nam_yu_sql:20190329081059p:plain また、リポジトリから対応するissue番号にリンクすることもできる。 f:id:nam_yu_sql:20190329075845p:plain

前提

方法

1.AzureにVMを建てる。DNSを設定する。

Azureポータルからリソースの作成ボタンを押し、検索欄で「bitnami redmine」を入力して検索する。 f:id:nam_yu_sql:20190329075910p:plain

検索結果から「Redmine Certified by Bitnami」を選択して、作成ボタンを押す。 f:id:nam_yu_sql:20190329080009p:plain

仮想マシン名は適当に設定し、管理者アカウントはパスワードにして、ユーザー名とパスワードを設定する。 ここで設定したパスワードはVMへのログインに使用する。

デプロイが終わったら、作成したVMのメニューを開く。

DNS名の欄の「構成」ボタンから、DNS名の欄のの構成の設定を行う。DNS名ラベルの欄に任意のDNS名を入力して保存する。 f:id:nam_yu_sql:20190329080036p:plain f:id:nam_yu_sql:20190329080109p:plain

2.VMgithub_redmine_hookプラグインをインストールする

VMのメニューを開いて「接続」ボタンを押す。右側の画面で「SSH」タブを選び、「VMローカルアカントを使用してログインする」欄の右側のコピーボタンを押してコピーしておく。

Cloud Shell(以下Shell)を開き、コピーしたログイン用コマンドをペーストしてVMにログインする。Shellにペーストする際はCtrl+Shift+Vでペーストすること。

redmineプラグインを保存するディレクトリに移動し、gitからそこにプラグインをダウンロードしてくる。

cd ~/apps/redmine/htdocs/plugins
git clone https://github.com/koppen/redmine_github_hook.git

3.プラグイン内の一部コードを編集する

プラグインのファイルの中の「github_hook_controller.rb」において、4行目の「skip_before_filter」を「skip_before_action」に書き換える。 以下のコマンドを実行したらiキーを押して編集モードにして編集し、編集がおわったらエスケープキーを押してから「:wq」を入力して保存する。

vi ~/apps/redmine/htdocs/plugins/redmine_github_hook/app/controllers/github_hook_controller.rb

4.VM再起動してredmineにログインして確認

VMのメニューに戻り、再起動ボタンを押してVMを再起動させる。

再起動が終わったら、DNS名の欄の横にあるコピーボタンを押してDNS名をコピーし、ブラウザの別のタブのURLにペーストしてアクセスする。

右上のログインボタンを押してログインする。ログインIDは「user」、パスワードはShellでパスワードが保存されているファイルを見て確認する。

cat ~/bitnami_credentials

redmineの右上のAdministrationメニューから、Pluginsに移動する。

Redmine Github Hook pluginという名前のプラグインが追加されていれば成功。 f:id:nam_yu_sql:20190329080135p:plain

5.daemonになってssh認証鍵を作成

ssh認証情報が保管されるディレクトリを作成し、所有権をdaemonに渡す。

cd /usr/sbin
sudo mkdir .ssh
sudo chown daemon .ssh

ユーザーをdaemonに変更する。

sudo -su daemon

daemonrsaキーを作成する。 キーの名前、パスフレーズを聞かれるが内容は空白のままでよい。

cd .ssh
ssh-keygen -t rsa

6.configファイルを作って編集

configファイルを作成する。

touch config
vi config

作成したconfigファイルの中身を編集する。 編集がおわったら:wqを入力して保存する。

Host github github.com
  HostName github.com
  IdentityFile /usr/sbin/.ssh/id_rsa
  User git

7.githubの自分のアカウントに公開鍵を登録

自分のgithubアカウントでgithubにログインする。

右上のアカウントアイコンのメニューから「Settings」に入る。

左のメニューから「SSH and GPG keys」を選ぶ。

「New SSH key」ボタンを押してキー追加画面に入る。

Titleにはわかりやすい名前を、Keyには作成したrsaキーの公開鍵の内容をペーストする。 公開鍵の内容は以下のファイルからコピーする。

cd /usr/sbin/.ssh
cat id_rsa.pub

8.VMからgithubへの接続のテストを行う

daemonの状態で以下のコマンドを実行する。 「hi [自分のgithub上での名前]! ~~~」と出れば成功。

ssh -T git@github.com

9.テスト用リポジトリを作成

github上で何かしらのプライベートなリポジトリを作成する。

10.VMリポジトリをpull

作成したリポジトリのページに行き、「Clone or download」ボタンをクリックする。

出てきたポップアップの「Use SSH」を押し、Clone with SSHがタイトルに出てきたら、そのurlをコピーする。

Shellに戻り、作成したリポジトリを置くための適当なディレクトリを作る。 作ったら、そのディレクトリにリポジトリをクローンしてくる。

git clone --bare [コピーしたurl]

11.redmineでプロジェクトを作ってリポジトリを割り当て

redmineの画面右上「Projects」を開き、その中の右上にある「New project」をクリックする。

わかりやすいプロジェクト名を入力して「Create」を押す。 なお、このときにIdentifierの欄に入力した項目は後で使うのでコピーしておくこと。

12.リポジトリのwebhookを設定

再びgithubリポジトリのページに移動する。タブの「Settings」を開き、左のメニューからWebhooksに移動する。

Webhooks画面の右上「Add Webhook」ボタンを押し、webhookを追加する。Payload URLには以下の内容を入力する。他の項目はそのままでよい。

http://[redmineを立てているVMのDNS名]/github_hook?project_id=[作成したredmineのプロジェクトのIdentifier]

13.issueを一つ作成

redmineのプロジェクト内、Issueタブを開き、右の方にある+ New Issueボタンを押す。

内容は適当に設定し、保存する。

14.ローカルPCにリポジトリをcloneしてくる

githubの作成したリポジトリのページに行き、「clone or download」ボタンを押し、今回はClone with HTTPSで表示されているurlをコピーする。

ローカルPCの適当なディレクトリに、先程コピーしたurlを使ってリポジトリをcloneする。

git clone [コピーしたurl]

15.git initする

cloneしてきたリポジトリがあるディレクトリに移動し、そこでgitを初期化する。

git init

16.何かしらファイル作って「refs #1 fix」というコメントでcommit&pushする

何かしらのファイルを作成し、それをステージングファイルにaddする。

touch file
git add file
git commit
git push

17.確認

redmineのIssueを確認する。先程作ったIssueのページにそのIssueと結びついたcommitの情報が表示されていれば成功。 f:id:nam_yu_sql:20190329080316p:plain

参考

Azure上にRedmineを立てる [AWS(Bitnami)上のRedmineGitHubを連携させる] (https://qiita.com/ao89exb/items/c67a20e5dbc559297104) ↑AWSを使用しているもののVM内での操作はAzureでも同じ。

それは置いといて今週末応用技術者試験受けます。

 

namyusql.hatenablog.com

 それは置いといて。

今週末10/21はIPA情報処理推進機構の試験の日だ。

その中でぼくは応用技術者試験を受ける。

先週までは統計検定1級の勉強ばかりやってたけれど、もっと前の段階で午前問題は合格点に乗っていたし、午後問題も手に負えていたのでまあ大丈夫だろう、ってところである。

とはいっても試験前の一週間くらいは追い込みかけようってことで、今週はこれまでに過去問を1周解いて、これから試験日までにあと1~2周回そうと思っている。

ぼくのレベルは

過去の記事にも書いたとおり。 

namyusql.hatenablog.com

 情報系の専門教育は受けていない。

ただただ経済学部でウェイできなかったコンピュータが友達の人。

一通りのコンピュータの使い方は分かるし見られたくない履歴は消せるしフリーズしたら電源ボタンを押して強制終了させたりはするし程度のリテラシーはある。

ネットワークとかハードウェアのあれこれについては基本情報技術者試験の時に一通り理解している感じ。

どこが難しい?

試験概要とか過去問とかあるいはほかのブログを見てきたなら知ってるだろうけど、午後問題で記述式で答える点が基本情報と応用情報の試験の大きな違い。

とだけ聞いてもその言葉だけだと具体的なレベルが分からなくて想像の上だけで「難しそうだなー」とか思いがちになる。実際僕もそれでしばらく過去問の午後問題に手が出せなかったし。

けど実際のところ、午後問題の数のうち6割くらいは基本情報の時と変わらないような選択問題で、その中に特定のものを示す単語を答えよとか理由を答えよといった内容が加わる。

理由を答えるのは20-40文字とかそこそこの分量は要求されるが、それでもその程度である。1文で答える範囲である。

単語を答えるのが選択式じゃなくなるのは痛いが、それでも案外覚えていたりする。

覚えてなかったらご愁傷様。

けど、難しいのはそのくらいで、午前の問題は心持ち範囲が増えたらしい?(基本と比べてどれくらい内容が増えたか忘れた)って程度なのでそこまで難しくなった気もしない。

何読んで学習してるの

一応応用技術者試験向けのテキストは一冊買っておいた。

ぼくが買ったのは確か青表紙で中は緑色メインの本だったと思う。ちょっと探したけどそれっぽいのが見当たらなかった。

選び方として、基本情報を勉強するときは絵での説明がなかなか好みだった北見隆二さんの本で勉強していた。

けれど、これからあと目指しているデータベーススペシャリストとかプロジェクトマネージャーとかの参考書を見ると絵面が地味な本が殆どで、そういったものにも慣れなきゃなーと思って絵面が地味目、内容が網羅的なものを選んだ。

特にそういったことを考えなければキタミ式が一番わかりやすい気がする。 

 あとは過去問。試験サイトの過去問の解答は解説がないので。

平成30年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

平成30年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

 

 勉強用に読んだ本はこれくらい。

割と余裕があったのであとはデータベーススペシャリストのテキストとかセキュリティスペシャリストのテキストとか読んでいた。

勉強法は?

テキストを何周か読んで、自信がついたら過去問解いて、分からないところがあったらテキストに戻って読み直す。

過去問を解いて覚えなきゃいけなさそうで現状覚えていないものについてはメモして覚えていこう。といった感じ。

他にできることが思いつかない。

午後問題については、特にデータベースの問題についてはINNER JOINを扱う問題が頻発していたので、そこについてはクエリを勉強し直した。

けれども、ほかの問題についてはこれといった対策が思い浮かばない。

損益計算書貸借対照表を扱った問題もあり、ある程度それに関する知識がある人はそういう問題を優先して解いたりそこに関する知識をおさらいしておくと勉強になったりするのかもしれない。

あとは必答のセキュリティに関してはあまり手の付けようがないし、アルゴリズム関連についても勉強してどうにかできることがあまりない。

せいぜいどの問題が得意か把握して、本番ではこれ解こうかなーとか優先順位をつけておくくらいはしている。

勝算は?

7-8割くらい。午後問題は過去問解いて丸付けしても採点ができないので、そこに関する不安はある感じ。

まあ合格しなくても来年の春はデータベーススペシャリスト受けるし、秋にはプロジェクトマネージャーを受けようと思ってはいる。

統計検定1級を受験します。

ぼくは来月の24日に、統計検定の1級を受けようと考えている。

それにあたって、これまでも統計検定関連のブログはいくつか見てきたけど、割とレベルが高い人が多くて「そりゃ合格するだろ」と感じていた。

一方で自分はというと大学で統計学の講義は受けたけど期末試験は計算系の問題、他にゴリゴリ数学の証明問題を解くような経験はなく、統計検定2級は計算のやり方を覚えて合格をした程度のレベルである。

つまり、一級でメインになるような「~を示せ。」だとか、「~の式を~を用いて表せ。」みたいな問題について、現状どう答えたらいいかすら分からない。

なので、そんなレベルでどうにかこうにか統計検定1級レベルの統計力(ぢから)を手に入れようとして現状やっていることと目指すものを整理しながら、同程度の人の参考になるような情報を纏めておきたい。

参考書、サイト

どのブログでも書籍紹介をしているしそれを見るために統計検定受けましたブログを見てるところがあるのでここでも紹介していく。

 

 

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2016〜2017年]

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2016〜2017年]

 
日本統計学会公式認定 統計検定1級対応 統計学

日本統計学会公式認定 統計検定1級対応 統計学

  • 作者: 二宮嘉行,大西俊郎,小林景,椎名洋,笛田薫,田中研太郎,岡田謙介,大屋幸輔,廣瀬英雄,折笠秀樹,日本統計学会,竹村彰通,岩崎学
  • 出版社/メーカー: 東京図書
  • 発売日: 2013/04/08
  • メディア: 単行本
  • この商品を含むブログ (5件) を見る
 

公式テキスト&過去問。

基本的に資格試験の過去問と解答は公式サイトで手に入るものだが、解答は略解で「細かい解説が欲しかったら過去問本買ってね」というスタイルである。

なので買った。

現代数理統計学の基礎 (共立講座 数学の魅力)

現代数理統計学の基礎 (共立講座 数学の魅力)

 

これは下記のブログでも紹介されてて重要そうなので買った。

 

hawkingh.hateblo.jp

この本は、内容は理解できるけど章末問題が解けなくて行き詰った。

解答も略解なので、元々数学ができてないと問題の形式や解き方のセオリーみたいなのが分からないのかもしれない。

今ブログを読むと、

解説→演習問題という、よくあるタイプの参考書形式。だが、とにかく説明が分かり易い。「いや、その分かり易いって分かり易くないだろ」っていうのはコミュニケーションを解さない数学書あるあるだが、これは本当にそんなことはないと思う。というより、これにある数式が理解できないときは、数学の理解に穴がある状態なので、立ち戻った方が良い。

とあったのでぼくは立ち戻った方がいいかもしれない。

なお、紹介されているマンガで分かる系の書籍は全部一通り読んでいる。

最近は機械学習編が出てた。表紙の子かわいい。

 

他にも統計学テキストは何冊か持っているが、直接勉強に使っているのはこの3冊。

公式テキストで広く浅く、細かいところは久保川統計、問題集は公式のもの、といった組み合わせ。ただし、最近はどっちかというとネットのサイトを見ることが多い。

主にみているのは以下。

data-science.gr.jp

to-kei.net

「〇〇分布 期待値 導出」とか「〇〇分布 モーメント 導出」あたりで検索出てくるとほとんどこの二つのサイトが出てくる。

導出方法を纏めたいときはここを見てる。

今やってること

一番参考にしているのはこれ。

qiita.com

実際、試験問題は確率分布に関わるものと分析手法にかかわる部分の二つに分かれている。

なので、まずは確率分布の期待値、分散、モーメント母艦数を自力で導出できるようになるのを目指している。

上記サイト辺りを参考にしながら、曼荼羅と導出をまとめたものをこれまでに作ったのでそれを覚えようとしている。

作ったもの

f:id:nam_yu_sql:20181011103718j:plainf:id:nam_yu_sql:20181011103723j:plainf:id:nam_yu_sql:20181011103728j:plain

f:id:nam_yu_sql:20181011103735j:plainf:id:nam_yu_sql:20181011103740j:plainf:id:nam_yu_sql:20181011103750j:plain

それが終わったら統計手法(たぶん社会統計で受けると思うのでR関連)あたりを問題を解きながら勉強していく予定。

ただ、ここまでやってもまだ問題を解けるところまでは進んでいない。

実際にはほかに尤度関数だとか知識として足りないところもあるし、式変換など数学の基礎的な部分をもっと鍛えなければならない。

要するに「数学の問題を解く」というスキルが別に必要であるのだけど、これに関しては自力で問題を解いてもそれが合っているかどうかわからないので、誰かに教えてもらわなければならない。

ので、教えてもらいに行くことにしている。

展望

統計検定1級の問題は計算ができるだけでも特性値が出せるだけでも解けない。

もっと細かい知識も必要だし、逆にもっと基礎的な数学の能力も必要になってくる。

けど、どちらを学習していくにしても定期的に問題を読み直しつつ、「何が分かっていたら解けるか」辺りを考えながら見ている。

そのうちどこのどういう知識を使って解けばいいかわかるようになれば、もっと学習が進みそうな感じがする。

合格点は全体の6割なので、そこを越せる程度にはなっておきたい。

ボイスコッド正規形について自分用まとめ その2

 

namyusql.hatenablog.com

 前回はボイスコッド正規形について、特徴、メリット、作り方といった基礎的な内容について書いた。

今回は、その補足的なトピックとして、ボイスコッド正規形を作る際に気を付けるべきことと、ボイスコッド正規形で起きうる問題について取り扱う。

ボイスコッド正規形を作る際に気を付けるべきこと

第三正規形からボイスコッド正規形にしようとしてテーブルを分けるとき、それがボイスコッド正規形になっていない例が前回も紹介した書籍に挙げられている。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

 

ボイスコッド正規形にするための正しいテーブルの分け方は社員ID-チーム補佐、チームコード-チーム補佐であった。

しかし、もし社員ID、チームコード、チーム補佐の例で、社員ID-チームコード、チーム補佐-チームコードでテーブルを分けていたらどうなっていただろうか。

この本の中では、その結果起きることとして「元のテーブルに戻すことができない」ということが強調されている。

間違ったテーブルの分け方をすると、正規化する際に必要なことである可逆性がなくなったりして問題が起きてしまうので、正しい形で分割しようねということである。

「元のテーブルに戻すことができない」とは

勉強会の中でも、まちがったテーブルの分け方をすると「元の形に戻せなくなる」という言い回しで説明されたが、初めはこの言葉がうまく理解できなかった。

けどいくつかページを見て回ったりしてどうにか理解できるようになってきたのでまとめておく。

ここでいう「元のテーブル」とは、つまり第三正規形まで正規化した形のテーブルである。

 章末のコラムに

正規化 によって 分割 さ れ た テーブル は、 いつ でも 非 正規化 テーブル に 復元 する こと が でき ます。

とあるように、ボイスコッド正規形に正規化されたテーブルは、分割されたテーブルを結合することで正規化する前の形に戻すことができる。

例の中では、チームコードをキーにしてテーブル結合することで、社員ID-チームコード、チーム補佐-チームコードのテーブルを社員-チームコード-チーム補佐の形に戻すことができる。

これが「戻すことができない」という例として、社員ID-チームコード、チームコード-チーム補佐で切り分けた場合を考えてみる。

この場合、2つのテーブルをチームコードをキーにしてテーブルを結合しようとすると、一つのチームに複数のチーム補佐がつく場合があるので、その社員につくチーム補佐の人が誰なのか一意に求まらず、社員とチーム補佐が1対1で結び付けられた状態に戻せない。

このことが、「元のテーブルに戻すことができない」ということである。

こうならないために、テーブルを分割する際は、ボイスコッド正規化する場合だけに限らず、この分割の結果から元に戻そうとしたときそれができるかを考えたり、試したりしなければならない、という話である。

ボイスコッド正規形にしても起きる問題

前回説明したとおり、ボイスコッド正規形にすることで厳密に従属関係を分割することができる。

しかし、これによってデータベースのテーブル設計における全ての問題が解決できたわけではない。

社員ID、チーム補佐、チームコードの例に戻る。

この例においては要件として、一人の社員は一つのチームに所属することになっている。

しかし、ボイスコッド正規形に正規化したテーブルには、同じ社員と別のチーム補佐のペアを追加することによって、別のチームを掛け持ちしていることになる可能性もある。

なぜなら、チーム補佐はそれぞれ一つのチームと1対1で結びついているので、別のチーム補佐をキーにして結合すると同じ社員が別のチームと結び付けられるためである。

これを防ぐにはテーブルに入力する際に同じ社員に二人以上入力しないようにするなどの処理をプログラムの側で書かなければならないことになる。

この点がボイスコッド正規形においても残る問題とされる点である。

まとめ

  • 正規化は失敗するとテーブルを正規化する前に戻せなくなるので気を付ける。
  • ボイスコッド正規形にしてもテーブル設計の問題が全部解決されるわけではないので設計する際は気を付ける

今回は、ボイスコッド正規形について前回書ききれなかった内容を自分なりにまとめてみた。

いくらでも内容を濃くはできなかったが、要約はできたと思う。

 

ボイスコッド正規形について自分用まとめ その1

この間行ってきた勉強会でボイスコッド正規形の講義があり、自分でもこれまでよく理解できなかったので自分なりにまとめてみる。

ボイスコッド正規形とは(定義)

「非キーからキーへの関数従属をなくした形」

達人に学ぶDB設計より。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

 

ボイス-コッド正規形は、すべての関数従属(X->A)において、Xがテーブル全体のスーパーキーであるということだ。 

 プログラマのためのSQLより。

ボイスコッド正規形にすると何がうれしいのか

テーブルをボイスコッド正規形にするにあたっては、前提としてそのテーブルが第三正規形を満たしている必要がある。

この第三正規形においては、推移的関数従属(例えば、Aを決めるとBが一意に決まり、Bを決めるとCが一意に決まるがAを決めるとCも一意に決まってしまう状態)がない状態とされるが、厳密にはまだ残っている場合がある。

例えば、AとBを決めるとCが一意に決まるが、Cを決めるとBが一意に決まってしまう場合である。

この時、AとBを決めるとBが一意に決まる(当然と言えば当然)ので、推移的な関数従属が生じてしまう。

こうなると、C->Bの関係に変化が生じたとき、その変化に応じて書き換える行の数が増えてしまうなどの不具合が生じる。

ボイスコッド正規形にすると、この問題がなくなり、一通り関係の変化に対応できるテーブルとなるのがこの正規形にすることのうれしい点。

一般的に、第一、第二、第三正規形を作ってボイスコッド正規形まで作れば実務に耐えられるテーブルになるという話もある。

ボイスコッド正規形の作り方

前述のA,B->CとC->Bという関係がある場合、このC->Bの関係を別テーブルに切り出す。

達人に学ぶDB設計の例

 
社員ID チームコード チーム補佐
     
     

ここでは社員IDがA、チームコードがB、チーム補佐がCの関係なので、

社員ID チームコード
 
 
 
 

これと

チーム補佐 チームコード
 
 
 
 

これに分ける。

これによって、チーム補佐が担当チームを変える時は下のテーブルを書き換えるだけで上のテーブルに反映される。(一時的に社員につくチーム補佐がいなくなることもある)

また、まだ誰も所属していないチームにチーム補佐を割り当てることもできる。

 これにてボイスコッド正規形が完成し、テーブルの中から厳密に推移的な関数従属を取り除くことができた。

まとめ

今回はボイスコッド正規形について、定義から作り方、メリットまでをまとめた。

  • ボイスコッド正規形は第三正規形まで正規化されたテーブルから作られる。
  • ボイスコッド正規形にすると推移的関数従属を完全に取り除ける
  • これによって関係の追加や削除の際に起きる問題を取り除ける

次回予告

ボイスコッド正規化のためにはテーブルを分ける。

その際、分け方が悪いと問題が生じるので気を付けようねというトピックについて。

また、ボイスコッド正規化してもまだ起きる問題はある、というお話。

この辺りについて次回。

せっかくの週末なのでcourseraでGCPの講座を受けてた。(完了形)

先週と今週は続けて3連休だ。

先週の3連休は何してたっけ?思い出せないのは色々とまずい気がする。

それは置いておいて、今週は今週とて3連休で時間もあったので、最近他の人の記事で見かけたcourseraの講座を受けてみた。

この講座を受けるきっかけになった記事がこちら↓

Googleの機械学習のレッスンが無料で受けれて資格が貰える余暇。 : ひろゆき@オープンSNS

 

この記事を見て「強いな」と思ったのは、以下の部分。

さらに9/30までにコースを修了させると、 Google Cloud PlatformやAmazon Web Servicesを使って学習出来るqwiklabsの$30のクレジットがもらえたりします。
5個のコースがあるので、$150ですよ!

タダでGCPを使って遊べる!強い!

 ついでに前回のブログでも述べたように普段使っているAzure以外のクラウドプラットフォームを触りたかったというところもあったので実際に受けてみることにした。

namyusql.hatenablog.com

 

講座の概要

受けた講座は以下。

Data Engineering on Google Cloud Platform | Coursera

 この講座は5つのコースに分かれており、それぞれの内容は

  1. データ分析に利用する各サービスの特徴
  2. ノードのクラスタを作るDataprocの解説
  3. 巨大なデータベースに対してクエリを送るBigQueryの解説
  4. TensorFlowをGCPで使った機械学習の解説
  5. やってくるデータをストリーミングするPub/SubとDataFlowの解説

となっている。それぞれの所要時間は大体6-8時間ほどで、一日に12時間-18時間ほど費やせば二日と半日で終わる分量である。

全編を通すことで、GCPでデータ分析を行う際に必要な機能が一通り理解できることになる。

内容としては、基本的には動画を見ること、そして理解度を確かめるテスト、そして後述するLabがあり、講座内のテストとLabにすべて合格することで修了したとみなされる。

特に、4の機械学習の講座では、機械学習の基礎的な知識からそれぞれの分析手法、量的なデータとは、カテゴリカルなデータとはといったトピックまで網羅されており、機械学習入門の講座としても機能している。

講義の内容は全部英語だけれど、1に関しては日本語版があるのでそれを利用することもできる。

ただし、半分くらいはまだ翻訳されていない。

実践的な学習ができるのがこの講座の特徴

この講座には、要所要所にLabという講義が用意されている。

Labでは、実際にGCPを触りながら、それぞれのサービスを動かして学習する。

他の講座でもそれぞれ何らかのソフトやサービスと連携した実践形式の講義はあるが、この講座ではqwiklabというサービスと連携しており、スタートするとGCP用のアカウントが自動で作られ、一定時間だけ利用できるようになる。

この中である程度あらかじめ用意されたリソースやgithubのコードを用いて学習を行う。

プラットフォームの知識だけでなく実際の使い方も理解できるのは強い。

ただし、一部のサービスについてはバージョンアップによってUIが変わっており、特にBigQueryに関しては新UIと旧UIがあってデフォルトでは新UIが表示されているが解説は旧UIのものなので旧UIに切り替えるか、新UIで同じ機能を探さなければならない。

クラウドプラットフォームは日進月歩しているところがあり、ここでもそんな側面が見えた。

まとめ 

クラウドプラットフォームに触れる方法はいろいろあり、Azureは入門書を買ってきてその通りに動かして学習した。

GCPの場合、courseraのこの講義を入門として使うのがその方法の一つのように感じた。

クラウドプラットフォーム利用の実践経験が欲しい人は試してみるべきかもしれない。

 

 

クラウドエンジニアを目指します。

 

これまでもクラウドプラットフォームの学習はしており、特に会社でかかわりが深いAzureについてはmcp70-533とmcp70-532を取得してMCSAに認定されるくらいには勉強を続けてきた。

だけども、AmazonだとかGoogleだとかのクラウドプラットフォームについては「勉強しないとなー」と思いながらなかなか機会がなかった。

一度、これらのクラウドプラットフォームについてまとめた本があったので、これを読んで勉強していたことはあった。 

その本がこれ。

クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)

クラウドエンジニア養成読本[クラウドを武器にするための知識&実例満載! ] (Software Design plusシリーズ)

 

そもそもなぜそれぞれのクラウドプラットフォームについて知りたいかというと、実際に業務なんかでクラウドを使おうとしたときにどういったときにどれを使うべきかを知っておきたいからである。

人に提案するときにこれらのうちの一つを知らないからと言ってそれを使うことを勧めて「こいつこのプラットフォーム作ってる会社の回し者じゃね?」とか思われたら癪である。

なのでどういった場合にどれが向いているかについて把握しておいて使い分けられるようになっておきたい。

この本はそういったニーズに答えてくれた。

クラウドとは何か?」といった基本的な説明から始まり、各社のクラウドプラットフォームの説明、それから事例が続く。

クラウドプラットフォームの説明では、紙面の多くはどちらかというと機械学習タスクで利用するものなどそれぞれのサービスの説明に割かれているが、最初の部分で特徴が述べられており、ここが特に参考になった。

簡潔にまとめるならば、「ビッグデータを扱うならGCP」「VMを使うならAzure」「APIを作るならAWS」といったように感じた。

 

まだこの本を読んだだけではわからないことも多いし、何より実際に触ってみないと理解したとはいえないので、このあたりをとっかかりにしてこれからもっと実践的な内容に進みたい。

 特に、GCPに関してはcourseraで講義があって今なら色々お得だ!ということで今週末はずっとこれをやっている。

その話については次回。