派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【コラム】Webアプリが動くとき、裏側で何が行われているか。「使える」知識として基礎を身につけよう

利用者がWebサイトを開くとき、「URLを入力する」「リンクをクリックする」「検索欄に入力する」などの方法がありますが、いずれの方法でも目的のページの内容が表示されます。

このとき、裏側で何が行われているか、一般の人が知る必要はありません。しかし、何らかのトラブルがあってページの内容が表示されないとき、エンジニアであればその原因を突き止める必要があります。

そこで今回は、Webアプリが動くとき(利用者がアクセスしたとき)、裏側で使われている技術やその一連の動きについて解説します。

【講師】増井 敏克さん
【講師】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『おうちで学べるセキュリティのきほん』『プログラマ脳を鍛える数学パズル』『エンジニアが生き残るためのテクノロジーの授業』『図解まるわかりセキュリティのしくみ』(以上、翔泳社)、『シゴトに役立つデータ分析・統計のトリセツ』『プログラミング言語図鑑』(以上、ソシム)がある。

WebブラウザからWebサーバへの接続

・スキーム

利用者がURLを入力したとき、そのURLはただの文字列です。この文字列から、どのような処理が必要なのかを解釈する必要があります。まずはURLの構成から見ていきましょう。

f:id:itstaffing:20191112133644j:plain

URLの先頭(左端)にあるのが「スキーム」です。ここには表のように、さまざまな内容が指定されます。httpやhttpsであればWebサーバにアクセスしますが、mailやtelなどが指定されていると、メールや電話などのアプリケーションを開くこともあります。

f:id:itstaffing:20191112143032j:plain

httpやhttpsが指定されるとWebサーバにアクセスしますが、そのWebサーバの場所を指定するのが、続く「ホスト名」の部分です。

・ホスト名

ホスト名の部分には、ドメイン名だけでなく、BASIC認証のIDとパスワード、サーバのサブドメイン、ポート番号なども指定できます。BASIC認証のIDとパスワードは最近のWebブラウザでは拒否される場合もありますが、スクレイピングなどを行う場合には、いまだによく使われます。

f:id:itstaffing:20191112133648j:plain

・DNS

ここでサブドメインも含めたホスト名がわかりますが、ホスト名もただの文字列です。そこで、このホスト名からWebサーバのIPアドレスを調べる必要があります。このときに使われるのが「DNS(Domain Name System)」で、図のように階層的に管理してIPアドレスを調べられるようになっています。

f:id:itstaffing:20191112133651j:plain

・ルーター

DNSによって接続先のWebサーバのIPアドレスがわかると、次にそのIPアドレスまでの「経路」を調べる必要があります。ここで登場するのが「ルーター」で、名前の通りルートを案内する機器です。

事前にさまざまな宛先への経路をルーティングテーブルとして表を作成しています。この表に従って、同じネットワークなら内部で、異なるネットワークなら外部へ転送します。

f:id:itstaffing:20191112133655j:plain

・ポート番号

経路がわかると、Webサーバの機器まで到達できますが、その機器ではWebサーバだけが動いているとは限りません。メールサーバも同じ機器で運用しているかもしれませんし、データベースサーバも兼ねているかもしれません。

ここで必要になるのが「ポート番号」です。1台の機器に1つのIPアドレスが与えられていても、ポート番号を見てその機器の中で動いている複数のサーバを識別できます。

Webサーバの場合、httpであれば80番、httpsであれば443番が使われることが一般的です。他にも表のようなポート番号が一般的に使われており、1023番以下の番号は「ウェルノウンポート」と呼ばれます。

f:id:itstaffing:20191112133658j:plain

表に挙げた以外にも多くのポート番号がありますし、1024番以上であれば自由に設定でき、開発用のWebサーバとして8000番や8080番などがよく使われます(URLのホスト名部分で指定して使う)。

Webサーバでの処理

・HTTPリクエスト

Webサーバに到達すると、次は「HTTP(Hypertext Transfer Protocol)」というプロトコルで通信を行います。このときに使われるのが、HTTPリクエストとHTTPレスポンスです。

f:id:itstaffing:20191112133701j:plain

HTTPリクエストでは、1行目にメソッドやURL、バージョンなど。2行目以降にホスト名やユーザエージェントなどが書かれています。メソッドには、表にあるようないくつかの指定がありますが、GETとPOSTが多く使われています。

f:id:itstaffing:20191112144301j:plain

実際には、次の図のようなリクエストが送信されます。これらは、各Webブラウザの開発者モードを使うことで確認できます。

f:id:itstaffing:20191112133704j:plain

・HTTPレスポンス

この内容を受け取ったWebサーバは、書かれている内容に従って、HTTPレスポンスを返します。

HTTPレスポンスでは、1行目にステータスラインがあり、そこに書かれているステータスコードによって、エラーの有無や内容がわかります。よく見かける例として、表のようなステータスコードがあります。

f:id:itstaffing:20191112144654j:plain

なお、静的なWebサイトの場合は、指定されたファイルをWebサーバが返すだけですが、動的なWebアプリの場合には、アプリケーションサーバやデータベースサーバなどが連携して動作します。

f:id:itstaffing:20191112133706j:plain

また、同じ利用者からのアクセスを識別するために、Cookieを発行し、次回のアクセスの際に送信することも必要になります。

Webブラウザでの表示

・読み込むファイル

Webサーバからのレスポンスを受け取ったWebブラウザは、その内容を表示しますが、大きく分けて以下の4つのステップがあります。

1.ダウンロード
2.スクリプトの実行
3.スタイル
4.画面への描画

ここで、1つのWebページを表示するときには、読み込んでいるファイルの数だけダウンロードが発生することに注意しなければなりません。

画像ファイルを複数読み込んでいれば、それだけダウンロードが発生しますし、スタイルシートのCSSファイル、プログラムを書いたJavaScriptのファイルなど、最近のWebページは複数のファイルで構成されています。

JavaScriptの実行ができなければ、画面のレイアウトができない場合もあるため、これらを理解しておかなければ、ダウンロードされたとしても、Webブラウザの表示に時間がかかることになってしまいます。

f:id:itstaffing:20191112133709j:plain

JavaScriptの実行→画面のレイアウトが一般的な流れですが、実際にはロードバランサー(負荷分散装置)やキャッシュ、プロキシサーバ、CDNといった技術が使われている可能性も考慮する必要があります。

ロードバランサーが使われていると、利用者が同じWebサーバにアクセスしていると思っていても、異なる筐体にあるサーバにアクセスしている可能性があります。

・キャッシュ

キャッシュが有効になっていると、Webサーバにアクセスしていると思っていても、実際にはWebブラウザに保存されている内容を表示している可能性もあります。

このため、画像などは毎回ダウンロードしていない場合も多いでしょう。DNSの通信もキャッシュされていますので、そのたびに問い合わせが発生するわけではありません。

プロキシサーバがあれば、他の人が閲覧したものを一時的に保存しておくことで、Webサーバへの通信を減らすことができますし、CDNを利用すれば画像や動画など、大量のファイルがあってもWebサーバの負荷を減らせる可能性があります。

ただし、Webアプリの場合など、利用者によって返す内容を変えている場合は、キャッシュしてしまうと個人情報の漏洩などにつながるリスクもあります。コンテンツの内容に応じて、何をキャッシュするのか(何がキャッシュされているのか)、考える必要があります。

おわりに

資格試験に向けた対策などで勉強している人の場合、個々の用語は理解していても、それがどの場面で使われているのか知らないという人を見かけます。「使える」知識として身につけるためには、実際にコマンドを入力する、Webブラウザの開発者機能を使う、脆弱性診断ツールを使う、パケットキャプチャを使うなど、さまざまな方法で体感することが大切です。いろいろなツールを試しながら、その動作を確認してみてください。

このコラムの内容は、2019年9月25日に開催したイベント「Webアプリが動くとき、裏側で何が行われているか知ろう~基礎からのプログラミングリテラシー~」にて、より詳しく増井さんにご解説いただきました。株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。

【イベントレポート】Androidアプリ開発とKotlin~Androidアプリ開発のプログラミング言語はJavaからKotlinへ~

この記事では、2019年8月28日に開催したイベント「Androidアプリ開発とKotlin~Androidアプリ開発のプログラミング言語はJavaからKotlinへ~」をレポートします。書籍『作ればわかる!Androidプログラミング Kotlin対応』の著者である金宏 和實さんを講師にお迎えし、Kotlinの基礎を学んだほか、Android Studioを使って実際に簡単なアンドロイドアプリを作りました。

■今回のイベントのポイント
・KotlinはJavaよりも、簡潔に書けることを目標にした言語
・Javaのライブラリを利用する際にとても有効な、SAM変換
・Android Studioはさまざまなリソースを統合管理し、開発できるプログラミング環境
・アンドロイドアプリを作ったら、人に見せて意見や感想を聞いてみよう

【講師プロフィール】
金宏 和實さん
株式会社イーザー代表取締役副社長。アプリケーション開発とライター活動を行う。プログラミングの楽しさを伝えることをテーマとしており、NPO法人NATで小中学生を相手にロボット・プログラミングを教えたりもしている。平成30年、31年前期富山大学芸術文化学部非常勤講師(プログラミング・リテラシー)。主な著書に『作ればわかる! Android プログラミング Kotlin対応』『作ればわかる! Android プログラミング』『ベテランが丁寧に教えてくれる データベースの知識と実務』(ともに翔泳社)、『はじめるPython! ゼロからのゲームプログラミング』『エクセルだけで手軽に楽しむプログラミング超入門』(ともに日経BP社)などがある。

Kotlin(コトリン)とは?言語の特徴

今回のイベントはハンズオン形式で、実際に自分の手でアンドロイドアプリを作るというもの。受講者は各自ノートPCを持ち込み、あらかじめKotlinやAndroid Studioをインストールして臨みました。

Kotlinは開発したプログラムがJava仮想マシン上で動作する、いわゆる「JVM言語」に分類されます。そのため、Javaとの間に文法的な互換性はありませんが、互いのプログラムを呼び出せるなど、相互運用が可能です。

そして重要なのが、KotlinはJavaよりも“簡潔に書けることを目標にした言語”ということ。具体例を3つ挙げてくださいました。

1.valとvarで変数を宣言

Kotlinでは、変数の宣言にvalとvarを使います。valはイミュータブル(変更不可能)、varはミュータブル(変更可能)であることを示します。

val a = 10 // 変数aは値を変更できない
var b = "Hello" // 変数bは値を変更できる

valで宣言した変数はあとから値を変更することができません。Javaでfinal修飾子を付けた場合と同様です。一方のvarは、あとから値を変更できます。

従来の言語のように定数と変数で使い分けるのではなく、「その変数は本当にvarで宣言する必要がありますか? valでいい場合は、なるべくvalを使ってね!」というのが、Kotlinの考え方だそうです。

ちなみにKotlinでは、末尾のセミコロン(;)も省略できます。これも書きやすさの一つかもしれません。

2.「null安全」でヌルポが発生しない

Javaでは、誤ってNULLポインタ(何のオブジェクトも参照しないポインタ)を叩く(参照する)、いわゆるヌルポ(ヌルポインタ例外:Null Pointer Exception)という実行時エラーが発生してしまい、プログラムが停止してしまいます。一方Kotlinでは、null許容型と安全呼び出し演算子というものがあり、これによりヌルポを事前に検出したり、実行時に回避したりすることができます。

nullを入れる場合には、型名の後ろに「?」を付けることでコンパイルエラーや実行時エラーを回避させることができます。

val str? = null // Nullable型になる
str?.toUpperCase() // 関数は実行されず戻り値NULLを返す

3.簡潔に記述することができる、SAM変換

Javaでは関数型インターフェイスを引数として渡すとき、ラムダ式で渡すことができます。Kotlinでも同様に、Javaインターフェイスでメソッドを1つしか持たない「SAM型のメソッド」を呼び出す際に、引数をラムダ式で渡すことができます。これをSAM変換と呼び、Javaのライブラリを利用する際などに、とても有効だそうです。

f:id:itstaffing:20191101111524j:plain
▲SAM型インターフェイスを引数とするメソッドに対し、引数をラムダ式で渡すことができ、簡潔に記述することができる

Android Studioを使って、簡単なアプリを作ってみよう

Kotlinの特長について知ったあとは、Android Studioを使ったハンズオン形式で、実際にプログラミングを進めていきます。題材は金宏さんの著書でも紹介されている「ハイ&ローゲーム」です。

まずAndroid Studioを起動し、あらかじめ金宏さんが用意してくださったトランプの画像を読み込ませます。

f:id:itstaffing:20191101111527j:plain
▲Android Studioはプロジェクト、ソースコード、画面レイアウトなど、さまざまなリソースを統合管理し、開発できるプログラミング環境。プログラム中に使用する画像も、コピー&ペーストの簡単操作で読み込ませることができる

そして金宏さんの著書を参照しながら、テキストビューやボタンの配置、背景色を変更していきます。

ちなみに、このときレイアウトエディタ上に表示される波線を「制約」と呼びます。「制約」を使うことで、アプリを実行する端末の画面サイズやアスペクト比が異なっていても、常に右上隅や左右中央に表示するといった、相対的なバランスを保ったレイアウトを可能にします。

f:id:itstaffing:20191101111530j:plain
▲マージン設定と制約ハンドルを上手に使いながら、テキストビュー、ボタン、カード画像などを配置していく

このプログラムでは、テキストビューに表示させる文字列をstrings.xmlにリソースとしてまとめて記述しています。これは多言語対応を容易にするためだそうです。

画面レイアウトが出来上がったら、次にメインとなるソースコードを記述していきます。こちらもあらかじめ用意してくださったものだったため、指定の場所にコピー&ペースト。その内容を、金宏さんが説明してくださいました。

f:id:itstaffing:20191101111534j:plain
▲画面レイアウトが出来上がったら、メインとなるアクティビティのコードを記述

アンドロイドからアプリを起動すると、最初のアクティビティ(画面)が前面に表示されます。アクティビティは、同じアプリからの別画面呼び出しや他のアプリの起動などにより、別のアクティビティが前面表示になったり、非表示になったりする場合もあります。さらに、その状態から再び前面表示に戻ることもあります。こうしたアクティビティの状態変化によって呼び出されるメソッドを、ライフサイクルコールバックメソッドと呼ぶそうです。

ゲームのソースコードは、基本的にライフサイクルコールバックメソッドのうち、onResumeメソッドをオーバライドして記述していきます。こうすることでアプリ起動時や、他アプリによる中断から復帰したときにも、アクティビティが常に前面に表示されるようになります。

アクティビティの中には、ライフサイクルに関係のないメソッドもあります。そうしたメソッドはライフサイクルメソッドをオーバライドせず、独自に作成していきます。

そして、開発の途中過程にエミュレータで実行してみたいといったときに役立つのが、logメソッドです。logメソッドは途中でログを吐き出します。そのため、プログラム開発中であっても、各種の検証が行えて便利だということを教えていただきました。

f:id:itstaffing:20191101111536j:plain
▲ある程度出来上がってきたら、エミュレータで実行して動作を確認することもできる

金宏さんは「コードの中身は思い切り駆け足でした」と言いながらも、イベントの限られた時間内で、Kotlinの文法なども含め、サンプルプログラムがどのような処理をしているかも一通り説明してくださいました。

また、「アンドロイドアプリを作ったら、自分のアンドロイド端末に入れてどこにでも持ち歩けるため、人に見せて自慢をしたり、感想を聞けるのも魅力。いろいろなものにチャレンジしてほしいですね」と、Kotlinプログラマにエールを送ってくださいました。

Android StudioとKotlinによるアンドロイドアプリ開発は、初心者であっても理解しやすく、今回のサンプルに限らず、いろいろなアプリを作ってみようと思わせてくれたかと思います。株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。

第5話 プッシュ済みのコミットを取り消したい!リバートの使い方【連載】マンガでわかるGit ~コマンド編~

f:id:itstaffing:20191021120210j:plain

Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。

前回の 第4話 では、コンフリクトの解決方法を学びました。

・コンフリクトした箇所を修正して、コミットしなおす

$ git commit -m

・コンフリクトした箇所が多すぎて修正が難しい場合、マージを中止する

$ git merge --abort

今回の第5話では、特定のコミットを打ち消すコマンド「リバート」について学びます。機能としてはシンプルなので、初心者でも使いやすいうえに、いざというとき便利なコマンドです。このマンガを通して、わかばちゃんと一緒に知識を身につけていきましょう!

【筆者】湊川 あいさん
【筆者】湊川 あいさん
フリーランスのWebデザイナー・漫画家・イラストレーター。マンガと図解で、技術をわかりやすく伝えることが好き。著書『わかばちゃんと学ぶ Git使い方入門』『わかばちゃんと学ぶ Googleアナリティクス』『わかばちゃんと学ぶ Webサイト制作の基本』『運用ちゃんと学ぶ システム運用の基本』が発売中のほか、マンガでわかるGit・マンガでわかるDocker・マンガでわかるRuby・マンガでわかるScrapbox・マンガでわかるLINE Clova開発・マンガでわかる衛星データ活用といった分野横断的なコンテンツを展開している。

・Amazon著者ページ
・Twitterアカウント

コミット済みの内容を、あとから取り消したい!

f:id:itstaffing:20191021120213j:plain
f:id:itstaffing:20191021120216j:plain

このマンガのように、コミット済みの内容を取り消さないといけない場合、どうしたらいいか分からず、あわててしまったことはありませんか?

Gitにはコミットした内容を取り消す方法がいくつかありますが、まずは一番安全で簡単な「リバート」を習得しましょう。

リバートしてみよう

リバートは、指定したコミットと逆の内容をコミットしてくれます。
コマンドは、たったこれだけです。

& git revert [打ち消したいコミットID]

ちなみに、リバート(revert)は英語でいうと、「元に戻す」という意味です。

▼ リバートすると、このようにコミットメッセージ編集画面になります

f:id:itstaffing:20191021120219j:plain

▼ 編集する必要がなければ、Escキーを押してから「ZZ」と入力することで確定されます。 見事、リバートコミットが作られました

f:id:itstaffing:20191021120221j:plain
f:id:itstaffing:20191021120224j:plain
f:id:itstaffing:20191021120146j:plain
f:id:itstaffing:20190617145538j:plain
git revert 、マスターしたよ!これでいくら間違えても大丈夫だね。
f:id:itstaffing:20190617145541j:plain
って、おいおい……。さすがにこの履歴は読みづらいよ。
f:id:itstaffing:20191021120148j:plain

f:id:itstaffing:20190617145538j:plain
た、確かに…。そういえば、さっきリバート以外にも取り消せるコマンドはあるって言ってたよね。そっちを教えてよ!
f:id:itstaffing:20190617145541j:plain
ん~、リセットか……。リセットはちょっと危険だから初心者には教えないようにしているのだが、リフログと一緒に覚えてもらえば……。ブツブツ
f:id:itstaffing:20190617145538j:plain
ブツブツ言ってないでさっさと教えなさい!それでも大学教授なの!?
f:id:itstaffing:20190617145541j:plain
前から思っていたのだが、いつの間にか上下関係逆転してないか?
★魔王教授のコラム

リバートが便利なのは、プッシュ済みのコミットを打ち消したいとき。プッシュ済みのコミットは、そのまま上に新しいコミットを乗せる形で「打ち消し」を行えるからだ。

一方、次回説明するリセットは、コミットそのものを消去してしまう強力なコマンドだ。すでに他のメンバーがそれを親としてコミットを重ねてしまっているときにリセットをしてしまうと、他のメンバーがプッシュ不能になってしまう。それもそのはず、あるはずの親がいなくなっているからだ。

というわけで、初心者の頃は無理せずリバートを使うことをオススメする。リセットは、Gitに慣れてきたら習得していこう。

まとめ

さて、ここまででコミットを打ち消す方法がわかりました。

・特定のコミットを打ち消す

& git revert [打ち消したいコミットID]

コミットの歴史を改変するのではなく、新しくコミットが上に積まれるだけなので安心して使えるコマンドです。

Gitにはまだまだたくさんのコマンドがあります。
次回、第6話では git reset(リセット)について学んでいきましょう。

▼登場キャラクター紹介
f:id:itstaffing:20200122103525j:plain

▼わかばちゃんが登場する書籍

▼ これまでの「マンガでわかるGit」

【イベントレポート】使いやすいAI(人工知能)「IBM Watson」を見てみよう!

この記事では、2019年8月7日に開催したイベント「使いやすいAI(人工知能)「IBM Watson」を見てみよう!」をレポートします。機械学習に先鞭をつけたIBM Watsonは、AIサービスの先駆け的存在として、日々進化を続けており、機械学習やディープラーニングを用いたアプリケーション開発で使う開発者も増えています。

今回のイベントではWatsonの基礎から実際の利用まで、書籍『現場で使える! Watson開発入門』の共著者であり、共にIBM チャンピオンの肩書を持つ羽山祥樹さん、樋口文恵さん、江澤美保さんの3名が、デモなどを交えながら分かりやすく解説してくださいました。

■今回のイベントのポイント
・Watsonはクラウドサービスとして提供されている
・ダッシュボードを使うと、あっと言う間に簡単なチャットボットがつくれる
・質問に対する回答を、大量の文書の中から自動的に見つけ出す
・さらには、蓄積したデータも分析できる

【講師プロフィール】
羽山 祥樹さん
2016年よりIBM Watsonに携わる。専門はユーザーエクスペリエンス、情報アーキテクチャ、アクセシビリティー。翻訳書に『メンタルモデル──ユーザーへの共感から生まれるUX デザイン戦略』『モバイルフロンティア──よりよいモバイルUXを生み出すためのデザインガイド』(いずれも丸善出版)がある。

樋口 文恵さん
SI企業に入社後、8年間をインフラエンジニア、ネットワークエンジニアとして、お客様先でのネットワーク構築、コンサル業務に従事。2017年1月にAI専任のエンジニアになりWatsonに携わる。リリースをサポートしたチャットボットは50本以上。

江澤 美保さん
株式会社クレスコ AIサービスエバンジェリスト。2015年よりIBM Watsonに携わり、経営層へのWatson導入提案を多く経験。現在は企業のAI導入支援を手掛けるAIコンサルタント・エンジニアとして活動中。2016年3月「第2回 IBM Watson日本語版ハッカソン」にてアイディア賞受賞。

データ学習の結果から判定をするWatson

初めに、羽山さんが人工知能の初歩からIBM Watsonの基礎までを解説。「Watsonは、わかりやすく手軽に使えるAI。言葉で説明するより、まずはお見せします」とお話しされ、デモを見せてくださいました。

デモは、Watsonに「只今Watsonテスト中、本日は晴天なり、本日は晴天なり」という音声ファイルを渡すと、自動的にテキスト化してくれるというもの。音声ファイルを指定し、わずか4行のコードをコピーして、Watsonに送るとテキストが返ってきます。これはWatsonが音声を認識し、文脈を解析してテキスト化してくれたことを示しています。

このようにWatsonは、データをわたすと、あらかじめ与えておいた学習データをもとに、回答をしてくれます。

AIというと、犬と猫の画像を、データ学習の結果から判別するというプログラムが話題になりましたが、IBMのデモサイトにはタイヤの写真を与えると、そのタイヤがパンクしているかどうかまでも判定をする、というプログラムの例(Visual Recognition)があるそうです。

f:id:itstaffing:20191015105617j:plain
▲データ学習の結果から、写真に写っているタイヤがパンクしているかどうかを判定してくれる

Watsonはクラウドサービスとして提供されています。実際には、単一のソフトウェアでなく、モジュールで構成されており、その集合体のブランド名が「Watson」とのこと。

Watsonは、IBM Cloud上から使うことができます。ライト・アカウントを選べば、クレジットカードの登録をしなくても利用でき、一部制約はあるものの無料で使えるそうです。

Watson Assistantでチャットボットをつくってみよう

次に樋口さんが、Watsonがどれぐらい手軽に利用できるかを示すため、その場で簡単なチャットボットの作成デモを見せてくださいました。

まずは「Watson Assistant」と呼ばれる、Watsonのダッシュボードを利用します。

f:id:itstaffing:20191015105620j:plain
▲IBM Cloudにアクセスしたあと、カタログからAIをクリックし、「Watson Assistant」を選択。リージョンは「東京」、プランは「ライト・プラン」を選択する

Watson Assistantの画面では「Assistants」と「Skills」が選べますが、Assistantsは高度であるため、今回はSkillsを使いました。

f:id:itstaffing:20191015105623j:plain
▲Create Dialog Skillを設定していく。このSkillひとつが、1つのチャットボットになるというイメージ。いくつも作れる

まず、あいさつを覚えさせます。「Entities」で「Create Entity」を選び、あいさつEntityを作成し、「Add Value」をクリックして、「こんにちは」に類する言葉を続けて入力していきます。

このとき、「Fuzzy Matching」をONにしておくと、1文字程度のミスタイプは許容してくれるそうで、たとえば「Hello」を「Hallo」とタイプした場合も、正しく返事を返してくれるそうです。

次にチャットボットが話す言葉を覚えさせます。

f:id:itstaffing:20191015105626j:plain
▲「Create dialog」を選び、「ようこそ」と書かれた四角(これをノードと呼ぶ)をクリックし、チャットボットに表示する最初のメッセージを入力する

f:id:itstaffing:20191015105558j:plain
▲次に「ようこそ」のノードを右クリックして、メニューから「Add nodes bellow」を選び、ノードを追加し、返事を登録する。このとき「Multiple conditioned responses」をONにしておくといろいろな返事を返すようになる

これらの入力を終えたら、画面右上の「Try it」をクリックして試します。

f:id:itstaffing:20191015105601j:plain
▲チャットボットの動作を、その場で確認できる

なんと、あっと言う間に簡単なチャットボットが完成。イベントに参加されていた皆さんも、Watsonのスゴさを実感されていました。

続いて、より複雑な、質問の意味を考えるチャットボットの作成に移りました。手順が複雑であるためここでは割愛しますが、先ほどの「Assistants」でなく、今度は「Intents」を使います。

f:id:itstaffing:20191015105604j:plain
▲「Create intent」を選び、質問を覚えさせる。ここでは「#予約する」と「#購入する」というキーワードを登録する

f:id:itstaffing:20191015105606j:plain
▲返答として「予約する」では予約ページを、「購入する」では購入ページを、それぞれ案内するように設定する

「Intents」を使うことで、登録した語句に完全一致しない質問でも、きちんと回答することができました。さらには、漢字でも、ひらがなでも問題はありません。「買い物がしたい」という質問にも、間違うことなく購入ページを案内していました。

樋口さんによれば「類義語を20~30種類ぐらい登録して、トレーニングさせるといいかも」とお話しされました。そしてこのあと、あらかじめ用意された本格的な会議室予約のデモを披露してくださいました。

Watson Discoveryで分析と検索をしてみよう

次に、大量の文書を検索したり分析したりする「Discovery」という機能について、江澤さんが解説してくださいました。

Discoveryとは、文書内からエンティティ(単語と人名/場所/会社名などタイプのペア)やエンティティ同士のリレーション(関係性)、といったメタ情報を抜き出し、高度な情報検索を実現してくれるプラットフォームだそうです。

f:id:itstaffing:20191015105609j:plain
▲文章から場所(カナダ・モントリオール)をエンティティとして抜き出し、リレーション(この場合located)も発見してくれる

Discoveryが作成してくれるメタ情報は、それだけではありません。キーワードやカテゴリ、そして、その文書の内容がポジティブかネガティブかというセンチメントなども判別して、それらもメタ情報として追加するそうです。

f:id:itstaffing:20191015105611j:plain
▲特別なトレーニングをしなくても、このようなメタ情報を付加してくれる

こうしたメタ情報や全文検索機能を活用して、質問に対する回答を、大量の文書の中から見つけ出したり、蓄積したデータを分析したりすることができます。

先ほどのAssistantとDiscoveryの使い分けとしては、よくある質問には「Assistant」、たまに聞かれる質問は「Discovery」が担うということが、一般的な使い方だそうです。ちなみに、AssistantでカバーできないときDiscoveryに聞きに行く、という機能も実装されているとのことでした。

これらのメタ情報は、Watson Knowledge Studio(WKS)という機能を使うと、カスタマイズすることもできるそうです。

このあと、実際の文書を例に、キーワードの抽出、カテゴリの分類、センチメントをどう判断するのかなど、メタ情報がどのように付加されるのかをデモしてくださいました。

f:id:itstaffing:20191015105614j:plain
▲実際の文書から、どのようなメタ情報が付加されるのかをデモ

参加者の方からは「Watsonが、手軽にAIサービスを構築できるプラットフォームだということが良くわかりました」「取り掛かりの機会となったのが、ありがたい」などの声をいただきました。ライト・アカウントで手軽に試せるのも魅力ですね。株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。

【イベントレポート】RPAの基本から導入の実務まで~RPA未経験者でもOK~

この記事では、2019年7月26日に開催したイベント「RPAの基本から導入の実務まで~RPA未経験者でもOK~」をレポートします。解説書『絵で見てわかるRPAの仕組み』の著者である西村泰洋さんに、RPAの基礎、そして導入するにあたっての注意点を教えていただきました。

■今回のイベントのポイント
・日本市場におけるRPAの導入は2015年から
・RPAとは「自分以外のソフトウェアを対象に、定義された処理を実行するプログラム」
・導入に成功している企業には必ず「しくみ」がある

【講師プロフィール】
西村 泰洋さん
富士通株式会社 フィールド・イノベーション本部 金融FI統括部長。デジタル技術を中心にさまざまなシステムと関連するビジネスに携わる。著書に『絵で見てわかるRPAの仕組み』『図解まるわかり サーバーのしくみ』『RFID+ICタグ システム導入・構築 標準講座』(以上、翔泳社)『図解入門 最新 RPAがよ~くわかる本』『デジタル化の教科書』(以上、秀和システム)『成功する企業提携』(NTT出版)がある。

RPA導入の歴史

最近、RPAという言葉をよく耳にします。業務の効率化を推進する技術だということは知っているけれども、詳しくはわからないという方も多いのではないでしょうか。

そこで西村さんは初めに、RPAという分野が一体いつ頃に登場したのかを解説してくださいました。

まず大手企業が2015年ぐらいから部門での導入やPoC(概念実証)を開始し、2016年度あたりから銀行や金融、製造業などで全社的な導入に着手し始めたそうです。準大手企業は少し遅れて、2016年度あたりから部門での導入やPoCが始まり、2017年度には全社導入を検討する企業が増え始めたとのこと。自治体や公共機関は、さらにその後を追う形で、2017年度に研究や予算確保をスタートし、2018年度あたりから導入が始まったそうです。

f:id:itstaffing:20191007134232j:plain

▲日本市場におけるRPA導入の歴史

西村さんは「システム開発時のテスト業務に自動化ツールを使っていたので、RPA自体には驚きませんでしたが、一般の業務に使うということにはビックリしました」と、ここ数年での活性化には驚いたそうです。

RPAはどんなソフトウェア?

そもそも、RPA(Robotic Process Automation)とは、どのようなソフトウェアを指すのでしょうか。

西村さんによれば「自分以外のソフトウェアを対象に、定義された処理を実行するプログラム」のことを指すそうです。この「自分以外のソフトウェアを対象に」というところが重要であると説明されました。

これはどういうことかというと、Wordは自ら文書を正すことができ、業務アプリケーションは自らデータの登録や処理をすることができますが、RPAは“自分に対してできることがない”ということです。

また、「自分以外のソフトウェア」は1つでも複数でも問題はないので、複数のシステムソフトウェアの操作を並行してできるベテラン社員のような作業も、RPAにはできてしまうそうです。

処理の定義は、開発者(RPAソフトウェアのユーザー)が行うので、開発者は、実際の業務を熟知しておく必要があるそうです。

これらの説明をされたあとに、RPAソフトの構成や種類についての紹介がありました。ここでは、RPAソフトの種類について興味深かったことをご紹介します。

AccessやSQL Server、Oracleなど、データベースを規模や用途によって使い分けているように、RPAツールも目的や規模に応じて使い分けるそうです。「3種類ぐらいを組み合わせて使っている」のが一般的だと西村さんはお話しされました。

製品として、国産のWinActorやBizRobo!、UiPathが人気だそうです。

・WinActor、WinDirector
・BizRobo!
・UiPath
・Automation Anywhere
・Blue Prism
・Kofax Kapow
・NICE
・Pega

上記はいずれも商用製品ですが、フリーで使えるRPAソフトも今は流通しているとのことでした。

また、RPAソフトの認定資格というものもすでにあり、なかには無償で取得できるものがあるそうなので、勉強するからには…と考えている方は、挑戦してみてはいかがでしょうか。

ロボット開発の手順

RPAの定義、つまりロボットの開発は難しいのでしょうか。その点も西村さんが実演を交えながら解説してくださいました。

まず「プログラミングスキルは必要か?」という疑問に対しては、「経験は必要ない。ただし、構造化という発想が必要」とのこと。業務のルールを見出し定義していく過程で、繰り返しや条件分岐のようなものは使うそうです。

RPAソフトの種類によって、ロボット開発の方法が変わります。現在、RPAソフトは次の3つの種類に分けられるそうです。

・画面キャプチャタイプ
・オブジェクトタイプ
・プログラミングタイプ

また、1つのRPAソフトが1つのタイプしか持たないわけではなく、多くの製品が複数のタイプを持っているとのことでした。

「先輩から教わると、その先輩の好きなロボット開発のタイプが選ばれてしまいますが、たいてい、同じソフト内にはもう1つのタイプも用意されているということを覚えておくといい」と西村さんはお話しされました。

次に、国内で人気のWinActorや、海外でも使われるKofax Kapow、Pega、Blue Prismという4製品についての具体的なロボット開発も紹介してくださいましたが、ここでは割愛します。

プログラミングと同様で、設計→開発→単体テストという手順は、RPAでも変わらないので、プログラマがRPAのロボット開発へ移行するのは、それほど難しくなさそうです。

ただし、PC操作の可視化という重要な作業が発生します。ここがRPAのロボット開発で難しい部分かもしれません。

PC操作の可視化

オフィスにおける日常業務は、手順に関する資料が存在しないことが多く、先輩社員から後輩社員に口頭で伝えられ、属人化しているケースも少なくありません。RPAのロボットプログラミングをするに当たり、まずはこの業務を可視化する必要があります。

可視化の手法としては、インタビュー、調査票、調査員による観察などが挙げられます。きちんと手順を書き起こすと長大なリストになってしまうので、RPAを使いたいところにマークを入れて、そこを中心に見ておくことがポイントだそうです。また、使いたいところのPC操作の可視化には、Windowsに搭載されているステップ記録ツール(PSR)を使います。

また、機能要件と非機能要件、システム全体の性能、セキュリティなど、現場の個人が要求しない部分についても、きちんと検討しておく必要があり、ワークシートによる作業手順の整理や、フローチャートによる確認なども必要です。

導入に際しての注意点

西村さんによれば、RPAの導入に失敗している企業と成功している企業があり、「成功している企業には必ずしくみがある」のだそうです。

f:id:itstaffing:20191007134235j:plain

▲部門がしっかり分かれており、それぞれの業務の範囲も明確に分けられている

それは利用部門、管理部門、IT部門などの体制が整備されていること。それにより導入の際の、エンジニアの作業や担当窓口なども明確になります。

f:id:itstaffing:20191007134238j:plain

▲開発・導入に当たって、どの部署がどの部分の担当なのかが明確になり、作業もスムーズに行える

現在は、RPAのロボット開発をプログラマが担当することも多いのですが、今後は事務スタッフの活躍領域になってくることが予測されます。ExcelやWordが使えるレベルから、次第にマクロが使えるレベルが求められるようになったのと同様に、今後は「RPAの定義が行える」というスキルが求められるかもしれません。

「RPAについては自信がない」という方も、まずはフリーのソフトを使い、どのようなものであるかを試してみてはいかがでしょうか。株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。

第4話 コンフリクトは怖くない!解決方法【連載】マンガでわかるGit ~コマンド編~

f:id:itstaffing:20190925144740j:plain

Webサービスやアプリ開発の現場では必須のバージョン管理システム「Git(ギット)」。Gitは、専用のソフトを使えばクリックで直感的に操作することもできますが、いざというときにコマンドが使えると便利です。

第3話 では、2つのブランチを統合するマージコミットの作り方と、その仕組みを学びました。

$ git merge [ブランチ名]
(マージする)

今回の第4話は、コンフリクトについてです。なにそれ…と思われる方も、このお話しを通して、わかばちゃんと一緒にコンフリクトについて学んでいきましょう。

【筆者】湊川 あいさん
【筆者】湊川 あいさん
フリーランスのWebデザイナー・漫画家・イラストレーター。マンガと図解で、技術をわかりやすく伝えることが好き。 著書『わかばちゃんと学ぶ Git使い方入門』『わかばちゃんと学ぶ Googleアナリティクス』『わかばちゃんと学ぶ Webサイト制作の基本』『運用ちゃんと学ぶ システム運用の基本』が発売中のほか、マンガでわかるGit・マンガでわかるDocker・マンガでわかるRuby・マンガでわかるScrapbox・マンガでわかるLINE Clova開発・マンガでわかる衛星データ活用といった分野横断的なコンテンツを展開している。

・Amazon著者ページ
・Twitterアカウント

マージ中にコンフリクトが発生したら

f:id:itstaffing:20190925144742j:plain

コンフリクト解決!の練習

1.まずは、わざとコンフリクトさせてみよう

第3話 と同じように、新しいブランチ「news」を作り、newsブランチとmasterブランチでそれぞれのコミットを作りましょう。自分がnewsブランチで作業していたら、その間に別の人がmasterブランチを更新していたという想定です。

前回と違うのは、わざとコンフリクトさせるために同じ行を編集することです。
 
▼ newsブランチにチェックアウトした状態で、sample.txtをこのように編集してコミット

f:id:itstaffing:20190925144744j:plain

▼ masterブランチにチェックアウトした状態で、sample.txtをこのように編集してコミット

f:id:itstaffing:20190925144747j:plain

では、マージしてみましょう。
マージするためのコマンドは、

$ git merge [統合したいブランチ名]
 
でしたね。

newsブランチからmasterブランチへ取り込みたいので、masterブランチにチェックアウトしたうえで、

$ git merge news
 
と打ち込みます。

すると、マージは行われず、このような文章が表示されるはずです。

f:id:itstaffing:20190925144750j:plain

f:id:itstaffing:20190617145541j:plain
よし!コンフリクト成功だな。
f:id:itstaffing:20190617145538j:plain
あはは、コンフリクト成功っていうのもおかしな話だね。
英語でも恐れることはありません。翻訳してみましょう。

CONFLICT (content): Merge conflict in sample.txt
→コンフリクト:sample.txtの中でマージの衝突が起きました

Automatic merge failed; fix conflicts and then commit the result.
→自動マージが失敗しました。衝突している箇所を修正して、その結果をコミットしてください
f:id:itstaffing:20190617145541j:plain
何をすればいいかは基本的にGit様がこうやって親切に教えてくれるから、その通りにすればよい。
 
2.ファイルを開いてコンフリクトを修正する
 
では、sample.txtを修正するためにファイルを開いてみましょう。

f:id:itstaffing:20190925144752j:plain

f:id:itstaffing:20190617145538j:plain
うわっ、なんか変な記号が書き込まれてる!
 
f:id:itstaffing:20190617145541j:plain
変な記号とは失礼な!これはGit様が目印として書き込んでくれたのだ。
<<<<<<< HEAD
から
======= まで:
→今自分がチェックアウトしているブランチでの変更

=======
から
>>>>>>> news まで:
→取り込もうとしたブランチでの変更
 
f:id:itstaffing:20190617145541j:plain
修正するときはこの記号も合わせて消すようにな。Git初心者だと、この記号がなんなのかわからず、消さずにそのままコミットしてしまいがちだ。
f:id:itstaffing:20190617145538j:plain
ギクッ……! えっと、今度のハイキングは雨天決行なんですよね。
じゃあnewsブランチの変更内容を残して、と。これでOKですね!

▼ 修正後のsample.txt

f:id:itstaffing:20190925144754j:plain

3.修正したファイルをステージし、コミットしなおす
 
ステージに乗せて

$ git add sample.txt

コミット

$ git commit -m "sample.txtのコンフリクトを修正"
 
f:id:itstaffing:20190617145538j:plain
ふーん、コンフリクトのあとは普通にコミットするだけでいいんだ。これでうまくマージできたね!コンフリクト、怖くなかった!

▼ マージが成功している(SourceTreeで表示したコミットツリー)

f:id:itstaffing:20190925144757j:plain

コンフリクトの修正が難しい場合

f:id:itstaffing:20190925144759j:plain
コンフリクトの箇所が多すぎて、修正が難しい場合、マージの途中であっても--abortオプションでマージを中止できます。
 
$ git merge --abort
 
あまりにも差分が多すぎる場合は、どちらか一方のブランチのコミット内容が、最新のコミット内容に比べ極端に古いことが多いです。その場合は、最新のコミットから新たにブランチを作って、そこに自分が追加したいコードを加えるといいでしょう。

まとめ

さて、ここまででコンフリクトの解決方法がわかりました。

・コンフリクトした箇所を修正して、コミットしなおす

$ git commit -m
(通常のコミットと同じコマンドです)
 
・コンフリクトした箇所が多すぎて修正が難しい場合、マージを中止する

$ git merge --abort
(マージを中止する)

これでコンフリクトが起きても、落ち着いて対処できますね。

Gitにはまだまだたくさんのコマンドがあります。
次回は、git revert(リバート)について学んでいきましょう。

エンジニアの皆さん、日々のスキルアップの時間は十分に取れていますか。 リクルートスタッフィングでは、エンジニアのスキルアップを応援するため、登録者限定で情報配信などを行っています。 リクルートスタッフィングでの就業に関わらず使えるものですので、これを機にお役立てください。

リクルートスタッフィング

▼登場キャラクター紹介
f:id:itstaffing:20200122103525j:plain

▼わかばちゃんが登場する書籍

▼ これまでの「マンガでわかるGit」

【イベントレポート】ゼロから学ぶクラウドの世界 クラウドの現在、未来はどうなるのか?そしてエンジニアは、どう学ぶのか

この記事では、2019年6月26日に開催したイベント「ゼロから学ぶクラウドの世界 クラウドの現在、未来はどうなるのか?そしてエンジニアは、どう学ぶのか」をレポートします。講師には、NRIネットコムのクラウド事業推進部の部長であり、数々のクラウドサービス解説書籍を執筆されている佐々木 拓郎さんをお迎えし、クラウドの基礎から、最新のクラウドの潮流、そしてクラウド関連の知識を養う際に効果的な勉強方法まで、幅広く教えていただきました。

■今回のイベントのポイント
・クラウドの潮流は2つ。「コンテナ化」と「サーバーレスアーキテクチャ」
・隣り合う分野を掛け合わせる「T型人材」という考え方
・クラウドの学び方で重要なのは「具体的な目標設定」

【講師プロフィール】
佐々木 拓郎さん
NRIネットコム クラウド事業推進部 部長。専門はクラウドに関するコンサルティングから開発まで。主な著書として『クラウドエンジニア養成読本』(技術評論社)、『AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト』(SBクリエイティブ)、『Amazon Web Services パターン別構築・運用ガイド』(SBクリエイティブ)、『Amazon Web Services 業務システム設計・移行ガイド』(SBクリエイティブ)、『Rubyによるクローラー開発技法』(SBクリエイティブ)などがある。

クラウドの潮流は2つ

講師である佐々木さんは、アマゾン ウェブ サービス ジャパン株式会社の「APN AWS Top Engineers 2019」と「APN Ambassadors 2019」にも選ばれている、いわばAWSのプロ中のプロ。今回のイベントでは、「クラウドの潮流を何となく把握してもらう」「技術の勉強の仕方のヒントを得てもらう」「家に帰ったら、クラウドのアカウントを作ってもらう」をゴールとし、クラウドについて詳しく佐々木さんに教えていただきました。

現在クラウドには大きく2つの潮流があり、「コンテナ化」と「サーバーレスアーキテクチャ化」という流れがあるそうです。

コンテナ化とは、仮想化の手法の1つで、1つのOS上に独立した仮想的なユーザー空間を作り出し、それをコンテナのようにプラットフォーム上に並べたり、置き換えたりして利用します。

f:id:itstaffing:20190909123538j:plain
▲コンテナ型の仮想化では、1台の物理サーバー上で1つのOSしか動かさないため、ハードウェアリソースを効率良く使うことができる

現在、このコンテナ化を支えているのが、コンテナ型仮想化エンジン「Docker」と複数コンテナを管理するオーケストレーションソフト「Kubernetes」です。

f:id:itstaffing:20190909123521j:plain
▲Dockerでコンテナ型の仮想環境を構築し、複数のコンテナをKubernetesで管理する

一方、サーバーレスアーキテクチャとは、仮想サーバーを利用せずにアプリケーションを構築する設計のことだそうです。ただし、仮想サーバーを利用しないといっても、「ユーザーがメンテナンスすべきサーバーがない」というだけで、そのバックエンドにクラウドベンダーが用意したサーバーがあり、イベント駆動により、各アプリが必要に応じてコンピューターリソースが提供されるという仕組みのことを指します。

f:id:itstaffing:20190909123523j:plain
▲サーバーアプリケーションが1秒間しか起動されなければ、1秒間分の利用料しか課金されずに済む、といった利用も可能になるサーバーレスアーキテクチャ

クラウドの進化に伴った「T型人材」という考え方

このようにクラウドサービスそのものが進化してくると、おのずと、その利用方法や求められるエンジニアのスキルも変わってきます。

これまでは、インフラエンジニアやアプリケーションエンジニアなど、担当する領域が明確にわかれていました。しかし、コンテナ化やサーバーレスアーキテクチャが普及すると、従来の区分ではわけることが出来なくなってきます。

そうなると、エンジニアの境界(領域)も、これまでと違って曖昧になっていきます。そこで登場するのが「T型人材」という考え方だそうです。

T型人材とは、フロントサイド/サーバーサイド開発、インフラ構築、クラウドの種類、ミドルウェアなど、幅広く浅い理解を持ちながら、いずれかの分野について、より深い知識を備えている人を指します。

f:id:itstaffing:20190909123526j:plain
▲広く浅くでも構わないので、周辺の知識を持つことが大切。それがT型人材

佐々木さんは、クラウド時代が進めば、プロビジョニングやオーケストレーションで使われる「Infrastructure as Code」(コードによるインフラの構成管理)のように、コード化する範囲が広がるため、これまで以上にコードが書けるエンジニアが必要とされると予測しています。

もちろんコードが書けるだけでなく、業務知識や技術力など、専門分野あるいは得意分野を身につけていくことが大切だということです。ただし、専門分野/得意分野も、単一の分野で勝負するのは茨の道だといいます。なぜなら「単一分野においては、必ず上の人は、たくさんいるから」だそうです。そこで佐々木さんは、「隣り合う分野を掛け合わせること」をお勧めされました。

f:id:itstaffing:20190909123530j:plain
▲分野を掛け合わせると、ベクトルのように合成された結果で評価される。そうして自分が第一人者になれる分野を作ればよい

コツは「隣接する複数のスキルを身につけること」だそうです。なぜなら「隣接分野だとベクトルが合成されやすい」とのこと。例として、アプリとインフラや、アプリとデザインなどを示してくださいました。

そして、効率的な成長をするためのポイントとして「変化を楽しむ」「ちょっと背伸びをする」「チャンスが来やすい仕組みを作る」を挙げます。チャンスが来やすい仕組みとは「組織内の第一人者の分野を作る、あるいは、やりたい事をアピールしておくこと。そうすると仕事が集まりやすくなる」ということだそうです。

クラウドの学び方

では、自身のスキルセットにクラウドを追加するにあたり、何をどう勉強していけば良いのでしょうか。ここでも佐々木さんが効率的な学び方を示してくださいました。大切なのは「目標の具体化」「教材の選択」「実際に手を動かす」「アウトプットをする」ということ。

中でも重要なのは「目標設定」。たとえば失敗しやすい目標とは「AWSを使えるようになりたい」というもの。「使える」というのが一体どのレベルを指しているのか分かりません。成功しやすい目標は「負荷に応じて自動でサーバーが増減するシステムを作りたい」というような具体的なものだそうです。ただし「目標はあまり高くしない」ことがポイントだそうです。

学習教材については、AWS公式サイトや、いわゆるBlack Beltシリーズと呼ばれる書籍、各種オンラインセミナーなどが紹介されました。分からないことはGoogleで調べるという人もいますが「Googleはキーワードを知らないと調べられない。でも書籍はページをめくれば知らない情報が出てくる」のが利点だそうです。

手を動かして勉強していくときに気を付けなければいけないのは、セキュリティ。たとえばソースの中にAWSへのアクセスキーを直書きしてしまい、そのままGitHubの公開リポジトリにプッシュしてしまうという事故は、よくあるそうです。最近では、そもそもアクセスキーを利用せずに済ませる事ができるので原則使わないことが推奨されています。どうしてもアクセスキーを利用する必要がある場合は、ソースの中にアクセスキーを書き込まず、環境変数を利用する方法が望ましいそうです。

f:id:itstaffing:20190909123532j:plain
▲手を動かして学ぶ際に、最低限押さえておきたいセキュリティ

どうしても不安であれば「セルフペースラボ(Qwiklabs)」の利用がお勧めだそうです。このサービスは、ほぼ無料で、30分間だけAWSやGCPが使えるというサービスです。時間が過ぎると、作成した環境を勝手に消してくれるので、初心者にもお勧めだそうです。

f:id:itstaffing:20190909123535j:plain
▲初心者にも安心して試せる「セルフペースラボ」

ちなみに、アウトプットをすることは敷居が高いように感じますが、気になったキーワードをTweetするだけでも意味があるそうです。

今回のイベントの参加者からは、クラウドの勉強方法が具体的にわかったとの声を多くいただきました。また、「セルフペースラボ」を使って、実際に手を動かして学んでみる方も多いのではないでしょうか。株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。