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

PRODUCED BY RECRUIT

第5話 集計と可視化:pandasでデータの加工をしてみよう【漫画】未経験なのに、機械学習の仕事始めました

f:id:itstaffing:20210607110700j:plain
f:id:itstaffing:20210607110703j:plain
f:id:itstaffing:20210607110707j:plain

  サンプルデータをダウンロードしよう  

当記事で利用するデータセットはこちらのサイトからダウンロードできます。
コードはこちらに掲載しています。

f:id:itstaffing:20210607110712j:plain

「Data Folder」をクリックし、次のページで「Online Retail.xlsx」をクリックすることで、データをダウンロードできます。

f:id:itstaffing:20210113102524j:plain
ここでダウンロードできるのは、架空のECサイトの商品購買データだよ!

  データを受け取ったら、まずは「何行何列か」を確認   

データを受け取ったら、まず最初に確認することは「何行何列のデータか」です。このサンプルデータは23メガバイトと比較的小さいため、Excelなどの表計算ソフトで開けます。

▼表計算ソフトでサンプルデータを開いた様子

f:id:itstaffing:20210607110716j:plain

行数の確認をExcel上で実施する場合は、Ctrlキーを押しながら下矢印キーを押すと一番下の行まで移動できます(Macの場合はCmd+↓)。全部で541910行のデータであることがわかります。先頭行は列名なので、データ本体は 541909 行です。

列に注目すると、

- InvoiceNo:レシート番号
- StockCode:商品コード
- Description:商品説明
- Quantity:購入量
- InvoiceDate:購入日時
- UnitPrice:単価
- CustomerID:顧客 ID
- Country:国

8列あります。

Pythonなどのプログラムによる自動化やExcel操作による手動操作のどちらであっても、データの加工はミスが非常に発生しやすい工程です。「行数と列数が意図した通りであるか」を確認すると防げるミスが多いので、データを受け取った直後に確認しておくことが重要です。

f:id:itstaffing:20210113102532j:plain
データ加工の誤りから得られた結果は、全て誤りになってしまいますからね!最初に、行数と列数をしっかりチェックしておきましょう。

  データ加工ライブラリ「pandas」を使ってみよう    

Pythonでのデータ加工では、pandasが用いられることが多いです。

探索的な分析が要求される場合に役立つ機能がある一方で、大規模なデータセットに対してはパフォーマンスで課題が生じる場合もあります。利用している環境によって異なりますが、1GBを超えるようなデータセットを扱う場合は、スペックの高いコンピュータを用意、pandasの高速化テクニックを利用、データベース上でデータ加工を事前にする、NumPyという多次元配列を処理するためのライブラリ(pandasはNumPy を使って開発されている)などの対応が必要になるかもしれません。

・pandas のインストール 
 
$ pip install pandas
 
※ Python の環境構築の手順は割愛します。
 
・エクセル形式のデータを読み込みたい場合
 
$ pd.read_excel(ファイル名)
 
・カンマ区切りのファイルを読み込みたい場合
 
$ ppd.read_csv(ファイル名)
 
読み込んだデータに`df`と名前をつけます。`df`はdata frameの省略語です。
 
f:id:itstaffing:20210113102532j:plain
pandasでは行と列を持つ2次元の表データをdata frameと呼んでいるんだ。では次に、このデータの概要を表示してみましょう。
・読み込んだデータの概要を表示する
 
$ df.info()
 
▼df.info()の出力結果
 
f:id:itstaffing:20210607110721j:plain
 
f:id:itstaffing:20210113102532j:plain
 
さっきExcelで確認したものと、pandasの出力結果はあっていますか?
f:id:itstaffing:20210113102524j:plain
ふむふむ。pandasの出力結果を見るに、541909行(541909 entires)で、8列(8columns)のデータを読み込んでいますね!さっきExcelで確認した数字と同じだ!
f:id:itstaffing:20210113102532j:plain
バッチリですね!Excelでデータを開いた時の、行数 及び 列数と一致しているのがわかりましたね。
f:id:itstaffing:20210113102532j:plain
次に、数値データを集計してみましょう。これも、pandasのコマンドで、一発ですよ。
・数値データを集計する 
 
$ df.describe()
 
f:id:itstaffing:20210607110724j:plain
 
ざっと眺めて、おかしなデータがないか確認しましょう。ここでは、Quantity(購入量)の最小値に注目してください。なぜかマイナスになっています。
 
f:id:itstaffing:20210113102529.j:plain
アレェ、購入量の最小値が、マイナスになってる……?そんなのおかしいですよね?このデータ間違ってるんじゃないですか? 
f:id:itstaffing:20210113102532j:plain
いいところに気が付きましたね!おかしなデータに遭遇したら、なぜそんな風になっているのか、理由を調査しましょう。

ExcelでQuantityがマイナスのCustomerIDを特定して、その日の購買記録を確認してみましょう。

f:id:itstaffing:20210607110731j:plain

購入した量と同じだけマイナスの記録があることから、返品処理がされたと推測できます。

f:id:itstaffing:20210113102524j:plain
Excelで確認してみたら、返品処理でマイナスを使ってました!なるほどね。謎がとけた~!
f:id:itstaffing:20210113102532j:plain
UnitPrice(単価)がマイナスになっている理由は、データを見るだけでは推測できませんでした。自分で調べても意図が不明なデータに遭遇した場合は、取引先や社内の詳しい人にヒアリングしましょう!

こちらの例では、10月末までにおけるRFM分析と11月に購買実績があるかを計算しています。RFM分析とは購買データを分析する際に利用される手法で、

・Recency(直近いつ)
・Frequency(頻度)
・Monetary(購入金額)

を集計して、顧客の動向を捉える方法です。集計結果からグループ分けすることで、優良顧客が全体の何割を占めるか、伸びしろのある顧客は何割いるかなどの分析に用います。

このプログラムでは、RFM分析の結果に加えて、11月に購買実績があるかどうかのデータ(is_visit)を付与しています。recency には 10月31日からカウントして何日前に購買記録があったか、frequencyには1日あたりの購入回数(10日に1回の買い物をしていたら、0.1になる)、monetaryはQuantity(購入量)\*UnitPrice(単価)の合計を計算しています。

f:id:itstaffing:20210607110734j:plain
 
f:id:itstaffing:20210113102524j:plain
これを全部手作業で集計しようと思ったら大変ですよね。それに、Excelで開けないほど重いデータもあるだろうし。pandasで効率的にデータを計算できるんですね!
f:id:itstaffing:20210113102532j:plain
次回は、集計結果を可視化して、グラフにしてみましょう!

次回の第6話では、集計結果をグラフにして可視化するPlotlyというライブラリを紹介します。お楽しみに。

第1話 機械学習の仕事内容って?実はコードを書くだけじゃない!
第2話 人工知能、機械学習、ディープラーニングの違いとは?
第3話 機械学習の活用事例!建設機械や回転寿司屋でも活用されている!?
第4話 機械学習したいのにデータがない!?

【筆者】
早川 敦士さん
株式会社FORCASの分析チームにてリーダーを務める傍らで、株式会社ホクソエムで執行役員として従事。新卒でリクルートコミュニケーションズに入社しWeb広告やマーケティングオートメーションなどのB2Cマーケティングを経験し、FORCASではB2Bマーケティングプラットフォームのデータ分析および開発を担当している。大学在学中に『データサイエンティスト養成読本』(技術評論社刊)を共著にて執筆。その後も『機械学習のための特徴量エンジニアリング』(オライリー・ジャパン刊)や『Pythonによるはじめての機械学習プログラミング』(技術評論社刊)などで執筆活動を続けている。国内最大級のR言語コミュニティであるJapan.Rを主催。Youtubeチャンネル『データサイエンティストgepuro』で動画を投稿。
・Twitterアカウント

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

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

 
 
f:id:itstaffing:20210113102514j:plain  f:id:itstaffing:20210113102516j:plain
 
f:id:itstaffing:20210113102519j:plain  f:id:itstaffing:20210113102521j:plain


わかばちゃんと学ぶシリーズ(Amazonページ)

第2話 レイアウトで躓きやすいポイント 【連載】実務で使えるAccessのコツ

f:id:itstaffing:20210601164405j:plain

データベース管理ソフトウェア、Accessを実務で使うときに「知っているとちょっと便利なコツ」について紹介するこのコラム。今回はレイアウトでつまずきやすいポイントを解説します。見た目が揃わずにイラッとしたことがある方はぜひ最後までお読みください。あなたのAccess力アップに役立ちますように。

前回のコラムを見逃した方はこちらからご覧ください。
第1話 イベントを使いこなそう

【筆者】今村 ゆうこさん
【筆者】今村 ゆうこさん
地方の非IT系企業に勤務し、業務アプリケーション開発を行うプログラマー。著書のイラストや図解も手掛けている。大学卒業後出身地へUターン就職し、2度の産休/育休を経て現在は小学生と保育園児の2人のこどもを抱えるワーキングマザー。主にVBAを使ってデータベースの情報を加工/展開するアプリを開発するほか、WordPressを使った個人ブログ(https://ateitexe.com/)で技術情報を発信している。著書に『Accessデータベース 本格作成入門』『Excel & Access連携 実践ガイド』(技術評論社)など。

  コントロールの配置に苦戦しがち   

Accessを使いはじめて、レポートやフォームにコントロールを配置する際に「なかなか思い通りの形にならないな…」と、思ったことはありませんか?覚えがないのにグループ化(?)されていて、1つだけ動かすことができなかったり、そうかと思えばコントロールが縦横キレイに揃わなかったり…。

f:id:itstaffing:20210601164408j:plain

Accessはデータベースを管理するのが目的のソフトなので、コントロールの扱いにちょっとクセがあります。でも、最初はとっつきづらいですが、仕組みを理解すれば怖いことはありません。今回は、そんなコントロールの「配置」のコツを紹介します。

  「ビュー」の違いを知ろう   

まずは、Accessには「ビュー」というモードがあることを覚えておきましょう。

設定によって異なる場合もありますが、大抵は以下のように、フォームには3つ、レポートには4つのビューがあり、いずれかをクリックすることで「ビュー」を切り替えることができます。

f:id:itstaffing:20210601164526j:plain

「フォーム/レポートビュー」は、操作のためのビュー(下の画像はフォームビュー)です。フォームなら値の選択や入力、レポートなら絞り込みや印刷ができます。そのため、レポートのみ「印刷プレビュー」用のビューがあります。

f:id:itstaffing:20210601164414j:plain

「デザインビュー」は設定のためのビューです。コントロールの配置や、どのテーブルと関連付けるかなど、さまざまな設定が行えます。デザインビューでは、テーブルのフィールドと連結しているテキストボックスなどのコントロールには、そのフィールド名が表示されます。そのため、連結していない場合は「非連結」と表示されます。

f:id:itstaffing:20210601164417j:plain

「レイアウトビュー」は「データの内容を確認しながらレイアウトを変更できる」という、「フォームビュー(操作専用)」と「デザインビュー(設定専用)」の中間のような役割です。

f:id:itstaffing:20210601164420j:plain

ここで覚えておきたいのが、レイアウトビューは操作画面に近くわかりやすい反面、デザインビューに比べて詳細な設定ができない部分があるということです。

以下の画像はフォームのレイアウトビューとデザインビューのリボン部分ですが、同じ「デザイン」タブでも設定できる項目がデザインビューのほうが多いことがわかります。配置できるコントロールの数も(ドロップダウンリストに格納されて隠れていますが)デザインビューのほうが多いのです。

f:id:itstaffing:20210601164424j:plain

このように、ビューの違いによってできることが違う、ということを覚えておきましょう。

  「レイアウトの形式」を知ろう   

次にコントロールの「配置」についてです。Accessのレポートやフォームに配置されているコントロールには、「レイアウトの形式」を設定することができます。これが、冒頭で書いた「グループ化(?)」の正体です。

レイアウトの形式には代表的なもので2つあり、フィールド名とデータが一対になっているレイアウトを 「集合形式」 と呼びます。

たとえば、テーブルを元に自動作成したフォームなどは、「集合形式」があらかじめ設定されます。データ入力などにわかりやすい形なので、入力目的のフォームによく使われます。

f:id:itstaffing:20210601164427j:plain

「集合形式」とは別に、フィールド名が上部に横並びになり、その下に対応するレコードが複数行表示されるレイアウトを 「表形式」と呼びます。

たとえば、テーブルを元に自動作成したレポートなどは、「表形式」があらかじめ設定されます。テーブルやクエリのデータシートビューの見た目に似た配置で、たくさんのレコードを1画面で閲覧できる形です。

f:id:itstaffing:20210601164429j:plain

レイアウトの有無の識別は、デザインビューまたはレイアウトビューでコントロールを1つ選択したときに、大きな破線で囲まれて左上に以下のようなマークが付いているかどうかで判断できます。このマークが表示されたら、破線内は「集合形式」または「表形式」のレイアウトが設定されています。この状態の場合、コントロールは位置が固定されているので、個々に動かすことができません。

f:id:itstaffing:20210601164432j:plain

これらの形式は、リボンの「配置」タブの「テーブル」グループで設定/解除することができます(レイアウトの削除はデザインビューのみ)。コントロールを自由な位置に動かしたい場合は、レイアウトの削除を行うとよいでしょう。

f:id:itstaffing:20210601164530j:plain

逆に、フリーのコントロールは手動できれいに並べるのが難しいので、揃えたいコントロールをすべて選択してレイアウトを設定するときれいに整列させることができます。

f:id:itstaffing:20210601164534j:plain

  ラベルがくっついてきちゃう!    

「集合形式」または「表形式」のレイアウトが設定されていなければ、個々のコントロールは自由に動かせますが、隣のラベルが一緒に動いてしまう場合があります。

f:id:itstaffing:20210601164442j:plain

これは、コントロールに付随する見出しとして、ラベルが連携されているからです。コントロールと連携しているラベルは、「デザイン」タブからプロパティシートを表示させ、「その他」タブの「ラベル名」で確認できます。この部分を別のラベルへ変更すれば連携を変更できますし、空白にして連携を解除することもできます。

f:id:itstaffing:20210601164537j:plain

連携しているコントロールの片方だけ動かしたい場合は、それぞれ左上の■をドラッグします。

f:id:itstaffing:20210601164447j:plain

ラベル自体が必要ない場合は、ラベルだけ選択してDeleteキーを押せば連携されたラベルは削除されます。

f:id:itstaffing:20210601164451j:plain

  コントロールのオブジェクト名は適宜設定しておこう    

コントロールを作成すると、自動でオブジェクト名が付けられ、プロパティシートの「その他」タブの「名前」で確認することができます。さきほどのコントロールと連携するラベル名の指定は、ここに書かれているものを使います。

f:id:itstaffing:20210601164541j:plain

この「名前」は、任意の文字に変更することができます。デフォルトのものが増えると区別がつかなくなるので、わかりやすい形に命名しておきましょう。

命名するのにもルールを設けておくと管理がしやすくなります。筆者はよく“商品ID”のラベルなら「lbl_商品ID」、“商品ID”のテキストボックスなら「txb_商品ID」のように、頭文字にコントロール種類の略称を付けています。一定のルールに従って名前を付けておくことで、一覧で見つけやすくなります。

f:id:itstaffing:20210601164546j:plain

また、この「名前」はマクロやVBAでも使われます。適切な命名はプログラムを格段に読みやすくしますので、ぜひ設定しておいてください。

  高さや幅を揃える   

フォームを自動作成すると、あらかじめ「集合形式」でレイアウトを設定してくれているので、縦横のラインは揃っていてくれているのですが、コントロールの「高さ」がバラバラな場合があります。

f:id:itstaffing:20210601164550j:plain

こんなときは、表示をデザインビューに切り替えて「配置」タブを見てみましょう。レイアウトビューにはない「サイズ変更と並べ替え」というグループが存在しています。

f:id:itstaffing:20210601164554j:plain

レイアウトが設定されている左上部分をクリックするとすべて選択できるので、この状態で「サイズ間隔」→「低いコントロールに合わせる」をクリックします。

f:id:itstaffing:20210601164558j:plain

すると、コントロールの高さが揃いました。

f:id:itstaffing:20210601164605j:plain

横幅の調節は、実際のデータのテキストの長さを確認しながら変更を行えるレイアウトビューのほうが便利です。

f:id:itstaffing:20210601164609j:plain

このように、目的に応じてビューを使い分けるとよいでしょう。

  コントロールの「周り」を制御する   

最後に、コントロールの「周り」に関する知識です。

例としてテキストボックスを選択して、プロパティシートの「書式」タブを見てみましょう。たくさん設定できるものがありますが、そのなかでも一見して理解しにくいのは「スペース」と「余白」、「境界線」と「枠線」の違いです。似たような単語で、何がどこに作用するのか、ちょっと難しいですよね。

f:id:itstaffing:20210601164613j:plain

こちらは、図にすると以下のような関係性になっています。なお、「枠線」と「スペース」はレイアウト設定がなされていないと適用されません。

f:id:itstaffing:20210601164520j:plain

たとえば境界線の代わりに枠線を使って線の太さや色、余白などを調整することで、個性的な仕上がりにすることも可能です。

f:id:itstaffing:20210601164616j:plain

いかがでしたか。レイアウトに関する知識は、知らなくてもなんとなくの形は作れますが、知っていると「ここをもう少し」という微調整ができて、完成品のクオリティが向上します。ぜひ参考にしてみてください。

次回はマクロとVBAの違いについて解説します。どう違うのか、どちらを使うべきかわからない方、必見です。

第1話「イベント」を使いこなそう 【連載】実務で使えるAccessのコツ

f:id:itstaffing:20210511130431j:plain

MicrosoftOfficeシリーズで利用できるデータベース管理ソフトウェア、Access。Excelなど他のソフトと比べて情報が少ないため、わからないことがあっても調べるのに苦戦し、結局同じ機能ばかり使っていませんか?このコラムでは、Accessを実務で使うときに「知っているとちょっと便利なコツ」について、Accessに関する著書を多数お持ちの今村ゆうこさんが解説します。痒い所に手が届く、そんなコラムを目指して更新しますので、あなたのAccess力アップにお役立てください。

【筆者】今村 ゆうこさん
【筆者】今村 ゆうこさん
地方の非IT系企業に勤務し、業務アプリケーション開発を行うプログラマー。著書のイラストや図解も手掛けている。大学卒業後出身地へUターン就職し、2度の産休/育休を経て現在は小学生と保育園児の2人のこどもを抱えるワーキングマザー。主にVBAを使ってデータベースの情報を加工/展開するアプリを開発するほか、WordPressを使った個人ブログ(https://ateitexe.com/)で技術情報を発信している。著書に『Accessデータベース 本格作成入門』『Excel & Access連携 実践ガイド』(技術評論社)など。

  アプリは「イベント」を利用して動いている    

Accessはデータベース管理ソフトウェアですが、データの管理のみならず、自由にUIを設計して独自のアプリケーションを作成することができます。UIの土台を「フォーム」、土台の上に設置する部品を「コントロール」と呼びますが、これらに対してユーザーが行った操作(イベント)で、指定のアクションが起動するようにしておくのです。

直感的に理解しやすいのが「ボタン」コントロールです。おそらく何も説明されていなくても、「クリックしたら何かが起こるんだろうな」という気持ちになりますよね。この心理を利用して、マクロやVBAで作ったアクションを「ボタン」コントロールの「クリック時」イベントに対して設定すると、ユーザーも操作に迷いにくくなります。

f:id:itstaffing:20210511130433j:plain

しかし、「ボタン」コントロールにはほかにもたくさんのイベントが存在しています。たとえば、「ダブルクリック時」「フォーカス取得時」「フォーカス離脱時」などを利用してアクションを起こすこともできるのです。

「ボタン」に関して言えばユーザーが一番使いやすいのは「クリック時」で間違いないでしょうが、Accessのコントロールにはどんな種類があって、それらのコントロールのイベントにはどんなものがあるのか、どこから参照できるのかということを知っておくと、より便利なアプリケーション開発へのヒントにつながるかもしれません。

今回は、そんなイベントの探し方や使用例などを紹介します。

  セクションとコントロール    

下の図は、新規Accessファイルにて「作成」→「フォームデザイン」で新規フォームを作成したところです。

f:id:itstaffing:20210511130436j:plain

フォームはデフォルトでは「詳細」しか表示されていませんが、右クリック→「ページ ヘッダー/フッター」「フォーム ヘッダー/フッター」をクリックすると、以下のように隠れていたセクション(領域)が表示されます。

f:id:itstaffing:20210511130439j:plain

フォームではあまり利用されないかもしれませんが、セクションはレポートでは重要な部分で、印刷時に複数ページに渡ったときに以下のような特徴があります。

フォーム/レポートヘッダー
:最初のページのヘッダーだけに印刷される
ページヘッダー
:すべてのページのヘッダーに印刷される
ページフッター
:すべてのページのフッターに印刷される
フォーム/レポートフッター
:最後のページのフッターだけに印刷される
 
したがって、(特にレポートの場合ですが)どのセクションにコントロールを配置するかによって使われ方が異なる場合があるので、覚えておくとよいでしょう。

コントロールは、「デザイン」タブ内から選ぶことができます。コントロールを選択し、任意のセクション内でクリックまたはドラッグ(範囲指定)して配置します。
 
f:id:itstaffing:20210511130441j:plain

  保有イベントの探し方    

対象オブジェクトを選択した状態でプロパティウィンドウ(表示されていない場合は「デザイン」→「プロパティーシート」)の「イベント」タブを見ると、そのオブジェクトに用意されているイベント一覧が確認できます。テキストボックスにもこんなにたくさんのイベントがあるのがわかりますね。

f:id:itstaffing:20210511130444j:plain

イベントを利用できるオブジェクトはコントロールだけではなく、セクションやフォームそのもの(セクション外のグレー部分をクリック)にもたくさん用意されています。

f:id:itstaffing:20210511130447j:plain

特定のイベントからなんらかのアクションを起動させたい場合は、イベントの「…」をクリックすると「ビルダーの選択」ウィンドウが開きます。

f:id:itstaffing:20210511130450j:plain

「ビルダーの選択」ウィンドウで「マクロビルダー」を選択すると、マクロツールでアクションを登録できます。

f:id:itstaffing:20210511130453j:plain

「ビルダーの選択」ウィンドウで「コードビルダー」を選択するとVBE(Visual Basic Editor)が開き、該当のイベントプロシージャが挿入されるので、ここにコードを書きます。

f:id:itstaffing:20210511130455j:plain

動作するのは「フォームビュー」操作時です。例としてテキストボックスの「変更時」イベントを設定したので、テキストボックスの内容を変更すると登録したマクロ/VBAが起動します。

f:id:itstaffing:20210511130459j:plain

  チェックボックスで削除フラグを含める/含めない一覧に切り替える例    

それでは応用例を見てみましょう。ここからは、のちほどSQLを書くときにわかりやすいように、テーブル名には「T_」、フィールド名には「f_」、コントロール名にはその種類の略称を頭文字に付けるルールとします。

図のようなテーブルがあるとします。

f:id:itstaffing:20210511130502j:plain

フォームに、コンボボックスとチェックボックス、それぞれに付随するラベルを設置します。コンボボックスは以下のように設定して2列表示できるようにします。幅はフィールドの値が適切に表示される大きさを任意で設定します。

f:id:itstaffing:20210511130506j:plain

チェックボックスは規定値をFalseにしておきます。

f:id:itstaffing:20210511130508j:plain

ここまでが下準備です。

フォームの「読み込み時」イベントを設定します。コードビルダーを選択してイベントプロシージャを作成しましょう。

f:id:itstaffing:20210511130511j:plain

作成された「Form_Load」プロシージャへ以下のように書くことで、「フォームが開いた時」に「削除フラグがFalseの商品リスト」をコンボボックスのソースにします。

Private Sub Form_Load()
 Me.cmb_商品.RowSource = "SELECT f_商品ID, f_商品名 FROM T_商品マスター
WHERE f_削除フラグ = False;"
End Sub

続いてチェックボックスの「クリック時」イベントでコードビルダーを選択し、イベントプロシージャを作成します。

f:id:itstaffing:20210511130513j:plain

作成された「chk_削除フラグ_Click」プロシージャへは以下のように書き、チェックボックスの値でコンボボックスのソースを「すべての商品リスト」か「削除フラグがFalseの商品リスト」に切り替えます。

Private Sub chk_削除フラグ_Click()
 If Me.chk_削除フラグ.Value = True Then
  Me.cmb_商品.RowSource = "SELECT f_商品ID, f_商品名 FROM T_商品マスター;"
Else
  Me.cmb_商品.RowSource = "SELECT f_商品ID, f_商品名 FROM T_商品マスター
WHERE f_削除フラグ = False;"
 End If
End Sub

フォームビューで動作確認をしてみると、「フォームが開いた時」は「削除フラグがFalseの商品リスト」になっています。

f:id:itstaffing:20210511130516j:plain

チェックボックスをクリックして値を切り替えると、リストが変化します。

f:id:itstaffing:20210511130519j:plain

ほかにも、コンボボックスの「変更時」イベントで別のコンボボックスのリストを絞り込んだり、テキストボックスの「フォーカス喪失時」イベントで入力値をチェックしたりなど、イベントのことを知っていると「このタイミングでこんな動きをしたらどうだろう」というアイデアが思いつきやすくなりますよね。

コントロールについて、新しい活用イメージがわきましたか?コラムを読んだら、一度Accessに触れながら復習するのもおすすめです。次回はレイアウトでつまずきやすいポイントを解説します。レポートやフォームを作成するときに位置や大きさがバラバラになってしまう方、必見です。

第4話 機械学習したいのにデータがない!? 【漫画】未経験なのに、機械学習の仕事始めました

f:id:itstaffing:20210420140753j:plain
f:id:itstaffing:20210420140756j:plain
f:id:itstaffing:20210420140759j:plain
f:id:itstaffing:20210421132847p:plain

  データを使える状態にする「前処理」って何?    

前処理は、第1話で紹介した CRISP-DM において、ビジネス理解、データの理解、データの準備の3ステップにあたります。

STEP1.ビジネス理解

まずは、ビジネス理解についてです。解決したい問題設定におけるビジネスを理解していなければ、どのデータを使えばいいか見当がつきません。身近に詳しい人がいれば、ヒアリングすることをオススメします。ここでは、「原因と結果」について深く聞きましょう。

原因が明確でない場合は、業務のフローを順に辿るとビジネスの理解が深まり、必要なデータの見当がつきます。業務の過程で生まれる記録が「データ」であり、予測対象に必要な「原因」を突き止められる可能性が高いです。

STEP 2.データの理解

次にデータの理解です。必要なデータを入手しますが、機械学習を始めるにあたり、この段階で壁にぶつかることが多いです。業務フローの中で発生するデータは人手で入力されることが多く、全ての項目に正しく入力されているとは限りません。

別の項目に誤って入力されてしまっているケースもあるし、そもそも入力すらされていないケースもあります。実際のデータを丁寧に見ていき、これらのデータが何を意味しているかを解読していきます。

前のステップで業務フローをヒアリングしていれば、項目が意味するところの推察ができるかと思います。不明な点があれば、質問を逐次していきます。

また、Webサービスや機械によって書き込まれるデータをデータベースから取り出して使うこともあります。システムのためのデータであるので、分析がしやすい形式になっているとは限りません。

IDやコードのように直接的に意味を持たない項目の場合は、関連するテーブルと結合が必要です。歴史あるサービスになるほど複雑なデータ構造を持つことが多いので、サーバーサイドエンジニアに聞くのみでなく、営業やマーケティングチームなど他の部署とのやりとりが発生することもあります。

ビジネス理解とデータの理解は関係性が非常に深いので、完全に分離できるものではなく、交互に実施します。

STEP 3.データの準備

前処理の最後の工程は、データの準備です。データベースに格納されている場合は、データベースを操作するSQLという言語を用います。SQLを使うことによって、データベースにあるデータを取得したり、加工したりすることができます。

ソフトウェアエンジニアは、SQLを駆使してデータを処理することでシステムを構築します。単一のテーブルでデータを集められない場合は、複数のテーブルと結合。結合処理もSQLで書くことができます。

Excelなどのファイルで、データが記録されていることも多いです。人間にとって読みやすい形式で保存されていることが一般的ですが、コンピュータが処理しやすいとは限りません。セル結合、セル内改行、1 行目の空欄、複数のシートに分割されているなど、さまざまなケースがあります。これらの一つずつに対応しましょう。

f:id:itstaffing:20210420140805j:plain

  「前処理」は、時間がかかるが大切な工程    

前処理は非常に時間がかかる作業ではありますが、他の職種からは理解されにくい工程でもあります。データがあるのに分析が始まらないことに疑問を感じる人も多いので、この工程にある開発者は仕事の負荷が高くなりがちです。

日頃から、ビジネスやデータに関する理解を深めていくことで負荷を軽減でき、データの加工に必要な技術やツールを整えていく努力が求められます。

次回は、データの加工に必要なソフトウェアライブラリの一つである Pandas を紹介します。お楽しみに。

第1話 機械学習の仕事内容って?実はコードを書くだけじゃない!
第2話 人工知能、機械学習、ディープラーニングの違いとは?
第3話 機械学習の活用事例!建設機械や回転寿司屋でも活用されている!?

【筆者】
早川 敦士さん
株式会社FORCASの分析チームにてリーダーを務める傍らで、株式会社ホクソエムで執行役員として従事。新卒でリクルートコミュニケーションズに入社しWeb広告やマーケティングオートメーションなどのB2Cマーケティングを経験し、FORCASではB2Bマーケティングプラットフォームのデータ分析および開発を担当している。大学在学中に『データサイエンティスト養成読本』(技術評論社刊)を共著にて執筆。その後も『機械学習のための特徴量エンジニアリング』(オライリー・ジャパン刊)や『Pythonによるはじめての機械学習プログラミング』(技術評論社刊)などで執筆活動を続けている。国内最大級のR言語コミュニティであるJapan.Rを主催。Youtubeチャンネル『データサイエンティストgepuro』で動画を投稿。
・Twitterアカウント

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

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

 
 
f:id:itstaffing:20210113102514j:plain  f:id:itstaffing:20210113102516j:plain
 
f:id:itstaffing:20210113102519j:plain  f:id:itstaffing:20210113102521j:plain


わかばちゃんと学ぶシリーズ(Amazonページ)

第3話 機械学習の活用事例!建設機械や回転寿司屋でも活用されている!?【漫画】未経験なのに、機械学習の仕事始めました

f:id:itstaffing:20210319101446j:plain
f:id:itstaffing:20210319101453j:plain
f:id:itstaffing:20210319101455j:plain
f:id:itstaffing:20210319101506j:plain
f:id:itstaffing:20210319101508j:plain
f:id:itstaffing:20210113102524j:plain
私たちの日常にも、データ活用や機械学習が活かされているんですね!

  現実世界で「機械学習の技術」は、どのように活かされているの?

マーケティング領域ではデータ活用が進んでいます。マーケティング職や、ウェブ、アプリ開発の仕事をされている方は、機械学習が用いられるシーンはよく見かけるかもしれません。しかしそれ以外の、一般的にはイメージしにくい分野でも機械学習は活用されています。

【1】建設機械:盗難・ローン滞納を解決!

1つ目の例は小松製作所です。IoTの先行事例としても有名で、発端は1998年までさかのぼります。小松製作所は建設機械を取り扱っていて、1台が高価な商品になります。当時は、建設機械が盗まれてしまうことに悩んでいたそうです。

その対策として生まれたのが、GPS の取り付けです。位置情報を取得することによって、その機械が現在どこで動いているかをモニタリングできます。通常の稼働場所と異なっている場合には盗難の疑いが出て、追跡も可能です。

また、高価な建設機械であるために、ローンの支払いが滞ってしまう場合もあるそうです。事業所や建設機械の利用場所は交通の便が良いところにあるとは限らないので、営業担当者が直接訪問するコストは高い…。そこで、遠隔操作で建設機械のエンジンを止める機能を導入することで、支払いが滞った機械を使えなくしました。営業担当者が現地に行くことなく、支払いを強いプレッシャーで促すことができるそうです。

メンテナンス時期の自動予測にも繋がった

もともとは盗難やローン滞納の対策として導入した仕組みですが、データを集めてモニタリングすることによって、付加価値を生み出すことにも成功。どのように、どれぐらい稼働しているかをそれぞれの機械ごとに把握できるので、メンテンスが必要な時期を予測することができます。

建設機械が突然に故障してしまうと、計画通りに工事が進まなくなってしまいます。部品交換やメンテナンスの時期を伝えることで、事業者は想定外の事態にあう可能性を下げることもできます。さらに、交換部品の在庫管理がしやすくなり、修理担当者のスケジュールも作りやすくなったそうです。

このシステムはコムトラックスと呼ばれていて、後にIoTと呼ばれることになりました。

【2】回転寿司屋:需要予測システムで食品ロス軽減!

回転寿司屋の「スシロー」がデータ活用を進めていることも興味深いです。寿司ネタの需要予測システムは 2014年から導入されました。それまでは店長の勘と経験で、いつ・どの寿司ネタをレーンに流すかを決めていたそうです。しかし、店長個人のスキルに大きく依存してしまうため、成績の良い店舗と悪い店舗がありました。そこで、経験の少ない店長も営業成績をあげられるように、寿司の需要予測システムを導入したそうです。

1皿ごとに IC チップを搭載。1分後と15 分後に必要な寿司ネタを予測できるようになり、レーンで寿司が回転している時間が短くなりました。これにより、食品廃棄量を75%も減らすことができたそうです。

大量データの分析は、ExcelからBIツールへ

また、データ活用も 2012年時点で大規模に実施されています。Excelでの分析をやめて、QlikViewというBIツールを導入。Excelでは店舗ごとに集計することはできましたが、寿司に関するデータは毎年10億レコードも増えるので全店舗を横断して分析することがBIツールなしでは不可能でした。このデータは売上分析や新商品開発に活用されています。

2015年には来店予約をスマートフォンから出来るようにして、店内での待ち時間を減らすことに成功しました。これは、座席がいつ空くのかをデータから予測するアルゴリズムを開発することで実現。店舗ごとの顧客の動向も反映させ、予測精度を改善しているそうです。

さらに、昨年の 2020 年には、会計を自動化するシステムも導入。座席にカメラを設置して、顧客が何のお皿を食べたかを検知します。人件費の節約ができるだけでなく、店員と顧客の接触機会も減らすことができます。この技術はエッジAIやエッジコンピューティングなどと呼ばれていて、端末自身でお皿の検知ができるため、クラウド上で動作する AI に比べてサーバー代を抑えることもできます。画像などの大きなデータに効果を発揮しやすい領域です。

※会社名、商品名については、一般に各社の登録商標です。TM表記などについては記載しておりません。また、特定の会社、製品、案件について、不当に貶める意図もございません
 
f:id:itstaffing:20210113102532j:plain
このように、思いもしないところでもデータが活用され、機械学習が使われています。業務改善に繋がる場合もあれば、付加価値を生む場合もあります。機械学習は応用範囲が非常に広いので、新たなビジネスやサービスが生まれています。今後も面白い活用方法が出てくるのが楽しみですね。
f:id:itstaffing:20210113102524j:plain
回転寿司のお皿の裏のICチップって、廃棄のタイミングを管理しているだけかと思っていましたが、まさかこんなふうに活用されていたとは!
f:id:itstaffing:20210113102532j:plain
このような観察眼をもって、自分のまわりを見渡してみると、機械学習を導入・活用できそうな場面がまだまだ見つかるかもしれませんよ!探してみましょう!
f:id:itstaffing:20210113102524j:plain
今回までで 「機械学習の仕事内容」 「人工知能・機械学習・ディープラーニングの違い」 「機械学習の活用事例」がわかりました。次回はいよいよ実務ですか!?ワクワクします。

第1話 機械学習の仕事内容って?実はコードを書くだけじゃない!
第2話 人工知能、機械学習、ディープラーニングの違いとは?

【筆者】
早川 敦士さん
株式会社FORCASの分析チームにてリーダーを務める傍らで、株式会社ホクソエムで執行役員として従事。新卒でリクルートコミュニケーションズに入社しWeb広告やマーケティングオートメーションなどのB2Cマーケティングを経験し、FORCASではB2Bマーケティングプラットフォームのデータ分析および開発を担当している。大学在学中に『データサイエンティスト養成読本』(技術評論社刊)を共著にて執筆。その後も『機械学習のための特徴量エンジニアリング』(オライリー・ジャパン刊)や『Pythonによるはじめての機械学習プログラミング』(技術評論社刊)などで執筆活動を続けている。国内最大級のR言語コミュニティであるJapan.Rを主催。Youtubeチャンネル『データサイエンティストgepuro』で動画を投稿。
・Twitterアカウント

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

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

 
 
f:id:itstaffing:20210113102514j:plain  f:id:itstaffing:20210113102516j:plain
 
f:id:itstaffing:20210113102519j:plain  f:id:itstaffing:20210113102521j:plain


わかばちゃんと学ぶシリーズ(Amazonページ)

特別編集 テクニカルライティング

f:id:itstaffing:20210305133620j:plain

文章を書くことに苦手意識を持っていませんか?仕様書などの技術的な文章を書くときに使える「テクニカルライティングのポイント」をご紹介します。テクニカルライティングは、課題解決するための思考整理にも使えるそう。メールや議事録でも使える「ロジックツリーで構造を整理する方法」や「簡潔な文章を書くコツ」も合わせて押さえておきましょう。

Pickup
 
1:トップエンジニアが実践する思考整理法 テクニカルライティングを用いた課題解決の基本
 
記事の内容
・エンジニアが養うべき、テクニカルライティングの重要性
・なぜテクニカルライティング=思考整理になる?
・黄金フォーマットを使ってアウトプットに繋げよう

2:仕事を効率化し、評価を高める ロジカルライティングとテクニカルライティング入門
 
記事の内容
・テクニカルライティングのプロが伝授!わかりやすい文章の考え方
・自分の文章の弱点は?
・ロジックツリーで文章の構造を整理しよう

3:わかりやすく伝えるコツとツボを試験対策とマンガから学んでみる
 
記事の内容
・「プログラミング」と「本を書く」という工程は、実は同じ
・C言語でプログラムを書くときも、章立て→目次→中身の作り込み
・簡潔な文章を書くコツ

特別編集 Git

f:id:itstaffing:20210302115610j:plain

誰が・いつ・どこで・何のために・どう修正したか、という記録を取りまとめることができる「Git」。便利なツールであるため、Gitを導入する企業が増えています。いまは利用していなくても、転職や新しい現場で利用していたときに備えて、「基礎の基礎」と「実際の使い方」を押さえておきませんか?具体的な操作を交えながら、使い方やつまずきやすいポイントを解説しているマンガもご紹介します。

 
Pickup
 
1:Gitの使い方超入門ハンズオン

記事の内容
・そもそもGitとは?
・初心者でもわかりやすいGitの「基礎の基礎」
・Gitを使うメリット

2:【マンガで学ぶ】リポジトリを作ってコミットしてみよう
 
記事の内容
・「基礎の基礎」が理解できたら、リポジトリを作ってみよう
・リポジトリとは?
・実際にGitをインストールしよう。WindowsとMacそれぞれの手順

3:第3回「エンジニアとしてこのさき生きのこる」ためのコラム
 
記事の内容
・Gitの基本操作を習得しておいた方がいい理由
・「GitHub」とは?GitとGitHubの違い
・GitとGitHubの基礎的な操作を体験してみよう

4:第4回「エンジニアとしてこのさき生きのこる」ためのコラム
 
記事の内容
・「Git」が一般化すると、使えないこと自体が「弱み」になってしまう
・GitもGitHubも使い始めるのはそれほど難しくはありません。実際に触れてみよう
・簡単な例題「FizzBuzz」の実装