微忘録

好奇心に記憶力がついていかない人のブログ

MySQLの導入からDB構築、クエリ実行までの基礎

はじめに

TRUNKという会社が学生対象に提供しているMySQL基礎トレーニングに参加しました。 事前準備から講座内容と、気になって調べたところを備忘録。

本題

以下の内容を勉強した。

  • MySQLインストールと設定
  • MySQLサーバー起動とデータベース作成
  • データベース操作
  • クエリ練習

MySQLインストールとサーバー接続

定番のbrew installMySQLを導入。

$ brew install mysql

自分の環境ではlinkエラーが発生したので、以下の過去記事を参考にして修正。
Homebrewインストールのlinkエラーを修正する方法 - 微忘録

セキュリティ設定(対話型形式で行われる)

$ mysql_secure_installation
  • rootユーザのパスワードを変更
  • anonymousユーザを削除
  • rootユーザのリモートログイン禁止
  • testデータベースを削除

加えて他のログインユーザーの作成・権限付与・パスワード設定などをすると望ましい。

起動からDB作成

サーバー起動と終了

$ mysql.server start
$ mysql.server stop

任意の形でログイン(-uはユーザ名、-pはパスワード)

$ mysql -uroot  #rootユーザーとしてログイン
$ mysql -u <ユーザ名> -p #特定ユーザーとしてパスワードを入れてログイン

データベースの作成と確認

mysql> CREATE DATABASE <データベース名>;
mysql> SHOW DATABASES;

DB構築と操作

使用するDBへの接続(接続せずともクエリへの追記でアクセスできる)

mysql> USE <データベース名>;

テーブルを作成
(型が可変か固定型か、NULLを許容するかなど意識して設計する)

mysql> CREATE TABLE <テーブル名> ( <カラム名> <型>(<bit指定>), ...);

テーブルの確認 (以下二種のどちらでもOK)

mysql> SHOW COLUMNS FROM <テーブル名>;
mysql> DESC <テーブル名>;

データ(レコード)の追加 (文字列は``もしくは""で囲う)

mysql> INSERT INTO users(<カラム名>,<カラム名>) VALUES(<数値>,'<文字列>');

データ(指定レコード)の削除

mysql> DELETE FROM <テーブル名> WHERE <カラム名> = <条件値>;

データ(指定レコード)の更新
(ここでINDEXの重複不可制限などが活用でき、重複更新を防ぐことができる)

mysql> UPDATE <テーブル名> SET <カラム名> = <変更後のレコード> WHERE <カラム名> = <条件値>;

クエリ練習

お題は「別テーブルの同種IDと一致する、ユーザー名を表示する」

並列記法

mysql> SELECT tbl1.name 
    -> FROM table1 AS tbl1, table2 AS tbl2 
    -> WHERE tbl1.id = tbl2.user_id; 

入れ子(サブクエリ)記法

mysql> SELECT name FROM table1
    -> WHERE id IN
    -> (SELECT user_id FROM table2);

最後に

クエリは叩けどもDBを作成した経験はなかったので勉強になった。 試しに簡単なWebサービスを構築してみて、補足知識を補っていきたい。

『Bluetooth』と『ANT』の通信規格について調べる

はじめに

ここ最近『Zwift』という実走データと連動するサイクルトレーニングゲームにハマっています。超楽しい。

しかし、このゲームの初期設定の通信規格の選択で、一度挫折しました。センサーデータを取得するための通信設定として『Bluetooth』と『ANT』の二択を選ぶ場面があるも、これら二種の違いを一切知りませんでした。とりあえずはググって情報が多い『ANT』を選び、ドングルとやらを買い、初期設定も無事終了。

ただ、やはりこの二種の通信規格の違いが気になり、今後もつまづく部分だと思い調べたので備忘録。

本題

要は二種それぞれが得意とするところは以下らしい。完全な別物。

  • Bluetooth近距離の特定多数センサー間の高速通信のネットワーク構築
  • ANT:超近距離の多数センサー間の柔軟なネットワーク構築

以下で少し詳しく、『Bluetooth』と『ANT』の近距離無線(PAN*1)通信規格の違いについて、特徴と実活用面について記載。

Bluetooth

Bluetooth』は、エリクソン社を中心に複数のプロモーター企業により、「乱立する無線通信規格を統一する」という主眼のもと策定・開発された、低消費電力と中長距離の高速通信を特徴とする近距離無線通信規格。

プロモーター企業としてPCやスマホのハード面の巨大企業であるインテルIBMノキア東芝マイクロソフトモトローラ、アップルなどの企業が名を連ねており、多方面の分野で活用されている。

「接続された各機器がBluetoothを使って何ができるか」を標準化して示すプロファイルにより、機器同士の接続性の把握しやすいという特徴をもつ。しかし応用分野の発展でプロファイルが複雑化する問題が発生している。

また発表当初は「赤外線通信の代替手法」と誤認され普及が遅れたが、その後の2010年発表のバージョン4.0でBluetooth Low Energy(BLE)』という、ボタン電池一個で数年間維持できるほどの低消費電力を備えた。そして2016年発表のバージョン5.0では、IoT技術に焦点を当てた進化により、データレートが2Mbps,1Mbps,125kbpsの3種に増え、到達距離が125kbpsでは最大400mまでを備えた。

ANT

『ANT』は、GPS端末装置メーカーのGarmin社の傘下である、カナダのDynastream Innovations社が開発した、低消費電力と運用互換性を特徴とする近距離無線通信規格。

開発当初のANT機器は、ランナーの運動測定をするセンサー機器とモニタリングする腕時計との近距離間で通信するための機器。そのため双方向の送受信機能を支える省電力性能、そして多種センサー類との同時相互通信の機能が必要とされた。

そして『ANT』規格にて、近距離間にて多様なネットワークトポロジ*2を構築でき、ボタン電池1つで数年間維持できるほど省電力の性能を備えた。その後『ANT+』規格にて多種センサーとの運用互換性を備えた。またこれは『ANT+ Alliance』というANT規格を用いる連携企業群の機器であれば、他企業のセンサー機器でも通信できる。特にフィットネス関連の機器において用いられており、2013年程まではスマートフォンでも対応機種が存在していた。*3

最後に

「ANT規格の優位性は確かにフィットネス分野向きだなぁ」と思いました。

しかしスマホ中心にデータ収集されるのが浸透した今では、フィットネス分野にもBluetooth普及の波が来ていることは、AmazonにてBluetooth規格のセンサー類が増加して来たことからも伺えます。

なお(自分のように方向音痴でない方で)サイクルコンピューターを購入検討中の方には、全てがBluetooth対応らしいWahoo社のサイクルコンピュータとその他センサー類をお勧めしたいです。

分かりやすく使いやすいのが一番!

参照元

http://labs.beatcraft.com/ja/index.php?ANT/ANT���

第508回:ANT/ANT+ とは - ケータイ Watch Watch

https://www.bluetooth.com/news/pressreleases/2016/12/07/bluetooth-5-now-available

*1:Personal Area Network

*2:通信ネットワーク上の各種端末機器で構築可能な接続形態

*3:iPhone5以前、また当時期のXperia系統で対応していた

『第三者割当増資』など増資について調べる

ここ最近、ニュース記事などで頻繁に目にする『第三者割当増資』。成長ベンチャーから財務不振の大企業まで、幅広い企業が行っている増資手段です。

ただ増資手段の意味やメリットについて無知だったので、かるーく調べたついでに備忘録。

本題

要は『第三者割当増資』は「特定の第三者に新株を発行することで、資本金を得る増資手段」とのことで、「特定投資家との関係構築」な点が嬉しそう。

他の増資手段もあわせると以下の3種類がある。これらは「新株発行による増資」という点では同様だが、その対象や価格設定などに違いがある。

  • 公募増資(PO)
  • 株主割当増資
  • 第三者割当増資

公募増資

全投資家に対して新株の購入権利が与えられる増資手段。これは企業にとって増資のみならず株主層の拡大や、株式の流通量を増加するメリットがある。

公募増資においては、株式の公開価格を時価株価よりも少々安価にする傾向があり、これは既存株主が利益損失の被害(株式の希薄化)を受けないようにする企業側の配慮であるが、これを懸念した投資家の売りにより結局は株価が下がる傾向があるとのこと。

また株式の販売価格(払込金額)の決定方法として、投資家の需要状況を把握することにより、市場動向に即した払込金額に決定する方式(ブックビルディング方式)が一般的とのこと。

株主割当増資

既存の株主に対して新株の購入権利(新株予約権)が与えられる増資手段。公開時は時価株価と関係なく低い価格設定になるらしい。また株主の持ち株数に比例した購入権利が与えられるため、株主構成や持ち株比率に対して大きな変化が出ない増資手段というメリットがある。これは特に資金調達が簡単な増資手段とされているらしい。

第三者割当増資

既存株主とは関係のない第三者に対して新株の購入権利が与えられる増資手段。業務提携先との関係強化や資本提携を行う場合、また、企業の経営状態が悪く株価が低いため普通の増資ができない場合に、事業支援や会社再建の際に利用できるメリットがある。

親会社や取引先等といった関連する特定の第三者に対して増資が行われることになるため、新たな株式の発行価額の高低が既存の株主に影響を与えることになる。そのため既存株主の利益を保護する観点から、時価よりも特に有利な価額で新たに株式を発行する場合には、株主総会の特別決議が必要となる。

最後に

ざっくりと調べた感じでは、第三者割当増資が選ばれる場合は、

  • 経営外部の株主からの事業評価が低く、投資が期待できない場合
  • 経営内部に株主がおり、株主からの合意獲得が容易な場合(ストックオプション制)

の場合なのかなぁという、浅はかな印象を抱きました。また少しは企業動向を読めるようになれると嬉しいです。次は減資について調べたいところ。

参考元

【公募増資】【第三者割当増資】【株主割当増資】 | 日本証券業協会

公募・第三者割当・株主割当 | 日本証券業協会

公募増資│初めてでもわかりやすい用語集│SMBC日興証券

増資には3つの方法があります。それぞれのメリットをまとめました。|税理士紹介エージェント

Pyenv環境でのPythonバージョン設定

Pyenvでの環境構築でコマンドをド忘れしがちなので備忘録

解決策

現在のインストール済みバージョンを確認
『*』マーク付きがglobal環境で設定されている

$ pyenv versions
  system
* 3.5.0 (set by /usr/local/var/pyenv/version)

ディレクトリの設定済みバージョンだけを確認

$pyenv version
3.5.0 (set by /usr/local/var/pyenv/version)

グローバル環境でのバージョン設定

$ pyenv global <versionName>

指定ディレクトリ(local)でのバージョン設定

$ pyenv local <versionName>

最後に

この方のQiitaメモがPyenv/Pyenv-virtualenvのコマンドについて簡潔にまとまっており、答え合わせとして参考にさせていただきました。 pyenv 利用のまとめ - Qiita

R言語でデータフレームの特定行を除外する方法

発端

{RMeCab}パッケージによる形態素解析をした結果、無駄な行名が一部あった。 元の文章をgsub関数なりで先に綺麗にすれば良いが、「そういえば行名指定で取り除く方法って何だっけ」と思い調べたのでメモ。

方法

重複確認に便利な%in%演算子を用いて、指定行名と重ならない行だけを抽出する

test_df[!(rownames(test_df) %in% c("行名1","行名2")), ]

最後に

行名指定でなければ、dplyr::filterbase::subsetにより指定条件の行抽出をすることができる。また列名だとdplyr::selectdplyr::select_each関数などで簡単にできる。この行名バージョンを発見したら追記する。

Homebrewインストールのlinkエラーを修正する方法

問題

PostgreSQLbrew installした時に以下のようなエラーに遭遇した。

$ brew install postgresql
Warning: postgresql 10.1 is already installed, it's just not linked.
You can use `brew link postgresql` to link this version.

どうやらリンクされていないらしく、warning文の指示に従うも、 (すでにpostgresqlがインストールされていたことは置いといて)

$ brew link postgresql
Linking /usr/local/Cellar/postgresql/10.1... 
Error: Could not symlink share/man/man3/SPI_connect.3
/usr/local/share/man/man3 is not writable.

symlink(brewpostgreSQLの中継役)が正しく設定されていないらしく、postgreSQLが(簡単には)利用できない状況にある。なので、writableになるよう設定を整備します。

解決策

  1. writableにしたいman3があるディレクトリに移動し、
  2. chownでman3のユーザー権限を現アカウントに委譲
  3. 再びbrew linkしてpostgresを上書き保存
$ cd /usr/local/share/man
$ sudo chown -R $USER man3
$ brew link --force postgres
Linking /usr/local/Cellar/postgresql/10.1... 
Error: Could not symlink lib/pkgconfig/libecpg.pc
/usr/local/lib/pkgconfig is not writable.

自分の場合、pkgconfigにも同様にsymlinkを設定する必要があったので、同様の解決策を試し、最後にきちんとリンクが通っているか確認します。

$ psql --version
psql (PostgreSQL) 10.1

無事通りました。やっとpostgreSQLを使うスタートラインです。

最後に

brew doctorをするとlinkエラーの起きているkeg(樽:生成材料)が特定できるので、上記の解決法を試せば、同様に改善されるかと思います。

$brew doctor

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  postgresql

DataCampがR言語の初学者にとって素晴らしいサービスだった話

つい先日、DataCampにおける『R言語 中級編』である『Intermediate R』まで修了しました。 体系的に学べる環境が身近にない、初学者の自分にとって非常に良いサービスでしたので、宣伝と感想を下記。

DataCampについて

概要

DataCampとは、データサイエンスに用いるプログラミング言語の使い方を学べる、アメリカ発のWebサービスです。 解説などは英語のみですが、今流行りのIDE形式のインターフェイスで、Webブラウザから簡単に学べる仕様のため、それほど学習は苦ではありません。 講座を修了すると認定証が貰え、Linkedinの資格欄に追加できるなどの面白い機能もあります。

www.datacamp.com

講座の種類は?

言語はR,Python,SQLPostgreSQLがメイン?)の3種が用意。 また前処理から機械学習、そしてレポーティングまでの講座が用意されています。 コースは87講座、スキルトラックは13分類あり、学習目標から逆算して受講できる仕組みもあります。

自分はRとSQLの講座しかまだ触れていませんが、Rの伝統的な書き方からモダンな書き方まで、幅広く扱われていることがとても好印象です。 apply系関数も、日本語のweb記事ではあまり見かけないvapply()についてガッツリ学習できました。 またR言語界隈では"神"とされるHadley Wickhamの講座も1つだけあります。(※2017/10/28時点)

サービス料金は?

R言語の初級編である『Introduction R』までは、無料で受講できます。 その後、追加の講義を受けたい場合は、年間もしくは月間の有料契約になります。

現在は年間契約は月25ドル、月間契約は月29ドルです。(個人契約の場合) 年間契約しても日本円で約6000円程度の差なことと、半年間で修了したいことから、自分は月間契約にしています。

感想

良い点

良い点は『スキルトラック』です。後述ですが、『スキルトラック』とは特定の技能習得のための体系的な講座群です。例えば、「ファイナンス特化のデータサイエンス」のようなスキルトラックがあります。

基本的に学習方針が『書籍』or『ググる』になってしまいがちなエンジニア分野の学習において、「とりあえずブラウザ開いてログインすれば、目的に合わせてこっちが全部用意しとくから」なサービスは非常にありがたく、初学者の自分はずいぶん救われました。

悪い点

悪い点は『想定外のコード不可』です。コードの結果だけでなく書き方もチェックしており、実行結果は合っているがエラー文を出されることが頻繁にありました。必死にググって書いた文でエラーを吐かれた時は、八方塞がり感に襲われました。

ただRには間違った実行文を適切に解釈し直してくれる便利機能があるため、その機能に頼らない書き方を学習できるという側面から見ると、一転して良い点だと思います。

最後に

日本円に直すと月額2500~3000円ほどかかるため決して安くはないサービスですが、学習方針の設定に右往左往する無駄な時間が削減でき、知識定着の満足感がシッカリ得られるため、値段相応の素晴らしいサービスだと思います。 書籍を買い漁る前に、まずは一度、無料講座だけでも触ってみてはいかがでしょうか?

www.datacamp.com