調べるブログ

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

「ゼロからわかるRuby超入門」を手を動かしながら読んでみた

久々にRuby入門書を読了

Ruby初心者というわけではないけれど、実務で使用しているわけではなく、しばらく使ってこなかったので中級者でもない。しかしRuby on Railsで基本的なWebアプリケーションフレームワークを学ぶ上で、ある程度のRubyの学習(復習)は 必要・・・ということで何か一冊Rubyの本を読んで勉強し直してみることにした。

そこで手にとったのがこの本だった。「 ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)」。発売されたばかりの書籍であり、はてブで見たことがある人もいるかもしれない。  

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

 

こんなにわかりやすいRubyの本は今までなかった!

本書は、プログラミングが初めての方へ向けた、プログラミング言語Rubyの入門書です。 本業のRubyプログラマーを続けながら、 一橋大学の社会学部でプログラミングを初めて学ぶ学生へ向けて講義をした筆者が、その経験をもとに、 図を多く使って分かりやすく説明し、かつ実用的で役立つ内容を選びました。 

 

解説が非常に丁寧でわかりやすい本

初学者向けの書籍のためか、かなり丁寧に文法やメソッドの使い方が書いてあり、入門書によくあるページ数の都合で端折るケースがないのがとてもいい。

サンプルソースはそれぞれ独立していて、実際に自分で書いて動かして試すことができる。非常に説明が丁寧で好ましい。

よくある入門書系の悪いケースは「何かを作って学ぶ」系で、ソースの一部分だけを抜き出して説明したり、コードを書かせたりするもの。これだと説明を端折ったことで初学者が気がつかないエラーが出て(初学者が)挫折する原因になることがある。

初学者にとってはプログラミングをする上で必要な環境構築が、最初のハードルだと思う。その点本書では巻末にMacに最新バージョンのRubyをインストールする方法が書かれているのもいい。rbenvでバージョンを切り替えるのはとても便利で実用的であり、面倒なことでも手間を掛けて説明しているところが好印象だった。(Macは購入した時点で既にRubyがインストールされているため、インストール方法の説明は不要なのだが、後々rbenvは使うことになるのでそれを巻末に持ってきているのはいい配慮だと思う)

 

補足

Rubyは1.9の頃勉強しただけで、とある製品向けのテストコードの自動生成ツールを作った程度だ。当時勉強に使用していた書籍は「プログラミング言語 Ruby」であり、さすがに2.4以降の説明が記載された書籍を購入して勉強してみようと思った次第。

プログラミング言語 Ruby

プログラミング言語 Ruby

  • 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/01/26
  • メディア: 大型本
  • 購入: 21人 クリック: 356回
  • この商品を含むブログ (129件) を見る
 

 

RubyはElixirを学ぶのにもいい

個人的に時間をみつけて関数型言語のElixirを勉強しているが、ElixirはRubyの影響を受けているのか、非常に文法がよく似ている。いきなり難易度の高い関数型言語の勉強に取り掛かるより、まずはRubyで勉強してからElixirに入っていくのもいいと思う。 

プログラミングElixir

プログラミングElixir

 

Ruby3では並列実行も取り入れるという計画もあるそうだし、先を見据えた開発が継続されているので(Rubyは)勉強しておいて損はないプログラミング言語だと思う。

Kindle本を誤って購入してしまったので返品してみた

Kindle Unlimited対象の本を購入してしまった

AmazonのKindle Unlimited対象の本を誤って購入してしまったので返品処理を行った。

返品対象の本はRuby on Railsの勉強に使用していたこの本。

Ruby on Rails 5.0 初級?: 経路、アクション、テンプレート (OIAX BOOKS)

この本はKindle Unlimited対象のため、購入する必要はない。10冊までならレンタルのように利用可能だし、購入してもそうそう何度も読み返すわけでもない。必要な時はまた借りればいい。

Ruby on Rails 5.0 初級?: 経路、アクション、テンプレート (OIAX BOOKS)

Ruby on Rails 5.0 初級?: 経路、アクション、テンプレート (OIAX BOOKS)

 

 

すぐに返品する場合

購入直後ならページ内に返品処理を行うためのリンクがあるのでそれをクリックすればいい。その日のうちに返品処理は完了する。注文ページにも「払い戻し」の項目が追加されていて確認できる。

 

購入ページから遷移してしまった場合

面倒なのは購入したページから遷移してしまった場合だ。注文番号を控えてカスタマーサポートに連絡する必要がある。

電話連絡が必要かと思ったが、返品処理はWebページから行うことができた。数十分後に返品処理が行われ、2~3日内に払い戻しが行われるとサポートからメール連絡があった。

それにしてもWebページ上でKindle本の返品処理が見つけにくい。7日以内に返品処理を申し込めばいいので焦る必要はないのだが、どうにも該当のページが見つからないので気が急いてしまうのだ。

 

エンジニアにオススメ 

Kindle Unlimitedには技術書籍も数多く登録されているので、エンジニアにとってもコスパのよいサービスだと思う。(同時利用が10冊までなのが難点かな)

 

Windows10でWSL+Ubuntu16.04を使用し快適なRuby on Rails学習環境を構築する

WindowsでもDockerを使ってみようとDocker for Windowsの情報を調べていたところ、Windows Subsystem for Linuxが使えるという記事を見つけた。

面白そうなので早速導入してみることにした。

WSL(Windows Subsystem for Linux)を導入する

  1. Windows10のスタートボタンから右クリックで設定画面を開く
  2. 「アプリと機能」をクリックする
  3. 「プログラムと機能」をクリックする
  4. 「Windowsの機能の有効化または無効化」をクリックする
  5. 「Windows Subsystem for Linux」をチェックしてOKボタンを押す

と、ここまでやると再起動が行われる。

 

次にWindows StoreからUbuntu16.04をダウンロードすればとりあえずWSL側の準備は完了する。

一通りWSL上で動くDockerを弄ってみたが、結果は微妙。このあたりはやはり素のLinux環境のほうが使い勝手がいい。得るものがあったとすればWSLで動作するUbuntuが非常に快適だということくらい。Windows側とのファイルのやり取りはシンボリックを張ればいいが、運用がちょっと面倒くさい。 

Dockerによるアプリケーション開発環境構築ガイド

Dockerによるアプリケーション開発環境構築ガイド

 

とりあえずWSLでのDocker使用は保留することにして、運用方法を再検討することにした。 

 

Ruby on Railsの学習環境に意外と使える

PythonでWebスクレイピングプログラムを作成し、WebアプリケーションフレームワークとしてDjangoを勉強したが、いまいちここから先のやる気が出なかったので再びRubyの学習に戻ることにした。

一応、目標としては機械学習+Webアプリケーションを作成することなのだが、機械学習もWAFもまだまだ勉強することが多く、完成は当分先になりそうだ。この時間をただ黙々とPythonとDjangoの勉強に当てるのはもったいない。

 

Ruby on Railsの環境構築は書籍を参考に簡単にできる 

というわけで、勉強途中だったRubyおよびRuby on Railsの勉強を再開することにしたわけだ。

上記のWSL環境上に下記の書籍を参考にRuby on Railsの開発環境を構築したのだが、(意外にも)これがまたずいぶんと快適なのである。Windowsの泣き所だったLocal開発環境があっさり構築できてしまった。 

Ruby on Rails 5.0 インストール手順書 (OIAX BOOKS)

Ruby on Rails 5.0 インストール手順書 (OIAX BOOKS)

 

最近の技術書籍はMacでの動作確認だけ行っているものがあり、WindowsだとVM上のLinuxで開発環境を構築するのは非常に手間だった。LocalでDockerを使おうにもWindowsだと結局VM上で作業することになる。SSDならばまだいいが、HDDを使用している会社のPCだとなかなかシンドイ。インストール作業や更新作業に待たされることになる。

 

で、この煩雑な作業をWSL+Ubuntuで省略できるようになったわけだ。

rbenvやbundlerも使えるのでRuby on Railsの学習環境としては申し分ない。Rubyのバージョン切り替えは必須である。書籍と同じバージョンに揃えていたほうがトラブルが少ない。

f:id:Loxley:20181117030419j:plain

WindowsでもLinuxやMac同様のLocal開発環境が構築できるようになったのは大きい。

  • Ubuntu
  • Git
  • Docker
  • Ruby on Rais

が使える上にWSLのコンソール起動は非常に高速でストレスを感じない。何かとトラブルを抱え込むことになるXAMPPをもう使わなくてもよいのだ。しかもWindows側ディレクトリにシンボリックリンクを張って簡単にアクセスできるし言うことなしだ。

今後はこの環境で勉強していこうと思う。(やっぱりフルキーボードでのタイプは快適)

loxley-note.hatenablog.jp

BeautifulSoupでAmazonランキングデータ「本:コンピュータ・IT」をWebスクレイピングした結果(2018年11月2日版)

継続してPythonを勉強中

プログラミング言語「Python」を継続して勉強中である。まだWAF「Django」の勉強は始めたばかりだが、いろいろと興味のある分野に着目して組んでみることにした。何事も興味のあることだと成長が速いものだ。

f:id:Loxley:20181102212109j:plain

というわけで「BeautifulSoup」を利用してWebスクレイピングを行い、結果をDBに登録することを始めてみた。

まずはAmazonでPC関連の売れ行きランキングを取得してファイルに保存することはできた。PC自作系パーツはいつが買い時か悩むことがあるので定期的に取得してデータ化しておこうと思う。数カ月後に比較して価格はどう変わったかなど、いろいろと活用してみたい。

結果はメインブログにて公開中。今後も更新予定。

loxley-note.hatenablog.jp

登録するDBは同じなのだが、プログラミング関係はこちらのブログでやったほうがメインブログを見に来る読者の方に迷惑をかけないかな、と。あちらはゲーマーやPC自作er向けだし。 

 

Amazon売れ筋ランキング「本」→「コンピュータ・IT」

で、こちらのサブブログは技術系寄りなのでAmazonの売れ行きランキングのうち、「本」→ 「コンピュータ・IT」をWebスクレイピングして記録していくことにした。

定期的に取得してプログラミング言語や技術のトレンドを追いたいというのが目的だ。

  

以下は取得した結果である。CSVでファイル出力したがそのままだと見にくいのでちょっと加工した。 

左からランキング順位、価格、書籍タイトル名。

 

1. \2430 人工知能プログラミングのための数学がわかる本
2. \250 プログラミング超初心者が初心者になるためのPython入門(1) セットアップ・文字列・数値編
3. \3024 機械学習のエッセンス -実装しながら学ぶPython 数学 アルゴリズム- (Machine Learning)
4. \2800 機械学習のエッセンス 実装しながら学ぶPython、数学、アルゴリズム
5. \1852 エンジニアのための理論でわかるデザイン入門 ThinkIT Books
6. \1080 わずか5分で成果を上げる 実務直結のExcel術
7. \864 Androidタブレット便利すぎる!230のテクニック 2018改訂版
8. \756 最新クレジットカード&電子マネー&ポイント攻略ガイド
9. \1620 動画2.0 VISUAL STORYTELLING (NewsPicks Book)
10. \1620 AI vs. 教科書が読めない子どもたち
11. \2376 独学プログラマー Python言語の基本から仕事のやり方まで
12. \1620 AI×人口減少 これから日本で何が起こるのか
13. \1500 結果が出る 仕事の「仕組み化」
14. \3611 Houdini ビジュアルエフェクトの教科書
15. \3024 深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト
16. \1080 10倍ラクして成果を上げる 完全自動のExcel術
17. \1706 Excel 最強の教科書[完全版]――すぐに使えて、一生役立つ「成果を生み出す」超エクセル仕事術
18. \2680 基礎Python 基礎シリーズ
19. \1944 the four GAFA 四騎士が創り変えた世界
20. \886 人工知能に哲学を教えたら (SB新書)

 

ざっと内容をチェックするとPythonや機械学習の書籍が数多くランクインしていることがわかる。 

基礎Python 基礎シリーズ

基礎Python 基礎シリーズ

 

が、結果が妙なので気になった。その内容は後述する。

 

困ったこと

思ったよりもすんなりWebスクレイピングできていたので調子に乗ってプログラムを修正していたのだが、数日後にプログラムを実行し思わぬことがいくつか起きた。 

 

売り切れ対策

前日まで動いていたプログラムがErrorで終了するようになったので調べたところ、 

    price = el.find("span", class_="p13n-sc-price").string.strip()

どうやらAmazonの売上げランキングでは売り切れの場合、価格を表示しないようだ。このため「None」に対して処理を継続しようとして、Errorが発生していた。

上記の要素はGoogle ChromeだとAmazonの該当する本の欄で右クリック→検証をクリックするとデベロッパーツールが起動して対応するプロパティを表示してくれる。(売り切れの場合はこのプロパティが存在しない)

で、対策としてこれを

    price = el.find("span", class_="p13n-sc-price")
    if price == None:
        #在庫切れ(またはunlimited)処理を記述する 

こうすることで 、在庫切れの処理を記述することになる。

売り切れ時はそもそも属性がないことに驚いたが、海外の「Stack Overflow」を見に行くとだいたいみんな同じことで困っていた。

 

なお、Webスクレイピングのコードについては以下の書籍が参考になると思う。他にはてなブログやQiitaの記事も参考にさせていただいた。

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

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

 

 

ランキングにKindle Unlimitedの結果が混在する?

もう一つ困ったというか、未だに継続して頭を抱えている問題が「Kindle Unlimited」の結果も反映されているのではないかということ。ランキングを見ると上位にKindle Unlimitedで0円の書籍がランクインしていて技術書籍のランキングとしてはあまり正確なものとはなっていないように思える。できれば紙の本だけの売上げランキングが欲しいのだが...。うーむ。

 

例えば、1位の「人工知能プログラミングのための数学がわかる本」だが、Kindle Unlimited会員なら無料で読めるのだ。そりゃ1位にもなるだろう。 

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

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

 

 

エンジニア的にはかなりコストパフォーマンスの高いKindle Unlimitedだが、集計という面では思わぬ誤算となってしまった。

 

 

使用しているDB

個人目的なのでDBは「SQLite3」を使用している。Python3を使っている人には馴染み深いDBだが、個人ユースだと馬鹿にできない性能を秘めている。同時書き込みさえしなればじつはけっこう使えるのだ。RDBMSの性能比較サイトをチェックしたが、用途によっては高性能であり、Androidアプリで採用されるはずだと思った。

 

逆に複数の書き込みが集中するケースだとSQLiteは使えない。そのためPostgreSQLも並行して勉強中だ。

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

  • 作者: 勝俣智成,佐伯昌樹,原田登志
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/09/14
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る
 

ただ、ユーザーに閲覧させるだけならSQLiteで十分だし、ECやWebサービスでもやろうとしない限り本格的なRDBMSは必要なさそうだ。

Macで指定ディレクトリの使用容量を調べる方法

iCloudをMacBook Proのバックアップドライブ代わりに使う

MacBook Pro購入前は外付けHDDを購入してTimeMachineでバックアップを取ろうと考えていたが、iCloudの便利さに感心してしまい、今後のバックアップはiCloudを利用することに決めた。

というのも、後述するDocker環境があまりにも快適だったためだ。 

 

duコマンドでMacの使用容量を調べる

Windowsだと指定ディレクトリ以下の使用容量を調べるのは簡単だが、Macの場合はどう調べるのだろうか。

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

思いつくのはUnixコマンド。iCloudで同期されるDesktopにバックアップしたいファイル群をコピーして使用容量を調べてみた。

ディレクトリ/Users/username/Desktopで以下のコマンドを実行する。

$ du -hc

f:id:Loxley:20181020004027j:plain

現在の使用容量は91MB。オプションのhはサイズに応じて単位を自動的に表示し、cはトータルの容量を表示する。

iCloudの無料分のディスク使用サイズは5GBであり、書類ディレクトリと合わせてもまだまだ無料分で余裕のようだ。

なお、5GBで容量不足となった場合は有料でiCloudの契約サイズを増やすことができる。

iCloud のストレージプランと料金 - Apple サポート

日本の場合、

  • 50GB 130円
  • 200GB 400円
  • 2TB 1300円 

という料金設定になっていて、筆者の利用用途なら50GBもあれば十分そうだ。月額130円だし、バックアップの手間を考えるとiCloudで同期を取ったほうがお手軽だと思う。

 

Dockerについて

MacBook Pro購入前は、TimeMachineで外付けHDDにバックアップを取っていれば、重要ファイルのバックアップと同時に学習用の開発環境もバックアップが取れると考えていたのだが、その後Dockerを利用するようになり、重要データとローカルの開発環境をバックアップするためのTimeMachineという選択肢は必要性が(かなり)薄れた。

Dockerを勉強し始めの頃はコンテナで書き換えたデータをどう保存するか悩んだのが、職場の同僚のアドバイスで「永続化」をキーワードに検索してみると

 docker run -i -t -v $HOME/testdir:/testdir ubuntu /bin/bash

というコマンドでホスト側のディレクトリにコンテナ側からデータを書き出す設定にすることができた。ホスト側のファイルをコンテナで読むことも可能だ。 

今後はホスト側でソースを編集・保存し、コンテナ側で実行してテストするといった環境になっていくと思う。(フロントエンドの勉強はこれまでどおりローカル環境だが)

loxley-tips.hatenablog.jp

というわけでMac・iOSデバイスで同期バックアップが可能なDesktopディレクトリの存在は非常に便利であることがわかった。 

実質、開発環境がDockerのコンテナ側にあるわけで、わざわざTimeMachine用に外付けHDDを用意する必要もない。

デスクトップMacと携帯用のMacBookを両方持ってる人はさぞや便利なことだろう。ネットに接続さえできればどこでも作業が再開できるので。

Docker for Macをインストールして使ってみる

DockerをMacで使いたい

Linux(Ubuntu16.04 server)でDockerを使い始めたが、ストレージの永続化設定ができればプログラミングの学習環境として使えそうなので、愛用のMacBook Proに「Docker for Mac」をインストールしてみることにした。 

loxley-tips.hatenablog.jp

 

 

Docker for Macを公式から入手する。

www.docker.com

 

ユーザー登録してダウンロード

事前にQiitaの記事をいくつか見たが、実際にダウンロードする際にはユーザー登録が必要だった。ダウンロードするファイルのサイズは500MB超。

 

インストール

ダウンロードしたDocker.dmgをクリックしてインストールする。展開されたDockerアプリケーションをドラッグしてコピーするとインストール完了。

DockerをLaunchpadから起動するとメニューバー上にDockerのアイコン(鯨マーク)が表示される。

アイコンをクリックするとメニューが表示される。

f:id:Loxley:20181013183854j:plain

 

設定と操作

インストールしたDockerはTerminalから利用する。 

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

$ docker version

を実行するとバージョンは18.06であった。

メニューのPreferences→AdvancedをクリックするとCPU、メモリ、Swap等の設定項目があるが、とりあえずデフォルトで使ってみる。まだコンテナの複雑なやらないだろうし、そういった設定は慣れてからやろうと思う。

 

nginxを使ってみる

まずはWebサーバーのnginxで試してみることにした。 

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

Terminaから以下のコマンドを入力する。 

 $ docker run -d -p 80:80 --name web-nginx nginx

 で、Google Chromeで http://localhost にアクセスするとWebサーバーのnginxが起動していてWebページが表示された。

 

ひとしきり動作を確認したら以下のコマンドでコンテナを停止し、

$ docker container stop web-nginx 

 

不要になったコンテナを削除して、

$ docker container rm web-nginx 

 

Dockerイメージも削除する。

$ docker image rm nginx 

 

さて、次は開発環境にするためにストレージの永続化設定を調べないと....。

 

ちなみに、Linux環境でのDockerの使い方は以下の書籍を参考にした。 

Docker実戦活用ガイド

Docker実戦活用ガイド

 

 

バージョン管理システムについて思うこと

バージョン管理システムをGitに移行した

先日、職場で利用するバージョン管理システムをSubversionからGit(GitLab)に乗り換えた。随分前にGitの利用は職場でも行われており、いつでも使える状態にあったのだが、参加するプロジェクトの都合でSubversionをずっと使い続けていた。共同作業だとGitは捗るが、個人作業だと違いはないかなーなどとも考えていた。

しかし、社内のサーバー機の移行やらが行われたタイミングでGitLabにアカウントを作り、個人担当分の作業はGitで行うようになった。すると便利すぎてビックリ。リモート・ローカルの管理方法も腑に落ちるし、コマンド操作は快適の一言だ。

あまりの便利さに、自宅でもプライベートでGitを使うようになり、無料のGitHubにアカウントを作成した。

過去利用したバージョン管理システムについて

筆者がバージョン管理システムを使いだしたのは、新卒当時に働いていた企業で「日付管理の圧縮ファイル(LZHだったと思う)をやめてバージョン管理システムを採用したいのでまずは若いお前が実験台になれ(意訳)」がきっかけだった。試行錯誤して運用例を発表して集まったおっさんエンジニア達の質問にしどろもどろに答えたのだった。(組み込み系のおっさんエンジニアのプレッシャーはすごくて、何あの野武士集団?と思ってしまった。Web系のスマートさとは無縁の職場だったが、今は時代の流れで多少は風通しもよくなったのだろうか)

で、その後いろいろとバージョン管理システムを使ったのだけど、

  • VisualSourceSafe(組み込み系メーカー、SIerで使用した)
  • CVS(ベンチャー企業に勤めた際にごった煮版クライアントを使っていた)
  • Subversion(現職で使用、GitLabに移行)

この中で意外とVisualSourceSafeは使いやすかった印象がある。VB.netでチーム開発していた際に使用したがコンフリクト発生箇所もわかりやすかったし。

ただ、現在はGitを使い始めてその使いやすさにいたく感動してしまったので、もう他のバージョン管理システムを使う気はない。 Subversionとシェアがあっさり逆転したのも頷けるというものだ。

 

初学者にオススメの書籍

Gitはコマンドラインの使いやすさが魅力だが(マジでストレスフリー、軽快すぎて楽しい)、GUIで学びたい人には以下の書籍がオススメだ。要点を押さえて説明が行われており、初心者にとってわかりやすいと思う。

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

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

 

 

書籍「Pythonチュートリアル」は非常に難解だったという話

「Pythonチュートリアル」を読んだ

プログラミング言語「Python」の技術書籍「Pythonチュートリアル」を読んだ。

Python公式サイトにはチュートリアルのページがあり、それの紙版でしかないのだが、「Python 3 エンジニア認定基礎試験」の出題範囲でもあるので購入しておいたわけだ。

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

 

で、内容に関していうと「難しい」。これに尽きる。 

筆者はPythonの勉強を「独学プログラマー Python言語の基本から仕事のやり方まで」で始めていたので、「Pythonチュートリアル」は必要なかったのだが、資格試験で使うなら買っておいてもいいかとAmazonでポチッたのだった。

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

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

 

「Pythonチュートリアル」で記載されている内容を端的にいうと「いかに短く書くか」。まるでRubyと競っているかのようだった。初学者ならば「独学プログラマー」もしくは「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」から学習を始めたほうがよいように思う。 

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

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

 

会社の先輩も「Pythonチュートリアル」を持っていたので内容について聞いてみると「積み本」にしているのだとか。(ですよねー)

 

そもそも資格試験が必要なのだろうか 

当初は認定基礎試験というものに興味をもったのだが、はたしてこれは必要なのだろうか。

基礎試験 | 一般社団法人Pythonエンジニア育成推進協会

今だとGitHubで作成物を公開し、経歴書にそのURLを貼っておいたほうが説得力がある気がするのだが・・・。

 

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

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

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

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

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

追記:2018年11月2日

Pythonでプログラミングをする人は以下の設定をしておくと幸せになれるようだ。 

set expandtab
set tabstop=4
set shiftwidth=4

というかやっておかないとspaceとtabが混在して実行時にIndent Errorが発生して困ったことになる。(=ω=;) 


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

(C)LOXLEY-TIPS