調べるブログ

Apple製品(Mac/iPhone/iPad)、IT、仮想通貨など自分が調べた様々なことを記事にしています。

数学の学習一辺倒だった機械学習の勉強を変えてみる

学生時代の数学からやりなおしている話

先日、機械学習の勉強を始めたがいきなり数学で挫折したので、まずは学生時代の数学からやり直しているという記事を書いた。

loxley-tips.hatenablog.jp

 

すると、はてなブックマークのコメントで貴重なご意見をいただいた。曰く、機械学習の本を読みながら必要なときだけ数学の本を参照するやり方もあるのではないか、と。

機械学習の本を読みながら、必要な時だけ数学の本を参照するのもいいかもですね。岡谷貴之さんの「深層学習」など、行列と簡単な微積で読めると思います。 

 

仕事でPythonは使うようになったけれど、周囲で(特に機械学習用途で)実務に利用している人がいない。個人的に学習している人がポツポツといる程度だ。しかもその人達が利用しているのはJupyter Notebookであり、環境から構築して勉強しているのは自分を含めてほんのわずか。自分の周囲だとあまり参考になるような例はなさそうだ。

そこでまずははてブの意見を参考に、書籍やサイトの記事で活用例や事例を参照して試しつつ、必要に応じて数学の単元を学んだほうが効率がよさそうに思えた。Youtubeでディープラーニング系の動画も見たがそちらも参考になりそうだ。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

 

とりあえずトライ&エラーを繰り返してやってみようか。 

 

もう一つのご意見がこちら。

すごくわかる。学生時代数学は得意だったはずなのに、何か進まない、というか頭に残らない…

必要とされる数学が難しいように思う。

社会人になって産業系ロボットに使われる部品を制御する仕事をやったことがあり、微分積分は用途(加速度、速度、距離等)も知っているし、(プログラムを)組んだことあるのだが、それ以外がどうもピンとこない。 一応、非エンジニア向けの本や資料、LTなどはチェックしているのだが、いざ機械学習系の技術分野に入ると、ある(機械学習系の)技術を理解するには前提として数学の知識が必要で、そのための準備として(数学を)勉強して、とけっこう手戻りが多い印象である。というか堂々巡り?

f:id:Loxley:20181008172918j:plain

ここ数年、四則演算くらいしか必要のない仕事ばっかりだったので数学脳的なものが退化してしまったのかもしれない。

正直、WAFのFlask・Djangoや、PythonからのDB利用などを習得していた頃のほうが面白く感じる。

人によっては喜々として数式で遊んでいるのを見かけるので、こればかりは向き不向きなのだろうかと思うようになった。

 

深層学習検定教科書なるものが発売される

最近はちょっと効率的なことも考えるようになり、検定試験の教科書を見て必要な項目に当たりをつけるなんてやりかたもありかなと考えている。 LPIC(今はLinuC?)教科書は役立ったし、書籍が発売されたら目次をチェックしてみるかな。

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS)

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS)

  • 作者: 浅川伸一,江間有沙,工藤郁子,巣籠悠輔,瀬谷啓介,松井孝之,松尾豊,一般社団法人日本ディープラーニング協会
  • 出版社/メーカー: 翔泳社
  • 発売日: 2018/10/22
  • メディア: 単行本
  • この商品を含むブログを見る
 

【対象読者】

・「ディープラーニング G検定(ジェネラリスト検定)」を受験しようと思っている人

・ディープラーニングについてこれから広く学びたい人

・ディープラーニングを事業活用しようと思っている人 

 

該当試験のシラバスはこちらのページに記載されている。

 

関連する資格試験については以下の記事でもメモを残しているのでご参考にどうぞ。(この記事は10月9日時点に書いているため、記事内の時系列が食い違っていたらご容赦願いたい)

loxley-tips.hatenablog.jp

gitに.gitignoreもcommitしてしまった場合の対処方法

.gitignoreファイルまでcommitしてしまった

リポジトリに.gitignoreファイルを配置すると記述した内容をcommitから除外できるが、うっかり.gitignoreファイル自体を除外扱いするのを忘れてしまい、既にpushまでしてしまい、面倒なことになった。

remoteから削除してlocalからも削除してやり直すのもいいが、何か方法はないだろうか。

対処方法

https://cdn-ak.f.st-hatena.com/images/fotolife/L/Loxley/20160329/20160329022149.png

などと思い、Qiitaの記事を探していると、こんな記事が。

qiita.com

早速やってみる。

 

$ git rm -r --cached .
$ git add .
$ git commit -m ".gitignore is now working"
$ git push origin master

 

で、リモートリポジトリを見に行くとたしかに.gitignoreファイルも削除されている。

 

今後はちゃんと管理しようと以下の記述に変更しておいた。 

$ cat .gitignore 
#このファイル
.gitignore
#MacOSが自動的に生成する
.DS_Store
#WindowsOSが自動的に生成する
Thumbs.db
#個別プロジェクト用設定

 

MacBook ProでGitHubを使い始める

GitHubを利用する

プログラミング言語PythonやElixirをせっかく体系的に書籍で学ぶわけだから、学んだこと、試したことをノウハウとして後で参照できるようにしようとGitHubを使うことにした。

 

ちなみに、GitHubは無料だが公開リポジトリを利用することになり、非公開リポジトリは有料となる。逆に、GitLabなら無料で非公開リポジトリが利用可能だ。そんなわけで無料で非公開リポジトリを利用したいならGitLabを使えばいいわけだが、どうせ将来的にポートフォリオやソース、資料を公開するわけだからGitHubでいいやと使い始めてみた。

github.com

プロジェクトを作る

アカウントとSSH Keyは以前作成しておいたので、GitHubではいきなりプロジェクトを作る。(SSH KeyはGitHubからSetting→SSH Keysを表示すると説明があるので割愛)

f:id:Loxley:20181013001125j:plain

ローカルで作業しリモートリポジトリにpushするまで

ローカルでの作業端末はMacBook Pro。作業はTerminalで行う。(順番は正確ではないかもしれない)

$ git config --global user.name "xxxx"

※xxxxは任意の文字列

$ git config --user.email example@aaa.com

※記載したメールアドレスはもちろん例

$ cat ~/.gitconfig
[user]
        name = xxxx
        email = example@aaa.com

 

適当なディレクトリを作成して、cdし、初期化を行う。

$ git init

試しにテキストファイルを作成し、addとcommitを行う。

$ git add .
$ git commit -m "1st test commit"
$ git log

ローカルリポジトリにcommitされていることを確認する。

 

GitHubのプロジェクトのページでSSHのアクセス先をコピーして、設定を行う。

$ git remote add origin git@github.com:yyyyy/new-project.git

※yyyyyはGitHubのユーザー名、"new-project"は作成したプロジェクト名

 

リモートリポジトリにpushする。

$ git push -u origin master

GitHubの該当プロジェクトページを参照し、目的のファイルが登録されていればOKだ。 

https://cdn-ak.f.st-hatena.com/images/fotolife/L/Loxley/20181006/20181006021245.jpg

筆者は先にローカルリポジトリ作業をドットインストールで勉強し、リモートリポジトリはQiitaの記事を読み漁った。

Gitコマンド

次はGitコマンドについて記事にしたい。

GitHubで初学者が使用するコマンド一覧をpushし登録しておいた。

github.com

 

GUIツールもある

筆者は主にコマンドラインによる操作を学んだが、GUIツールもあるので初学者はそちらから入るのもいいかもしれない。

Gitはとっつきにくいなぁと思う方にはマンガ本もあったりする。

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

 

ちなみにQiitaの記事はより実践的なものが多く、自分がメンバーとして参加する場合を想定しているケースで書かれており、自分がGitHubにプロジェクトを作成して一連の作業を行うという記事があまり見当たらなかった。 

 

当初、とっつきにくさを感じていたGitだが、よく使用するコマンドを憶えてリモート・ローカルでの操作を理解してくると開発効率がすさまじく向上するツールだなと思うようになった。Linusすげー・・・。

機械学習を勉強しようと久々にAnaconda Navigatorを起動しようとしたらerrorが発生していたので対処したこと

数学の勉強にも飽きてきたし、そろそろ機械工学の勉強に着手しようと技術書籍を購入した。 

教科書代わりに使用するこの書籍は「Python 3 エンジニア認定データ分析試験」の出題範囲でもある。

Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY)

Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY)

 

↓この記事で資格試験のシラバスについて紹介している。

loxley-tips.hatenablog.jp

 

この書籍はWindows版もしくはMacOS版の「Anaconda」を教材に使うようで、筆者は数ヶ月前にインストールしておいたWindows版を起動してみた。

 

Anaconda Navigatorが起動しない

ところが、Anaconda Navigatorを起動すると、なぜか "anaconda navigator start error" が表示され、起動に失敗する。

f:id:Loxley:20181012202144j:plain

 久々の起動だし、アップデートが必要なのかと思い、Anaconda Promptで次のコマンドを実行した。

conda update anaconda-navigator 

するとアップデートが行われた後、何度かAnaconda Navigatorの再起動を要求され、正常起動できるようになった。 

 

NVIDIA Geforceを機械学習に使いたい

筆者のメインPCにはNVIDIA Gefroce GTX1070が装着してあり、これをゲームとマイニング以外に活用したいと常々考えていた。

loxley-note.hatenablog.jp

機械学習関連はLinuxで行うのがトラブルが少ないようなので、Widnows10環境で問題があるようならCFカードにUbuntuをインストールしてそちらから起動し、機械学習環境として使ってみようと思う。

 

MSI GeForce GTX 1070 GAMING X 8G 『Twin Frozr VI/OCモデル』 グラフィックスボード VD6072

MSI GeForce GTX 1070 GAMING X 8G 『Twin Frozr VI/OCモデル』 グラフィックスボード VD6072

 

 

MacのTerminalでvimに行番号とタブ数を設定する方法

MacBook Pro購入時に最初からvimは使用できるが、行番号が表示されず、タブ数も8になっていて使いにくい。 RubyやPythonの学習時は行番号表示とタブ数は4が望ましい。

vimを設定する

以下の設定を行うことで行番号の表示、タブ数4にすることができた。

$ cd ~
$ vim .vimrc

.vimrcに以下の編集を行い保存する。 

set number
set tabstop=4 

 

Terminalを開き直してvimで新規にファイルを開くと行番号が表示され、4タブ入力となっていることを確認した。 

f:id:Loxley:20181007185931j:plain

 

コードはKindle Unlimitedに登録されていた書籍に記載されたものを写経したもの。 

はじめてのRubyプログラミング

はじめてのRubyプログラミング

 

 

Keywordの色

CentOS、Ubuntuのvimだとプログラミング言語のキーワードをデフォルトで色付けしてくれるがMacのそれは一色。次はこの設定を調べてみようと思う。

追記:2018年10月14日

~/.vimrc に以下の設定を加えるとプログラミング言語Pythonのソースコードを色分けでいた。

syntax on

この設定はvimのコマンドモードでも設定可能だ。例えば、vimで編集中に

:syntax off

と入力すれば色分けは解除される。

 

MacのTerminalでElixirを動かす

MacでElixirを動かす

f:id:Loxley:20181011004425p:plain

MacのTerminalでiex(ElixirのREPL)を動かしたくなったので実機上にElixirをインストールすることにした。 

以前、VMのUbuntu上に下記の書籍を参考にElixir/Phoenixをインストールし、初歩のチュートリアルプログラムを動かしたことがあるので今回もその書籍(主に付録C・D)を参考にインストールを試みたのだが、kerl installのあたりで停止する。 そういえばUbuntuにインストールしたときもそうだった。

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

 

 

結局、公式を参考にする

そんなわけで今回も公式サイトを参考にお手軽インストールすることにした。 

elixir-lang.org

Homebrew
Update your homebrew to latest: brew update
Run: brew install elixir 

たったこれだけである。

とりあえずPhoenixは必要ない、Elixirも最新バージョンでなくてもいいというのであれば公式のインストール方法を実行すればiexは使えるようになる。

Elixirの最新バージョンは気になるけれど、「プログラミングElixir」を学習するには1.2以降であれば問題ないようなのでこのまま使用することにする。ちなみに公式のインストール方法でインストールした環境はバージョン1.7.3であった。

プログラミングElixir

プログラミングElixir

 

 

実行環境の動作確認として書籍のP.4を入力してみる。

f:id:Loxley:20181011010408j:plain

問題ないようなのでこのまま言語の勉強に使用することにする。 

iexを終了させようとcontrol+Cを押すはずが、なぜかcommand+Dで画面分割になり、「はわわわ」と慌てたのは私だけではないはずだ。(=ω=;)

 

ちなみにTerminalから透けて見える壁紙は「World of Warcraft」。公式サイトから入手できる。(4K画像がRetinaで映える)

Battle for Azeroth - Media - WoW

 

実環境に影響を与えたくない人はDockerを使ったほうがいいだろう。 

loxley-tips.hatenablog.jp

 

その際、Dockerに不慣れであればQiitaの以下の記事が大変参考になる。

qiita.com

 

関数型言語は既存の概念が通用せず、まるで難解なパズルゲームで遊んでいるようだ。ただこれを乗り越えると並列処理が書けるようになるのでがんばってみよう。

(同僚に関数型言語のHaskellを使用している人がいるので、軽く関数型言語のレクチャーを受けたのだがさっぱり...)

Python3エンジニア認定データ分析試験やディープラーニング検定の内容についてメモ

 機械学習、データ分析関連でシラバスと教材が公開されていたのでメモ。

データ分析試験

 一般社団法人Pythonエンジニア育成推進協会が実施する認定試験。

www.pythonic-exam.com

◆「Python 3 エンジニア認定データ分析試験」概要
試験名称:Python 3 エンジニア認定データ分析試験
概要:Pythonを使ったデータ分析の基礎や方法を問う試験 

 

公式サイトでは出題の傾向(どの項目がどのくらいの割合で出題されているか)も明示されている。

データ分析試験 | 一般社団法人Pythonエンジニア育成推進協会

 

出題範囲は教材である下記の本の内容に沿っているようだ。

Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY)

Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY)

 

興味があったのでこの書籍はKindle版を購入して、出先でも読めるようにしておいた。 

 

ディープラーニングG検定(ジェネラリスト)

一般社団法人 日本ディープラーニング協会が実施する検定試験。ジェネラリストとエンジニア試験に分かれて実施される。

www.jdla.org

ディープラーニングに関する知識を有し、事業活用する人材(ジェネラリスト)と、ディープラーニングを実装する人材(エンジニア)の育成を目指します。各々に必要な知識やスキルセットを定義し、資格試験を行うとともに、協会が認定した事業者がトレーニングを提供します。 各々年二回実施予定。日進月歩する技術であることから、検定・資格実施年毎に実施年号を付与する。 

 

こちらの検定試験は教科書が発売予定になっている。紙の本が先に発売され、Kindle版はその数週間後に発売のようだ。

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS)

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS)

  • 作者: 浅川伸一,江間有沙,工藤郁子,巣籠悠輔,瀬谷啓介,松井孝之,松尾豊,一般社団法人日本ディープラーニング協会
  • 出版社/メーカー: 翔泳社
  • 発売日: 2018/10/22
  • メディア: 単行本
  • この商品を含むブログを見る
 

【対象読者】
・「ディープラーニング G検定(ジェネラリスト検定)」を受験しようと思っている人
・ディープラーニングについてこれから広く学びたい人
・ディープラーニングを事業活用しようと思っている人

 こちらは教科書的な内容のようで純粋に資格試験目的での受験になるのだろうか。G(ジェネラリスト)とE(エンジニア)を区別してあり、Gは基礎教養的内容のようだ。

ITmediaの記事が話題になったが、こういった基礎教養の資格試験を設けることで発注者側の理解力と知識が向上し、AIベンダーやエンジニアの負担が軽くなるとよいが。

www.itmedia.co.jp

 

Macに任意のバージョンのRubyをインストールする方法

Macでプログラミング言語Rubyの学習環境を構築したい

購入直後のMacBook ProにインストールされているRubyのバージョンは古く、このままだと

gem update --system

も失敗していた。

そこでMacに任意のバージョンのRubyをインストールしたいと思い、参考にした動画がこちら。 

youtu.be

 

インストール手順

以下はインストール作業時の備忘録。

Xcode

App StoreでXcodeをインストールする。Wifi環境下でダウンロード &インストールに20分ほどかかった。

Xcodeのライセンスはターミナルで同意を行った。

Command Line Tool for Xcodeのインストールはコマンドを実行したが、既にインストール済みであるメッセージが出力された。

 

f:id:Loxley:20181006021245j:plain

Homebrew 

Homebrewをインストールし、下記のサイトの記載通りに実行してInstallation successful!表示を確認。

macOS 用パッケージマネージャー — macOS 用パッケージマネージャー

 

RVM 

下記のサイトの記載通りにRVMをインストールする。

RVM: Ruby Version Manager - RVM Ruby Version Manager - Documentation

RVMインストール後、Terminalから

$ source ~/.profile

を実行して設定ファイルを再読み込みした。

 

Terminalからコマンド

$ rvm install 2.4.1

を実行し、Rubyをインストールする。

$ ruby -v

を実行してバージョン2.4.1がインストールされていることを確認した。

 

Pry

対話型実行環境Pryをインストールする。

その前にRubyGemsを最新の状態に更新しておく。

コマンドは

gem update --system

既に最新の環境であるとメッセージが出力された。

Pryを以下のコマンドでインストールする。 

gem install pry

 

Rubyの書籍だと対話型実行環境にirbを使用していることが多いが、とりあえず指示のままにPryをインストールした。

 

これでMacBook ProでRubyの学習を行う環境ができたので時間を見つけて学んでいこうと思う。

 

MacにPython3.xをインストールする方法

Pythonのバージョンが気になる

先日投稿した記事にも書いているが、MacBook ProにデフォルトでインストールされているPythonはバージョンが古い(2.x)。勉強する場合はやはり3.5以降が欲しいところだ。

loxley-tips.hatenablog.jp

 

公式サイトから入手する

というわけで新しめのバージョンをインストールすることにした。Linuxのようにコマンドでも叩くのかと思っていたのだが、意外にもWindowsのようにGUIで進めることができた。(Unix端末と思っているのでGUIだと微妙に落ち着かない)

f:id:Loxley:20181004234317j:plain

Pythonの公式サイトからバージョン3.7をダウンロードしてインストールする。面倒なので環境設定など必要なしにそのままPython実行環境を利用可能だ。

 

f:id:Loxley:20181004234259j:plain

バージョンを確認する

$ python3 -V
$ pip3 -V

を実行して使用可能であることを確認した。(pip3のバージョンが古いのが気になるが、アップグレードするとトラブルが発生しそうなのでvenvが使えるか確認してから試そうと思う)

IDLEも利用可能だし、こんなにすんなりインストールが進むのならAnacondaをインストールすればよかった...。

 

AnacondaにはSpyderという統合開発環境が入っており、ブレークイン、ブレークアウトが使えるのでデバッグ用途に便利なのだ。

loxley-tips.hatenablog.jp

 

この記事ではMacへのPythonインストールを筆者の備忘録がてら紹介したが、Linux環境でのPython利用については以下の書籍が詳しい。(紙の本よりKindle版が安かったので筆者はKindle版を購入した)

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版

 

 

機械学習に数学が必要と聞いて勉強を始めたがなかなか進まない

Pythonを利用した機械学習が人気だ。筆者が勤務する会社でも先輩が機械学習の勉強をしているようで、エンジニアの教養の一つとして筆者も始めてみることにした。 

 

数学の勉強が進まない 

というのが初夏の話で、じつはいきなり数学で挫折した。工学部を出ていて社会人になってすぐに微分・積分やら仕事で使っていたというのにこの体たらく。

久々の数学ということで「やさしく学ぶ」というキーワードに惹かれて書籍を読んでみたが序盤で既に公式がよくわからない。これはあれだ、学生時代の公式暗記と問題を解く、なんてやり方では全く歯が立たない。

やさしく学ぶ 機械学習を理解するための数学のきほん アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで

やさしく学ぶ 機械学習を理解するための数学のきほん アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで

 

数学がニガテでも大丈夫! 機械学習をやさしく学ぼう 「機械学習に興味があるけど、どの本を見ても数式が出てきて、分からない・・・」 本書は、そんな方にぴったりの本です。 機械学習を勉強中のプログラマ「アヤノ」と、友達の「ミオ」の会話を通じて、楽しく学んでいきます。 

ぜんぜん優しくねぇ!( ^ω^ #)

 

過去にさかのぼってやり直す

というわけで中学数学~高校数学からやりなおすことにした。何事も急がば回れ、である。焦ってはいけない。

↓この本がなかなかわかりやすい。要点をおさえて説明してくれる。

中学校3年間の数学が1冊でしっかりわかる本

中学校3年間の数学が1冊でしっかりわかる本

 

最少の時間で最大限に理解できるように、中学数学の大切なことだけを凝縮しました。順番に読むだけでスッキリ理解できるつくりになっています。 

 

いつまでやるの? 

が、このまま数学の勉強を中学→高校→大学と続けていっても機械学習に着手できるのはいつになるかわかったものではないのも事実。 

そんなことを考えていた時、Kindle Unlimited に「人工知能プログラミングのための数学がわかる本」という書籍が登録されていたのを発見した。

人工知能プログラミングのための数学がわかる本

人工知能プログラミングのための数学がわかる本

 

東京大学特任准教授 松尾 豊氏 推薦! 人工知能プログラミングに必要な数学を、ゼロから抜け漏れなく、体系的に学ぶ! 数学を復習したいエンジニアに! 

 

なんでも人工知能プログラミングをやるのに数学は必ずしも必須ではないのだとか。ただし、アルゴリズムを理解するにはやはり知っておいたほうがいいらしい。で、数学を勉強するに当たってじつは必要ない単元もあるそうで。例えば微分は必須だが、積分は不要で、線形代数(行列とベクトル)の基礎知識は必須といった感じらしい。 

 

人工知能、機械学習、ディープラーニングの違いについてはNVIDIA社の記事がわかりやすい。

blogs.nvidia.co.jp

 

技術資料だととっつきにくいと思う方にはマンガもある。(タイトルに反してマンガは少なめであるが、参考例を示していてわかりやすい) 

マンガでわかる人工知能

マンガでわかる人工知能

 

 

Youtubeにもディープラーニングのわかりやすい説明動画があったのでリンクを貼っておく。

youtu.be

 

余談:意外と役立つKindle Unlimited

先日、Kindle Unlimitedサービスに加入して技術書籍をチェックしているが、既に数ヶ月分の元は取った気がする。特にPythonに関連した書籍が数多い。

 

小説、マンガも読めるしタブレットを持っているならオススメのサービスだ。 

Kindle Unlimited オススメの使い方

Kindle Unlimitedは同時に利用できる本の数が10冊となっているためAmazonの「ほしいものリスト」を活用するとよい。必要ないときは利用する本から外しておき、読みたくなったら「読み放題で読む」を利用するのだ。

一般書籍だとこういう使い方はあまりしないと思うが、「技術書籍のあのページを参照したい」という時に役立つ。日常的にリファレンス代わりに使うくらい参照頻度の高い本であれば購入すればよい。紙の本より安価だ。(たまに50%オフセールもあるし)

見慣れぬディレクトリがGoogle Driveに出来ていた話

以下は、10月2日にMacbook Proが届いたので箱開け写真を撮ってGoogle Driveにアップロードしていた時の話である。

loxley-tips.hatenablog.jp

 

Colab Notebooks というディレクトリが出来ている

パシャパシャとMacbook Proの外箱の写真を撮ってGoogle Driveにアップロードしたところ、

f:id:Loxley:20181002204000j:plain

見慣れぬディレクトリが出来ていた。Colab Notebooks?

 

Google Colaboratory

一瞬なんのことかと首を傾げたのだが、「Colab」の文字で思い出した。これはいくつかあるJupyter Notebookの一つで、Googleがサービスしている「Google Colaboratory」だ。いわゆるPython実行環境である。

そういえば先日、GoogleのJupyter Notebookを使ってみたのだった。どうやらソースの保存はGoogle Drive上に行われるらしい。

筆者はローカル、もしくはESXiサーバー上に環境を構築してPythonを利用しているので気がつかなかった。

 

引き続きPythonを勉強中

仕事の合間に勉強していたPythonだが、どうにかCUIでDB(SQLite3)を操作するところまでは進めることができた。

Pythonの勉強に使用した書籍の中で良かったものは以下の二冊。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

 

プログラマになるためのスキルを独学できる本です。Pythonプログラミングの基本を学べるだけでなく、プログラマとして必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。 「プログラミングを始めたい」「できればその道でプロを目指してみたい」――そんな読者にオススメです。 

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

ファイル名の変更や表計算のデータ更新といった作業は、日々の仕事の中で頻繁に発生します。ひとつふたつ修正するだけであれば問題ないのですが、それが数十、数百となってくると手に負えません。そのような単純な繰り返し作業はコンピュータに肩代わりしてもらうとすごくラクになります。本書では、手作業だと膨大に時間がかかる処理を一瞬でこなすPython3プログラムの作り方について学びます。対象読者はノンプログラマー。本書で基本をマスターすれば、プログラミング未経験者でも面倒な単純作業を苦もなくこなす便利なプログラムを作れるようになります。さらに、章末の練習問題を解くことで、類似のタスクを自動処理するスキルをもっと高めることができます。 

 

以下の書籍は周辺知識を知るのに役立った。 

Pythonプロフェッショナルプログラミング第3版

Pythonプロフェッショナルプログラミング第3版

 

 

Dockerで関数型プログラミング言語「Elixir」の実行環境を構築する

プログラミング言語 Elixir

プログラミング言語 Elixir は難しい。

Elixirは並行処理の機能や関数型と行った特徴を持つ、Erlangの仮想マシンBEAM上で動作するプログラミング言語なのであるが、とにかくとっつきにくい。

そもそも環境構築からしてやっかいだ。言語の概念を勉強してElixir+Phoenixの環境構築と動作確認から始めていたら時間がどんどん過ぎていく。

プログラミングElixir

プログラミングElixir

 

 

環境を壊してしまった時もやっかいだ。ESXiがあればスナップショットでサクッと以前のバージョンに戻すことが出来るが、あいにくと自宅にまでその環境を用意してはいない。で、こまめにVMware Playerのバックアップを取ったりしていたのだが、この時間泥棒な環境がなかなか辛くなってきて勉強を始めたのがDockerだ。

 

DockerでElixirの実行環境を作り、動作確認する

Dockerについては数週間前に会社の同僚から解説本を借りたのだが、概念やらインフラやらの説明が長々と続き、なかなか本筋に入ってくれない。やっとDockerのインストールかと思えばWindows環境下での説明になっていた...。(ノ`Д´)ノ彡┻━┻

この本では先に進みそうもないと思い、ドットインストールのDockerに関する動画を視聴して、VMware Player上のUbuntu 16.04にDockerをインストールしてみたのだった。

Dockerのインストール

インストール手順については以下のQiitaの記事を参考にした。

qiita.com

 

Elixirの実行環境イメージ入手と動作確認

sudo docker pull elixir

でイメージを入手し、コンテナを起動してみる。

 

$ sudo docker run -it elixir bash
root@3886c3f52208:/#
root@3886c3f52208:/# elixir --version
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Elixir 1.7.3 (compiled with Erlang/OTP 21) 

 

実際はpullしなくてもrun時にイメージがなければ取りに行くようだ。

 

対話型のiexも起動してみる。

root@d1e222414c89:/# iex
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

 

終了させる。 

root@3886c3f52208:/# exit 
$

 

変更した内容をcommitで保存する

コンテナ実行環境にはgitもインストールされていたので、言語の勉強時に書いた、残しておきたいソースはGitLabのプライベートリポジトリにでもコミットしておくといいのだろうか。

データを残しておきたい場合は

$ sudo docker container ps -a

でcontainer IDを調べて

$ sudo docker container stop xxxxx

でコンテナを停止する。(xxxxxは先に調べておいたcontainer IDを入力する)

$ sudo docker container commit xxxxx yyyyy 

を実行してcommitされ、変更したデータは保存される。(yyyyyはコンテナ名)

試しに起動してみると変更したデータがcommitによって保存されていることが確認できるだろう。

$ sudo docker run -it yyyyy bash

 

このやり方だとcommitを忘れるとデータが消えて悲しいことになるので、設定で永続的ボリュームに接続するやり方が一般的らしい。 以下のQiitaの記事が参考になると思う。

qiita.com

 

筆者のようにDockerそのものを触ったことがないという初心者の方は、以下の記事が参考になるだろう。

qiita.com

 

今度時間がある時にDockerでWebアプリケーションフレームワーク「Phoenix」の環境も作ってみたい。(VM上でPhoenix開発環境を作ってはいるが、バックアップを取るのが面倒)

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

Elixir/Phoenix 初級?: はじめの一歩 (OIAX BOOKS)

 

 

初めてDockerに触ってみたのだが、非常に便利で時間短縮にもなり、今後開発や学習環境はDockerに移そうと思う。

※Dockerを使い始めてまだ1日目なので用語等の誤りがあったらご容赦願いたい。

プリント・オン・デマンドとは

プログラミング言語 Python の勉強を進めていて、そろそろWebアプリケーションとDB連携あたりを試したいと思うようになってきた。しかしPython関連の書籍、特にWAFはFlask、Djangoとも日本語書籍がかなり少ないのが現状だ。

オンデマンド?

やっと探し出して注文したのはいいものの、「オンデマンド(ペーパーバック)」の表記が気になったので調べてみた。 

現場で使える Django の教科書《基礎編》

現場で使える Django の教科書《基礎編》

 

Django(ジャンゴ)は Python で Webアプリケーションを作成するためのフレームワークです。Webアプリケーションを作成するために必要な部品が何でも揃っているというのが最大の特徴で、その特徴は一般に「フルスタック」と呼ばれています。 

 

運良くというか、ちょうどAmazonの個人出版関連のニュースを見ていたので、どうやらこれまで電子書籍で出版していた個人書籍も紙本で販売できるようになるサービスのようだ。

アマゾン、個人出版の市場拡大へ 注文受けて印刷・製本:朝日新聞デジタル

 

pc.watchでもAmazonのプリント・オン・デマンドが紹介されていた。 

pc.watch.impress.co.jp

アマゾンジャパンは、書籍事業において、「プリント・オン・デマンド(POD)」サービスを提供している。PODサービスは、注文に応じて、書籍を印刷、製本、出荷するサービスで、出版社やユーザーの注文に応じて、絶版本や希少本、特注本、個人著者による本などを、1冊から印刷し、製本することができる。 

 

技術書籍は紙の本で欲しい

電子書籍(Kindle)だと技術書を会社で利用できないし、紙本で発売されるのは歓迎したい。

これからプログラミング本の翻訳書籍が増えるかもしれないし、技術書が充実してくれればと思う。


  • 当ブログは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。
  • 当ブログ記事の2ch系まとめサイトへの無断転載を禁じます。
  • 投稿した記事内容は私的なものであり、所属する組織・団体に関連性はありません。
  • 投資にはリスクが伴います。利益を得る反面、損失もありえます。投資活動は自己責任で。

(C)LOXLEY-TIPS