乙Py先生のプログラミング教室
初学者のためのプログラミング学習サイト

テクノロジー

Googleスプレッドシートでは
簡易なデータを取り込んで
SQLを使うことができるようになっています。

今回はそのやり方をご紹介します。

解説動画はこちら




データの取り込み

さてまずはデータを取り込みしてみましょう。

外部からデータを取り込む関数があります。
これでデータを取り込んでみましょう。

スプレッドシートを立ち上げて
シートのA1にこのコードを貼り付けて
実行してみましょう。

=IMPORTDATA("https://gist.githubusercontent.com/michhar/2dfd2de0d4f8727f873422c5d959fff5/raw/fa71405126017e6a37bea592440b4bee94bf7b9e/titanic.csv")
スクリーンショット 2020-10-31 17.26.19

IMPORTDATA("外部データのURL")
で外部データを取り込みできます。


あまり大きなデータは取り込めずに
エラーになってしまうようです。
目安は16000行ほどです。

小さなデータであれば
大丈夫でしょう。





QUERYの実行方法

データが取り込めたら
次はSQLを使う関数です。
QUERY関数でSQLを実行できます。

QUERY(<データ範囲>, "クエリ")

第一引数にデータ範囲を指定します。

クエリの対象データの範囲は
シートの位置を指定します。

今回取り込んだデータが
A:L列まで、892行目までのデータでした。

指定としては A1:L892
で全部を範囲指定できます。

SQLのSELECT文で言う
FROM句に該当します。

第二引数にクエリを書いていきます。


SELECT句

第二引数として指定する
クエリの部分です。

SELECT句の書き方は文を
「"」ダブルクォートで囲みます。

基本は
SELECT 列の位置
です。

列の位置はスプレッドシートの
列の位置を指定してください。

=QUERY(A1:L892 , "SELECT B , C")

このようにすれば
結果はB,Cの列のデータが出力されます。

SurvivedPclass
03
11
13


複数列の場合は「,」カンマで
つなぐことになります。

FROM句はQUERY関数の
第一引数で指定している部分なので
第二引数の所では不要になります。

WHERE句

次にWHERE句です。

条件指定をするところですね。

SELECT句の次に
WHERE句を指定します。
=QUERY(A1:L892, "SELECT D WHERE B = 1 AND E = 'male'")

Name
Williams, Mr. Charles Eugene
Beesley, Mr. Lawrence
Sloper, Mr. William Thompson




条件式の書き方は
通常のSQLと同様です。

列の値が一致するかどうかは = で判定
文字列を比較する場合は
文字列を「'」シングルクォートで囲みます。

数値の比較にはクォートは不要です。

LIKEで文字列の部分一致を
指定することもできます。

=QUERY(A1:L892, "SELECT D WHERE D like'%Mr.%'")

LIKEの後に
一致させたいところを書き
可変部分を % という形で指定します。


GROUP BY句

GROUP BY句はWHERE句の後に
指定をします。

グループ化したい列を指定して
SELECT句で集計関数を
使うことができるようになります。

ここではB列をグループ化して
A列の個数を数えてみます。

=QUERY(A1:L892, "SELECT B, COUNT(A) GROUP BY B")

Survived
count 
0549
1342

このような形で集計結果が出力されます。


PIVOT

PIVOTは機能としても有るようですが
GROUP BYの結果と違って
横に出力させることができます。

グループ化して集計した結果が
列方向に並ぶように出力されます。

=QUERY(A1:L892, "SELECT AVG(F) PIVOT C")
123
38.2334408629.8776300625.14061972



ORDER BY句

ORDER BY は並びかえです。

ORDER BY 並び替えしたい列名

デフォルトでは昇順
降順に並び替えたければ
DESCをつけます。

=QUERY(A1:L892, "SELECT F, COUNT(A) GROUP BY F ORDER BY F")
Age
count PassengerId
177
0.421
0.671
0.752


こんな形で簡易的にですが
スプレッドシートでSQLを
使うことができます。

意外と知られてはいないと思うので
使えると、仕事できる人感が
出るのではないでしょうかwww

是非使ってみてください。
それでは。


今回は知らない人向けに
データベースとSQLについてを
解説してみました。

営業さんや
これから技術を学ぶ人に
むいていると思います。

解説動画はこちら



内容はめちゃくちゃ簡単な内容で
SQLについても詳細な書き方などについては
触れていません。

全く知らない、触れたことがない人向けで
30分ほどあれば読み追われると思います。

さてまず最初はデータベース編です。

30分で理解する データベースとSQL.003

データベースとは何でしょう?

簡単に言うとデータを効率よく
管理するソフトウェアのことです。

表形式のデータを取り扱いするものは
リレーショナルデータベースと呼ばれ
RDBと略されています。

代表的なものとしては
MysqlやOracleなんかがあります。

30分で理解する データベースとSQL.004

データベース界隈の用語としては
データの最小単位として
テーブルというものがあります。

テーブルは表のことで
行列のデータの集まりです。


テーブルには
カラム:列のこと

30分で理解する データベースとSQL.005
ロウ:行のこと
レコードも1件のデータで
行と同じような扱いです。

行列が交わるところはフィールドです。

スキーマはテーブルの構造を
定義したもので
テーブルのカラムには
データ型と言うものがあります。

テーブルをまとめたものはデータセット

データセットをまとめて
データベースと言っていたりします。

30分で理解する データベースとSQL.010


様々なデータ型が存在します。
カラムは何かしら1つのデータ型で統一して
データが格納されています。

主なデータ型としては
文字列型
整数型
小数型
timestamp型
などがあります。

30分で理解する データベースとSQL.011


ここからはSQLの話です。

まずSQLは
リレーショナルデータベースを
操作するための言語です。

テーブルにデータを格納したり
テーブルからデータを抽出したりする際に
使用することができます。

今回は実際にSQLの実行環境などを
紹介しませんので、SQLや
文法の触りだけの紹介になります。

SQLには
DML
DDL
DCL
という3つの系統があり
それぞれにいくつかの文が存在します。


30分で理解する データベースとSQL.014

今回はその中でもよく使われる
DMLについてのみご紹介します。



一番最初はSELECT文からです。

SELECT文はデータを
抽出・参照するための文です。

たくさんの「句」で構成され
順番通りに書いて実行すると
条件に応じた結果が
出力されるというものです。

30分で理解する データベースとSQL.016
基本構成としては
7つの句があります。

1.SELECT句
2.FROM句

3.WHERE句
4.GROUP BY句
5.HAVING句
6.ORDER BY句
7.LIMIT句

上二つは何をどこから
を指定します。

下の5つは
どういう条件で抽出するか
抽出条件を書くところになります。

一番上はSELECT句です。
SELECT句は出力する物を
指定するところで
基本はカラム名を書きます。

複数ある場合は
カンマ「,」でつなぎます。


30分で理解する データベースとSQL.017

出力時はそのカラム名で
出力されますが
AS で別名をつけたりできます。

30分で理解する データベースとSQL.018

FROM句はどこのテーブルから
抽出をするか
テーブル名を書くところです。

30分で理解する データベースとSQL.019

WHERE句は条件指定をする所で
基本的にはカラムの値を条件にして
指定します。

その値に該当する結果が


30分で理解する データベースとSQL.020

GROUP BY句は
指定したカラムの値でグループ化し
そのグループ化したもので
別のカラムの値を集計することができます。

集計には集計関数を用います。


30分で理解する データベースとSQL.021



HAVING句は
GROUP BY句で指定したグループ化後の
集計結果をさらに絞り込む指定を
するところになります。


30分で理解する データベースとSQL.022


ORDER BY句は
並び替えの指定をするところです。

カラムの値で昇順か降順に
並び替えが行われます。

30分で理解する データベースとSQL.023

LIMIT句は単純に
出力行数を制御するところです。


30分で理解する データベースとSQL.024
基本構文の他にも
UNION句
JOIN句
WITH句
などが使えます。

UNION句は
縦に結果をつなげるイメージです。

SELECT文同志を
UNION句でつなげたりします。


30分で理解する データベースとSQL.026

JOIN句は横につなげるイメージで
4通りの指定方法があります。

FROM句の後に
JOIN句でくっつけたいテーブルを指定し
双方にあるデータをキーにして
片方のテーブルにしかないデータを
横につなげることができます。


30分で理解する データベースとSQL.027

30分で理解する データベースとSQL.028

INNER JOINはデフォルトで
双方のテーブルにある
データが結合します。

LEFT JOINは左側に対して
右側にある物をくっつけます。
RIGHT JOINはその逆です。

FULL JOINは全てのデータを
くっつけます。

FROMの後に書いた方が左側
JOIN句に書いたものが右側になります。

WITH句は一時的なテーブルを作成でき
後続のSQLでそのテーブルを利用できます。


30分で理解する データベースとSQL.029



INSERT文はテーブルにデータを追加します。

30分で理解する データベースとSQL.030


UPDATE文はデータの更新を行い
条件指定した行のデータを書き換えます。

30分で理解する データベースとSQL.031

DELETE文はデータの削除を行い
条件指定した行の削除を行います。

30分で理解する データベースとSQL.032

以上
簡単ではありますが
データベースとSQLについて
紹介を行いました。

実際に業務で取り入れる際は
データベースをインストールしたり
実行環境を整備したり
するのが必要になります。

まずはどんなものなのか
知識を蓄えておくと
良いのかなと思います。

今回はここまでです
それでは。


最近セキュリティー界隈を賑わす
大きな金融事件が発生しました。

これを気にセキュリティーの意識を高めて
対策できるようにしていきまっしょう。

解説動画はこちら


さて

まずはハッカーについてです。

よく誤解されていますが
ハッキングの語源で有るhack自体には
それほど悪い意味はありません。

ハッカーは
コンピュータや電子機器等に
深い技術的知識を持ち
その知識を利用して技術的な課題を
クリアする人々のこと
といった位置付けです。

lifehack
hackathon
といった言葉があるように

hackといった言葉には
向上させる、より高めるといった
意識が含まれる言葉だと思っています。

破壊行為あるいは
不正アクセスを伴う場合は
クラッカーと呼び
区別されているので

悪いことをする人は
クラッカーの方です。


ここからは主な手口を見ていきましょう。
・ソーシャル・エンジニアリング
・スパムメール
・マルウェアの配布
・サーバーへの攻撃

などがあります。

ソーシャル・エンジニアリング

人間の心理的な隙や行動ミスにつけ込んで
情報を入手する方法のことです。
・身分を詐称して暗証番号を聞き出す
・嘘の情報を流してパスワードを変更させる
・画面越しに暗証番号を覗き見する
・機器を設置して情報を盗む(スキミング)
などの行為が挙げられます。

スパムメール

宣伝目的で一方的に送りつけられる
電子メールのことです。
・身分を詐称して情報を聞き出す(フィッシング)
・送信元を詐称して迷惑な情報を流す
・サイトに誘導してマルウェアを植え付ける
・大量にメールを送りつけて業務を妨害する
などの行為で迷惑なものを送りつけてきます。

マルウェア

悪意のある有害なソフトウェアのことです。
(malicious software)
・ウィルス
・トロイの木馬
・キーロガー
・ボット(bot)
・ランサムウェア
などが有名なところですね。

ウィルスについて

PCやスマートフォンなどの記憶媒体を持つ
コンピューターに侵入し内部のファイルを改変し
増殖してしまうプログラム

これに感染するとコンピューターを乗っ取られたり
色々な不貞行為に巻き込まれます。

トロイの木馬について

一見無害なファイルやプログラムに
偽装した上でコンピューターに侵入したあと
悪意のある振る舞いをするプログラム

キーロガーについて

キー入力を監視しそれを記録するソフトウェア
もしくはハードウェア

最近だとTikTokが入力情報を外部に
漏らしているなんて報道がありましたね。


ここからは攻撃方法についてです。
・SQLインジェクション
・クロスサイトスクリプティング
・クロスサイトリクエストフォージェリ
・セッションハイジャック
・ブルートフォースアタック
・逆ブルートフォースアタック
・バッファオーバーラン
・バッファオーバーフロー
・DoS攻撃
・DDoS攻撃
・ボットネット


SQLインジェクション

アプリケーションが想定しない
SQL文を実行させることにより
データベースシステムを
不正に操作する攻撃方法のことです。

SELECT * FROM users
WHERE id=admin&pw=' or '1' = '1'

のようにパスワード部分などを
不正なクエリになるような
データを注入する方法です。

結構昔からありますね。

アプリケーション側での
バリデーションなどで
不正なコードの侵入を防ぐのが
一般的ですね。

Lord of SQLInjectionというサイトで
体験できます。

クロスサイトスクリプティング

ユーザーがWebページにアクセスすることで
不正なスクリプトが実行されてしまう
脆弱性または攻撃手法のことです。
スクリーンショット 2020-09-12 18.39.51


クロスサイトリクエストフォージェリ

Webアプリケーション利用者自身が
意図しない処理が実行されてしまう
脆弱性または攻撃手法のことです。

クロスサイトスクリプティングと似ていますね。

スクリーンショット 2020-09-12 18.39.58

セッションハイジャック

WEBアプリケーションの
セッション情報を盗み見て
なりすまして利用を行う手法です。

URLにセッション情報が含まれるような作りだと
結構盗み見ができてしまいます。

スクリーンショット 2020-09-12 18.40.04

ブルートフォースアタック

暗号解読方法のひとつで
可能な組合せを全て試すやり方です。

総当たり攻撃です。

一般的にはユーザーIDを固定して
パスワードを総当たりで試したりします。


スクリーンショット 2020-09-12 18.40.14

逆ブルートフォースアタック

上の方法とは逆にパスワードを固定して
ユーザーID等を総当たりで試す方法です。

ユーザーIDなどが大量に必要ではあるので
そこまで一般的では無いものの
最近の事件ではこの手法が
使われた可能性が高いようですね。

スクリーンショット 2020-09-12 18.40.20


DoS攻撃
(Denial of Service attack)

システムのサービスに処理能力を上回る大量のデータを
送りつけ、サービスを遅延、停止させる攻撃です。

大量のリクエストや、大容量データを
送りつけてサーバーを攻撃します。

昔、田代砲とか流行りましたね。

スクリーンショット 2020-09-12 18.40.27


DDoS攻撃

DoS攻撃を対象のウェブサイトや
サーバーに対して複数のコンピューターから
大量に行う攻撃のことです。

事前に他社のコンピューターを乗っ取り
ボットネットを構築し、攻撃態勢を
整えたのちに攻撃を仕掛けます。
スクリーンショット 2020-09-12 18.40.38

対策方法
・ネットワークの監視
・OSのアップデート
・ファイアーウォール
・脆弱性の検出
・不正検出
・パスワードの強化
・認証の強化

個人レベルで出来る対策は
こんなことぐらいですね。

セキュリティーはあんまり詳しく無いですが
必要最低限の知識は持っておきたいと思います。

最後に
ハッカーが活躍する作品です。
・BLOODY-MONDAY 主人公 高木藤丸
・ドラゴン・タトゥーの女 リズベット
・スニーカーズ 
・ソードフィッシュ
・スマホを落としただけなのに

どれも好きな作品で
特に「ソードフィッシュ」は
20回以上見ている大好きな作品です。

これを見てハッキング関連調べましたねえ。
最近だと「スマホを落としただけなのに」
なかなか面白かったですね。

興味がある方はここら辺を
調べていただければと思います。

よりいっそうセキュリティー意識が高まり
安全性の高いサービスになっていくことを願います。

それでは。

乃木坂46の情報を集めて
可視化してみました。

動画はこちら



使用しているTableauはこちらです。

 


さて
色々みていきましょう。
全体像はこんな感じですね。

氏名生年月日年齢出身地血液型星座身長(cm)
1期生秋元 真夏1993/08/2026埼玉県B型しし座154
1期生生田 絵梨花1997/01/2222東京都A型みずがめ座160
2期生伊藤 純奈1998/11/3021神奈川県A型いて座166
3期生伊藤 理々杏2002/10/0817沖縄県B型てんびん座154
1期生井上 小百合1994/12/1424埼玉県B型いて座156
3期生岩本 蓮加2004/02/0215東京都B型みずがめ座157
3期生梅澤 美波1999/01/0620神奈川県A型やぎ座170
3期生大園 桃子1999/09/1320鹿児島県O型おとめ座156
2期生北野 日奈子1996/07/1723北海道O型かに座158
3期生久保 史緒里2001/07/1418宮城県O型かに座159
1期生齋藤 飛鳥1998/08/1021東京都O型しし座158
3期生阪口 珠美2001/11/1018東京都A型さそり座161
2期生佐々木 琴子1998/08/2821埼玉県A型おとめ座163
3期生佐藤 楓1998/03/2321愛知県A型おひつじ座161
1期生白石 麻衣1992/08/2027群馬県A型しし座162
2期生新内 眞衣1992/01/2227埼玉県B型みずがめ座165
2期生鈴木 絢音1999/03/0520秋田県O型うお座160
1期生高山 一実1994/02/0825千葉県A型みずがめ座162
2期生寺田 蘭世1998/09/2321東京都不明てんびん座155
1期生中田 花奈1994/08/0625埼玉県A型しし座158
3期生中村 麗乃2001/09/2718東京都不明てんびん座167
1期生樋口 日奈1998/01/3121東京都A型みずがめ座159
1期生星野 みなみ1998/02/0621千葉県B型みずがめ座155
2期生堀 未央奈1996/10/1523岐阜県O型てんびん座160
1期生松村 沙友理1992/08/2727大阪府B型おとめ座164
3期生向井 葉月1999/08/2320東京都A型おとめ座152
2期生山崎 怜奈1997/05/2122東京都B型ふたご座164
3期生山下 美月1999/07/2620東京都O型しし座159
3期生吉田 綾乃クリスティー1995/09/0624大分県A型おとめ座161
3期生与田 祐希2000/05/0519福岡県O型おうし座152
2期生渡辺 みり愛1999/11/0120東京都O型さそり座153
1期生和田 まあや1998/04/2321広島県O型おうし座160
4期生遠藤 さくら2001/10/0318愛知県不明てんびん座160
4期生賀喜 遥香2001/08/0818栃木県A型しし座166
4期生掛橋 沙耶香2002/11/2017岡山県B型さそり座156
4期生金川 紗耶2001/10/3118北海道O型さそり座164
4期生北川 悠理2001/08/0818カリフォルニア州不明しし座163
4期生柴田 柚菜2003/03/0316千葉県A型うお座160
4期生清宮 レイ2003/08/0116埼玉県O型しし座162
4期生田村 真佑1999/01/1220埼玉県A型やぎ座158
4期生筒井 あやめ2004/06/0815愛知県O型ふたご座160
4期生早川 聖来2000/08/2419大阪府A型おとめ座164
4期生矢久保 美緒2002/08/1417東京都B型しし座152

こんなデータを用いて統計情報を作ってみました。

乃木坂46と言っているのに
43人しかいませんねーー

増えたり減ったりを繰り返しているようです。

43人の
平均的な身長は160くらいになり
平均年齢は20.5歳でした

最高年齢は
27歳が3名

最年少は
15歳が2名ですね。

最高身長は170cmが一人
最低身長は152cmが3名でした。

ここからはカテゴリ別で見ていきましょう。


まずは期別です
スクリーンショット 2019-12-07 17.27.41
よく知りませんが1-4期まであり、
人数は大体どの期も10人前後のようです。
年齢は1期の方から若くなっていきますね。

続いて血液型別です。

スクリーンショット 2019-12-07 17.27.29

血液型はA型が最も多くついでO,B

不明が数人いますが
なんとAB型はいないようですね。

乃木坂46になるにはAB型はダメなのかも知れませんねwww


星座別だとしし座、水瓶座、おとめ座が多いですね。

スクリーンショット 2019-12-07 17.27.56

アイドルになりにくい星座なんてのも
ありえるかも知れませんが、これだけだと
分かりませんね。

お次は都道府県別です。

スクリーンショット 2019-12-07 17.28.06
さすがに東京都は多いですね。
ついで埼玉でした。

東京の近辺は乃木坂46になるのには有利なのかも
知れません。

一人カリフォルニア出身がいますね
「欧米か!!!」
っと突っ込んであげましょう。



最後に名前の読み数です。
スクリーンショット 2019-12-07 17.28.15

まあ、女性の名前って2,3文字が多いので
しょうがありませんが、やはりアイドルの名前は
3文字以内が良さそうですね。






先日引退を発表された
メジャーリーガーのイチロー選手

その成績のデータを集めて可視化してみました

解説動画はこちら



さて先ずは

安打数からです

スクリーンショット 2019-03-23 16.50.59


球界デビューが1992年

安打数が爆発したのは3年目の1994年ですね

この年に210本を記録したのは当時の記憶が残っています
この時はまだ21歳とかなんですね。

そして2001年からはメジャーリーグへ移籍

メジャー初年度からもヒットを量産し
2004年メジャーの最多安打記録262本をマーク

2001-2010年まで
10年間200本安打を達成していますね

これは今後破ることが難しい
偉大な記録になると思います。

そして
次は安打の内訳です

スクリーンショット 2019-03-23 16.51.09

こちらは単打、シングルヒットがほとんどのようですね。

普通の選手であればアウトになるケースも
足で稼いでセーフになっているケースも多いと思います。

次に打率です。

スクリーンショット 2019-03-23 16.51.23

最初の2年はしょうがないとして
3年目以降ずっと3割を超える成績をマークしていました。

近年は打率を落としていましたが
それでも20代,30代前半までの記録は
他の選手を寄せ付けない素晴らしさです。

最後は年俸です。

スクリーンショット 2019-03-23 16.51.32

メジャーはドルでの年俸なので
円高円安ありましたが
全て110円で計算しています。

3年目に大活躍して
4年目には年俸が10倍に跳ね上がっています。

そして日本球界の最後の年は
5億3千万円と桁違いの年俸ですが・・・

そこからメジャーに挑戦した際には
一度上がって
そこから一回下がっていますね。

ただ、その後も活躍し続けて
複数年契約の際には
5年間20億円近い金額で契約しています。

メジャーリーグというのは
成功すれば恐ろしい額の年俸が手に入る
世界なんだと改めてと思わされます。

さて・・

今まで
たくさんの記録と記憶を
残してくださいました。


特に第二回WBCの決勝戦での
決勝タイムリー

これは
忘れることのない思い出ですよ・・・・

あの時見てましたわ、
開発の現場での仕事の遅い昼飯で、
渋谷の喫茶店だった・・・

店内総立ちですわ

拍手喝采とは
こういうのなんだなーと

日本国民一丸となって
盛り上がれるイベントって
そうそう無いですよね

古舘任三郎も見てました。

残念ながら
今年で引退ということで

今後は別の道での活躍を
期待したいと思っています。

それでは

このページのトップヘ