【Memo】Windows10・Ubuntu18.04のデュアルブートパソコンの作り方
やること
Windows10が入ったパソコンにUbuntu18.04をデュアルブートで導入して、Windows10とUbuntu18.04のどちらも使えるようにします。
私の場合、NVIDIAのGPUが載っているパソコンでUbutnu18.04を使ってディープラーニング をぐるぐる回したかったので、Windows10は残さずにUbuntuに載せ替えてもよかったのですが、普段使っているパソコンがMacでWindows7のパソコンしかもっていなかったので、挑戦してみました。
Windowsだけしか対応していないソフトがあったり、Officeが使いやすかったりで、Windows10が使える
デュアルブート、便利です!
2021.5.22 :windows10の時刻がズレる問題の対応を追記。
注意事項
1. 失敗すると両方壊れる
ひとつのディスクに追加でOSを載っけるので、失敗すると元々入っていたWindows環境も壊れます。
データのバックアップをとっておくなど、初期状態に戻ってもよいように準備しておく必要があります。
私も導入途中に再起動後、一度ブルースクリーンになりました。もう一度再起動すると戻ってきましたので、とくに問題なかったですが、復帰できなければWindows10の初期導入からやるのかと思って冷や汗がでました。
はじめからデュアルブートマシンとして使うのが決まっているのであれば、1stドライブをWindows用、2ndドライブをUbuntu用として用意しておくのが便利なのかと思います(私は未実施)。
やりかた
パソコンを準備する
Windows10が入ったパソコンを準備してください。
私はこれを買って導入しました。
www.pc-koubou.jp
(Windowsインストールメディア付きなので、環境が壊れたときも新規導入できそうで少し安心です。DVDドライブが内臓させれてないですが・・・)
Ubuntuをいれる
ここで買ったからというわけではないですが、このとおりやりました。それだけです。よい記事でした。
www.pc-koubou.jp
- ちなみに私のPCは、F2キーでBIOSに入りました。
WiFi機器を認識させる
いままで、このiiyamaとかなり古いDellのパソコンにUbuntu18.04をいれましたが、どちらも内蔵している無線LAN機器を認識せず、Ubuntu をインストールした直後はWiFiが使えませんでした。
UbuntuをインストールしてもLAN機器を認識しないのはよくあることのようで、ググると多くの記事がみつかります。
どうしても認識しない場合は、無線LANドングルだといけるようです(未確認情報)
amzn.to
これはハードの環境に依存しますので、すべての方が解決できる決まった方法はないと思います。なおiiyama(パソコン工房PC)での対処をメモしておきます。
- 内蔵されている無線LANの機器を確認する。購入時のスペックから確認してもよいですが、デュアルブートしていますので、Windows10で立ち上げてデバイスマネージャーから無線LANの機器を確認します。私の場合は、「Intel Wi-Fi 6 AX201 160MHz」でした。
- intelホームページから、該当機種のfirmwareをダウンロードします。
- ダウンロードしたファイルをUbuntuの /firmwareに保存します。
- 再起動します。(成功していたら、LAN機器を認識しますので、設定からWiFiを選択してください)
Windows10の時刻ズレ対策(2021.5.22 追記)
わたしの不具合で書いてましたが、windows10で立ち上げると、時刻がズレることがありました。最初のころはUbuntuがメインでwindows10をほとんど使用していなかったので、windows10のときは毎回手動で時刻補正をしていました。
しかし、最近はWindow10を使う機会が多くなり、毎回手動で時刻を修正するのは面倒になりました。OneDriveでファイルを管理しているので時刻修正を忘れると大惨事になりかねません。
いろいろ調べてみるとUbuntuを立ち上げた後にWindows10を立ち上げるとほぼ必ず標準時刻(GMT)になってしまうようです。
この方の記事で詳しく説明されています。
www.fuukemn.biz
不具合を解消する方法としては、Windwos10で対応するかUbuntuで対応するかの2通りあります。
Ubuntuでの対応はUbuntuとして非推奨の方法のようです(先ほどの記事を参照)。そこで私もWindows10での対応をしてみたのですが、うまく不具合が解消しませんでした。
仕方ないので、Ubuntu側で対応しました。こちらはうまくいっています。
実施することは簡単でUbuntuの端末から以下を実行するだけです。
sudo timedatectl set-local-rtc true
わたしの不具合
- Ubuntu: 立ち上げのときにOSを選択しますが、このときにUbuntuを選択してリターンキーを押して立ち上げると、なぜかキーボードを認識しません。自動でUbuntuが選択されるので起動するまでずっとまっていると、キーボードが認識されます。キーボードを認識しないときは一度画面を閉じて、あけて電源キーで起こしてあげると認識するようになるときがあります。
- Windows: 立ち上げたとき時刻がずれていることがあります(確率 80%くらい)。時計を右クリックして「日付と時刻の調整」から、「時刻を自動的に設定する」を一度オフにしてからオンにして時刻を合わせています。→ 追記記事(2021.5.22)で、不具合解消しました。
おわりに
もとがゲーミングPCですのでWIndows10でゲームをすると快適です。プログラミングに疲れたり飽きたりしたときに、ゲームでがんがん使えてとてもよいです。
'-------------------- おしまい --------------------'
【雑談】Python初学者とは??
このブログは、タイトルの通り初学者向けに書いてます。
さて、初学者とは、どのようなレベルでしょうか? 辞書的には初学者と初心者は同じ意味ですが、ここでの初学者とは初心者ではありません。初心者は初めてのことなのでほとんどわからないことだらけですが、初学者はすでに学びをはじめてるので、それなりのことはできますが、それなりのことしかできないレベルの人をいいます。
もちろん人によってそのレベルは様々なので、ここでいっている対象と想定している初学者とはこれくらいの人達だよ、というのをまとめておきます。ちなみに初学者とは私です。自分用の備忘録なので。
もし私のレベルがアップすると「初学者」のレベルもアップしますが、それはご了承ください。
みんなでレベルアップしていきましょう。
それでは、初学者に必要と思われるもの「マスト」をみていきます。
マスト1: 自分のパソコンにPython をインストールできる。
パソコンのOSはなんでもいいですが、自分のパソコンでPython が動く状態にセッティンしている! というのはマストです。
Python のインストールは、ググれば、OSごとに大量にでてきますのて、自分の理解できるページを見つけて、いれてしまいましょう。
なお仮想環境の設定は詳しくわからないけど、ググったページをみながら導入したら仮想環境で導入してた、というのが、初学者らしくてよいでしょう。(まさしく、はじめたころの私です。)
現在の私の標準の環境をメモしていますので、よければ参考にしてみてください。
マスト2: 外部モジュールをインストールできる
モジュールとは、プログラムの最初でimport を使って呼び出すアレです。
python 単体ではpython のよさは生かせません。先住者の英知の結集であるモジュールをを入れてこそです。
numpy, pandas,matplotlib, がなんとなく使えるぞ、というのが初学者です。
Python のインストールでAnacondaをインストールした人は、すでにほとんどのモジュールもインストールされていますので、ここはほぼクリアです。
ただし、pip installとconda installの混同は注意が必要らしい?です。初学者は気にしませんが。
マスト3: 他の人の書いたpython プログラム「ほにゃらら.py」を実行できる
コマンドプロンプトやVs Codeのようなエディター、なんでもよいですが、他人様のかいたプログラムをバンバン実行できないといけません。
初学者のやることは他人様のプログラムを流したり、ちょこっとした改造したり、写経したりです。
他の人のプログラムは動かせます!がマストです。
マスト4: Jupyter Notebookの基本的な使い方がわかる
これは私の嗜好がはいってます。Jupyter Notebookは使えなくても、Python は充分遊べます。
わたしがPythonを始めたときに使っていた本「退屈なことはPythonにやらせよう」では、Jupyter Notebookの使い方は書いてなく、全く使用しない内容だったので、この当時は全く使えませんでした。
マスト3の「ほにゃらら.py」が実行できればプログラム動きます。
しかし、一度 Jupyter Notebookを使いはじめると手放せません。書いた部分から実行、関数を変えてみて再実行など、試行錯誤が楽です。
Google Colaboratory(Colab)もほほJupyter Notebook なので、Colabを利用することで、GPUも無料で使えます。ディープラーニングに突っ込んでいく人にはマストだと思っています。
マスト5: 他の人のプログラムがエラーがでても、ググってなんとか動かせる
同じ環境を作ったつもりでも、使っているハード、ソフトの状況ははやり違いますので、環境依存性は必ずあります。
なので、写経やコピペをしてもエラーが出ることがちょくちょくあります。初心者ならここで止まってしまいますが、初学者は違います! ググって試す、ググって試す、ググって試す、です。
そして、だいたいのものは動かせるようにしていきます。このとき、環境がどんどん変化していってしまいます(ほとんどの場合は壊れていきます)が、それは気にしません。
プログラムは動いて、なんぼ。初学者はどんどん試してみて、動かす、です。もちろん、どうやっても動かせないものもでてきますが、ある程度ググっても動かない場合は、そこは飛ばしましょう。
初学者からはいつ脱出して、中級者や上級者になるのかは、人それぞれの時間と能力によるのでまちまちでしょう。
なお、マルコム・グラッドウェル氏の「天才!成功する人々の法則」によれば、「一万時間の法則」があり、何事でも一万時間の練習によって才能は開花するそうです。
いや、今から1万時間は無理やて。
私はやればやるほど、学ぶことがどんどんでてきていますので、永遠の初学者になりそうです。
'------------------- おしまい --------------------'
【Memo】Ubuntu18.04をリモートで動かす! --- Windows10 から ---
やること
少し前のページでUbuntu18.04のパソコンを他のUbuntuやMacからリモートでUbuntuを動かすのを書きましたが、Windows10からも接続するようにしましたので、新たなメモとしておいておきます。VNC接続を使ったリモートデスクトップで、ファイルの受け渡しの設定はしてません。。回はLANの中で動かすことを前提にしています。LANの外から接続する場合はTeamViewerを使っています。
gen-todoroki.hatenablog.com
私の場合はUbuntuを24時間稼動のデータチェックマシンとして使用しているので、そのマシンにアクセスするときに使用しています。データチェックマシンはひっそりとお家の片隅においておき、必要時にいつも使うPCからアクセスして情報をとってきてます。便利です。
なおここでは、ホストPC=操作されるPC(Ubuntu18.04)、クライアントPC=操作するPC(Windows 10)とします。
使用している感想
ググれば、いくらでも方法はでてきますので、感想を先に書いときます。
- クライアントがWindowsの場合は、ほどほど快適
Windows10からの動きはもっさりしています。しかしポインタの追随性やスクロークの動きなどは十分使用に耐えられます。
いつもリモートでプログラムするのはしんどいですが、ちょっとしたプログラムなら問題なレベルです。
クラインとPCとしての快適性は、 Ubutnu > Windows10 > Mac、となります。
- クライアントPCがUbuntuの場合は快適
ホストPCが非常に古い(7、8年落ちかな?)PCのため、PC自体の動きがもっさりしてますが、作業は問題ないです。どちらの端末を動かしているのかを錯覚するときあります。ファイルのやりとりもファイルアプリ(Nautilus)で簡単です。
- クライアントPCがMacの場合は、快適とはいえない
Macの場合は、スクロールをしたときの表示がニョロニョロ?とした動きで違和感があります。Macで使用していて最も気になるのが、ポインタの矢印です。MacのポインタとUbuntu(ホストPC)のポインタの両方が表示されます。もちろん有効なのはホストPCのポインタですが、動かすのはMacのポインタです。ホストPCのポインタの動きに遅れがありますので急ぐと違うところクリックしてしまいます。
とはいっても、動作確認やプログラムの微修正などに問題なく使用しています。
ホストPC(Ubuntu18.04)の設定(Macからリモート接続する場合と全く一緒です)
リモートデスクトップ(ホストPC)の設定
先人のお知恵を活用させていただき、以下に従って設定します。
minoru.okinawa
流れは以下です。
- 画面共有をオンにする (設定→共有→画面共有 )
- サスペンドに入らないようにする (設定→電源→自動サスペンド オフ)
- ホストPCのローカルIPアドレスを確認する (端末→ ifconfig)
- Macからつなぐ場合、Ubuntuの暗号化通信をオフにする
ここで、一番つまずいたのは 4. です。Ubuntuから接続するときは実施する必要がありませんが、実施せずにMacから接続しにいくと、「リモートコンピュータのソフトウェアが、このバージョンの画面共有と互換性がないようです。」といわれて接続できません。
【Ubuntu 20.04/18.04 Desktop】WinやMacパソコンからVNCでリモート接続し画面共有する | The modern stone age.をみつけ、端末から以下のコマンドを入力しましたが接続できなかったです。
gsettings set org.gnome.Vino require-encryption false
ホストPCの暗号化を解除したはずなに接続できない原因はホストPCにAnacondaをインストールしていたため、端末の環境が(base)の仮想環境となっていたからでした。端末の開始の文字が(base)と表示されている場合は(base)にいますので、baseから脱出します。その後、さきほどのコマンドを入力したらOKでした。
conda deactivate
gsettings set org.gnome.Vino require-encryption false
余談ですが、Ubuntuのデスクトップ画面の上部に表示されている時間表示を月日をいれたいときも、(base)環境から出ていないと機能しません。(base)からでて、以下のコマンドをいれてください。
gsettings set org.gnome.desktop.interface clock-show-date true
クライアントPC:Windows 10の設定
リモートデスクトップ(クライアントPC:Mac)の設定
VNCで接続するために、VNCソフトをインストールがする必要があります。
Windows向けにいろいろなVNCソフトがありますが、昔からあるReal VNC Viewerをインストールします。
インストーラーをダウンロードしてからインストールしてください。
インストール後、立ち合げて、こんなことができますよ画面がでますので、「Got it」をクリックします。
あとはAccess your remote computers をにいくと、IPを入力なりますので、ホストPCのIPを入力してください。
パスワードを聞かれて、ホストPCで設定したパスワードを入力したら、ホストPCの画面に接続できます。
ホストPCの暗号化通信をオフにしていますので、「Unencrypted connection」(暗号化されてない通信ですよ)と表示がでますが、「continue」をクリックして進んでください。
ファイル受け渡し(クライアントPC:Windows10)の設定
これはあまり必要性がなかったので設定をしていません。
とりあえずOneDriveを使えばいけます。
gen-todoroki.hatenablog.com
'--------------------おしまい--------------------'
【How to】大人のPython のはじめ方
いい歳になってるけど、いま話題のプログラミングを始めてみたい、という方への記事です。
私もいい歳だった3年ほど前から、Python始めました。
もちろん今も歳は増え続けているので、さらにいい歳になってます!
ネットの中には初心者向けの記事は大量にありますが、そのほとんどは万人向けで、どちらかと言えば、学生や新人社会人を対象としたものが多いと感じます。そこで、自分の経験も踏まえて、おっさんに向けにブログ書いてみました。
「物事を始めるの遅すぎるということはない。やりたいと思ったときが始めるときだ。」
とはよく言われます?が、おっちゃんが趣味でプログラミングを続けていくには、若者のようにこの技術を身につけると就職が有利になる、もっとよい会社に転職できる、といった明確なモチベーションがなく、また日々の仕事があるので、自由に使える時間も限定されるので、継続するのがしんどいなと思います(私の勝手な思いです)。
この記事をプログラミングを始めるかどうかを判断するのに、参考にしてもらえれば幸いです。
1. 想定してる対象読者
- はたらくおじさん。もちろん、おばちゃんも可。
- プログラミングに興味あって、なんとなく始めてみたいな、と思っている人
- または、少し初めてみたものの面白くなくで続きそうにないな、と思っている人
- パソコンに興味がある人
- 数字にアレルギーがない人(難しい数学はいりませんが、数字アレルギーの人は続けていくのはツライと感じると思います)
2. 何をするのかを決める(言語の決定!)
プログラミングを始めるときにプログラミングで何をしたい、というのがないと続けるのは困難です。プログラミングをある程度身につけるためには時間がかかります。歳をとっていれば、若い頃に比べ残念ながら学習能力は低下していますので、同じことをマスターするにも若いころに比べ、学習時間はさらに増えてしまいます。
それを継続するためには目的がないとできません。なお、プログラミング勉強していくうちにやりたいことが変わっていくのは全然問題ありません。まず最初に、「こういうことをしてみたい!」というものがスタートするには必要です。
プログラミングもいろいろあり、言語そのものを改良していくのような攻めた楽しみ方もありますが、おっちゃんプログラマーは、言語そのものを楽しむのではなく、道具として使って楽しむものだと思います。言語そのものを楽しむようになるには時間と能力が必要ですので。
私の場合は、私はすこし(かなり?)変人なので、AIが流行ってるけどその元になっているディープラーニングって何なんだろう??との思いから、当時話題になっていた「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を購入して読んでいたときに、Pythonを知らないと実際に動かせない、じゃあPythonはじめてみよう、がきっかけです。一応こういうのもありということで。
何をする(したい)のかが明確に決まってない人は、この本「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」をぱらっと見てみて、どんなことができるかを知ることができます。私もPython学習は、これからスタートしました。この本は最初にプログラムの文法があり、その後、いろいろな活用がのっています。
まずはこの本を本屋さんで立ち読みしてPythonを使うとこんなことができるのか、というのみるのがよいと思います。
例えば、次のようなことができます。
- Web スクレイピング: Webを巡回して自分の欲しいデータとってくる
- Excelファイル; Excelのファイルを読んこんだり、処理したり、書き込んだり。
- PDF、Wordファイル:PDFファイルを読み込んで結合したり。Wordファイルを書き込んだり。
- SMS、電子メール:発信する
- GUI処理:プログラムで画面上のポインターを動かしたり、文字を入力したり、クリックしたり。
この本の中かから自分のしたいことに繋がる内容があれば、最初にこの本にそって進めてみるのをお勧めします。
ただ、3月に改訂版がでるみたいですので、今、買うかは悩ましいですが。
改定版の時期がどんどん伸びているようなので、初版ですすめましょう。(2021.6.20 現在)
なおこの本は、Pythonが得意分野である機械学習やディープラーニングについて記載がありません。私の最も興味ある分野なのですが、最初にPythonとしては、この本から学んで基礎をつけたので、Pythonを始める前の人が読んで、Python を使えば機械学習やディープラーニングでこんなことができるんだ、というのをわかりやすく書かれた本の紹介ができません。しかし、Pythonで機械学習・ディープラーニング は王道ですので、本屋にいけば簡単なレベルから超専門書まで数多くの本があります。機械学習・ディープラーニング に興味がある人は本屋でいろいろ眺めてみてください。なお、私が実際に実施した機械学習・ディープラーニングの進め方は別記事にかくつもりです。
学習する本を決めて、一旦、はじめると、この本はよかった、または、よくなかったと判断できるようになるまでには、時間をガッツリとられます。はじめる前によく検討した方がよいです。
機械学習とかAI構築とかに全然興味ないのであれば、本当にPython で進めるのかを検討しましょう。若ければ、複数の言語をいろいろやってみて、自分に合うものを深めていくのもよいですが、はたらくおじさんには時間的にも能力的にも厳しいです。まず、言語を決めて走りだしましょう。
ホームページを作りたい!というのであればPython ではなく、html, css, JavaScriptあたりでは? あとWordPressという裏技ももあるようです(これはプログラミングというものではないようですが、ホームページを作るとの目的達成できるのなら、プログラミングにこだわる必要はないかと思います)。
エクセルをメインに仕事を効率化したい!のであれば、エクセルマクロでしょう。最近はPython × Excelが流行ってるらみたいですが、素直にマクロを使いこなすようになる方が役に立つと思います。マクロを使いこなしてGAFAの部長になった人もおられます?!
もっと統計的な検討となればRの方がよいようですし、競技プログラミングで上を狙うならc++が速いらしい、など、それぞれの得意分野がありますので、よく調べてみてください。
ちなみに私はPython しかやってないので、その他言語についてこれくらいしか書けませんし、その信憑性も??です。
3. PCを準備する
Puthonプログラミングをやってみると決めたら、パソコンを準備しなければいけません。Pythonは、Windows10、Mac、Ubuntu(Linux)で動きます。普段使っているパソコンにPythonをインストールすればよいです。普通使いのパソコンで、Ubuntuを使っている人はまれだと思いますので、Windows10かMacになると思います。パソコンはCPUは速くなくても最初は全然問題ありません。私も最初の1年弱ほどは、5,6年落ちのWindowsを使っていましたが、問題ありませんでした。
Pythonはそれを単体でインストールしてもよいのですが、Pythonを含んだパッケージソフトであるAnacondaをインストールするのがお手軽でオススメです。多くの本でもPythonの導入でAnacondaの導入の仕方が説明されています。Anacondaはインストールも簡単で使いやすのですが、容量が大きく、HDD/SSDをそれなり消費するので、そこは注意が必要です。
プログラミング学習を続けていくと、よいパソコンが欲しくなります。私のパソコン遍歴はココに。
新しいパソコンを買うと気分が上がり、やる気がアップしますので、区切りでパソコンを更新していくのはオススメです。もちろんお金との相談になりますが・・・。
4. 学習方法を決める
何で勉強するのがいいのかは、個人によって大きくことなると思います。しかし、はたらくおじさんは時間が限られていますので、本をベースとして、その他の補足的に使用するのが無難だと思います。
4.1 本
勉強時間の自由度が高く、コストパフォーマンスもよいと思います。近くに品揃えのよい本屋がある方は、買う前にいろいろ確認できるので、とくにオススメです。
ベースの本を学習していき、わからなき所やもっと興味がでたところなどを他の本やネットで補完していくのがベストだと思います。
本を一冊とおしてやるとかなりの時間がかかります。私の場合、「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」を一通り終わらせるのに6ヶ月かかりました。合わないと思った本は見切りをつけてスパっとやめるのも手です。ただ、いろんな本に手を出してどれも最後まで辿り着かない、というのは最悪です。いかに自分に合う本に出会えるかがポイントです。
コスパがよいといっても専門書は値段が高くだいたい3000円以上しますし、高いものになると1万円を超えてきます。私のオススメはメルカリでの購入です。最近はほとんどの本をメルカリから入手していますが、新品同様品が定価の5〜9割で買うことができます。また、少し古い本や書き込みありなどは、かなり格安で入手できます。
近くに大きな本屋がない方はブログなどをみてAmazonなどの通販からの購入になるかと思います。購入した本が思った内容と違うと判断したときは、すぐにメルカリに出品しちゃいましょう。メルカリ手数料(1割)はイタイですがブックオフより断然高く売れます。 新しい専門書は結構よい値段で売れます。
住んでいる地区の図書館も狙い目です。最近の市町村の図書館はネットで蔵書を検索できるところも多いですので、欲しい本がないかを検索してみましょう。ちなみに私の地区の図書館はPython で検索すると60冊の蔵書がありました。まず図書館の本で確認してからよければ購入することもしてます。余談ですが、私の地区の図書館はRの本が充実していて羨ましいです。
4.2 Webのコース(有料)
すこし検索するだけで、多くのコースがみつかると思います。私はひとつもとったことがないので、良し悪しの判断はできないです。
お値段が結構するので、お金とやる気がある人向けだと思います。
ただPython ではないですが、ネットワークについて知りたいと思い、N予備校を2ヶ月やりました。 N予備校の「プログラミング入門 Webアプリコース」を2ヶ月で実施して、退会しました。1000円/月なので手軽にはじめられました。
N予備の感想ですが、
よかった点
- 全然知らない分野だったが初心者が順にできることが増えていくようににコースが作られており、楽しめる。
- 知らない分野、言語でも、キチンと従えばキチンと動く。
- ひとつだけ動かなかったので質問したら、丁寧に返信があった。
よくない点
- 退会後では教材にアクセスできないので、あとから参考にすることができない。
- どんな人でも動かせるように、やり方は非常に丁寧に説明されているが、環境設定などについて、なぜそのことをするかなど説明がほとんどない。
4.3 Webのコース(無料)
- 無料のコースもそこそこあります。しかし、文法のある一部分だけだったり、途中から有料コースに誘導されたりと、これをやれば一通りの基礎を学べるというのは見つけられていません。 その中でも、paizaの「Python3入門編」はすべてやりました。これだけでは学習量が少ないですが、本を進めているときに平行してやったら理解が進みやすかったです。
(2021年2月24日 追記) paizaから、初心者向けの講座ができていました。まったくの初心者はこれをやってみてはどうでしょうか。
- 英語ができる方なら、courseraなど、かなりの数のコースがあります。しかし、よほど英語力がないと、はじめてのことを英語で学習するるのはキツいと思います。
5. python のはじめ方【参考】
私が実施した経験から、よいと思う方法です。向き不向きは個人差がありますので、参考として書いておきます。
- メインテキスト
「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」
- 副読書
「みんなのPython 第4版 」
進め方
- 基礎なので、最初からすべて実施する。
- わからないところがあれば、「みんなのPython 第4版 」で、該当ページを確認する
- タイミングをみて、paizaにて復習する
「みんなのPython 第4版 」は表紙だけをみると、初心者向けの簡単な本のようにみえますが、内容がしっかりとした文法書で非常に参考になります。
「退屈なことはPythonにやらせよう 」 では書かれていない、Jupyter Notebookの使い方や、オブジェクト指向の基本であるclassの説明などもあり、よい本です。この本だけで勉強を進められる人はこの本をマスターすれば基本技術はマスターできます。個人的にサンプルコードが面白くないので、メイン本でわからなかったときの参考書(辞書)として使っています。
- ひとおり順番に進める。難しくて動かせないかつ興味がないと思った章はとばしてよい。
- おもしろいと思った分野は、サンプルを改良して、動かしてみる。
プログラミング力の確認として、paizaのスキルチェックにチャレンジする。 Dは時間をかければできるはず。Cは時間があるときに。
Paizaのスキルチェックが面白いと思ったり、Cがほぼ問題なくできるようになったら、 AtCorderのAtcCorder Beginner Contest(通称: ABC)の過去問題にチャレンジする。AからCまでよい。 (というかD以降はアルゴリズムを勉強しないと、ほぼ時間内にとけない)
おそらく、ここまでで3ヶ月から1年かかると思います。
ここまでくれば、何ができるか、何をしたいかが自分で検討できるようになると思います。
これ以降はPythonを深めることももちろん重要ですが、それ以外の知識も必要となってきます。
キーワード(自分自身が知識を深めたいと思いってるもの):
Git, GitHub, Docker, ネットワーク, シェルスクリプト, 仮想環境,
一緒にコツコツやっていきましょう。
‘—————————— おしまい ——————————‘
【Memo】複数のパソコンでPythonの仮想環境を揃える! condaの仮想環境設定
1. やること
使用するパソコンが一つのときはよいですが、複数のパソコンを使用していると、それぞれのパソコンで同じ環境にしてどのパソコンで作業しても問題ないようにしておくのが便利です。現在、Ubuntu18.04を2台、Macを1台、Windows10を1台使ってますので、condaの仮想環境を揃えるようにしています。 あくまでも私の標準です。ご参考まで。
2. 環境設定のベース
Ubuntu, Mac はまず、pyenvを導入し、pyenvでanacondaを選定したのちにcondaの仮想環境を作っています。
Windowsはpyenvがありませんので、直接Anacondaをインストールして、condaの仮想環境を作っています。
pyenvもpython のバージョンを管理する仮想環境ですので、UbuntuやMacでもpyenvを導入せずにanacondaを直接導入してからcondaの仮想環境でpythonのバージョンも含めて管理したのでよいと思いますが、pyenvからanacondaを入れた方が、環境を変更するのが楽そうだったので、pyenvを入れてその中でanacondaをにしてます。
Pyenvの使い方 はこちらが参考になります。
こんな感じになります
3. pyenvの導入
pyenvのGithubにインストール方法が書かれていますので、そのとおり実施すればよいのですが、Githubは英語ですので実施したことをメモします。
3.1 Ubuntu
事前準備
ターミナルから。
sudo apt update; sudo apt install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
gitをクローン
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
環境設定(bashです。zshの方はこちらを参考にしてみてください)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc
pyenvのアップデートをプラグインでできるようにする
git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
3.2 Mac
だいぶ前に導入したもののメモってなかったので、参考をいくつかあげときます。
(もちろんググればいっぱいありますので、お気に入りの入れ方で。)
MacOSとHomebrewとpyenvで快適python環境を。
pyenvを使ってMacにPythonの環境を構築する
4. Anacondaの導入
4.1 Ubuntu, Mac
ターミナルに以下を入力。簡単です。
pyenv install anaconda3-5.3.1
anacondaのバージョンはどれでもよいですが、使用するすべてのパソコンで合わせておくのが無難です。
4.2 Windows
Anaconda からインストーラーをダウンロードしてから、インストールします。
5. condaの共通の仮想環境【本ブログのメインです】
condaで自分標準の「general」という名の仮想環境を作っていきます。名前は自由に決めてください。ただし、baseはconda標準の仮想環境で使われています。
5.1 pyenvでPythonのバージョンを設定(Ubuntu, Mac)
ターミナルで使用するバージョンを指定
pyenv global anaconda3-5.3.1
現在の指定しているバージョンはpyenv versions
で確認できます。
pyenvは参考文献のページなどをみてください。
5.2 condaの仮想環境を作成
Ubuttu, Macはターミナルから、WindowsはAnaconda Promptから作成します。
conda create -n general python=3.7 ipykernel
5.3 仮想環境 generalに有効にする (仮想環境 generalに入る)
conda activate general
仮想環境generalに入ると、ターミナルの最初が(general)となりますので、いまどこにいるかはすぐわかります。
5.4 必要なモジュールを入れる
モジュールのバージョンを合わせるため、モジュールを記載したテキストファイルを準備してから、pipします。
「生成 Deep Learning 」を勉強中に作った環境なので、本に合わせています。以下のrequirements.txtを保存してください。
requirements.txt (Noteにも同記事を書いており、Noteからはファイルのダウンロードができます。)
absl-py==0.8.1 appnope==0.1.0 astor==0.8.0 astunparse==1.6.3 attrs==19.2.0 backcall==0.1.0 bleach==3.1.0 cachetools==4.1.1 certifi==2020.6.20 chardet==3.0.4 cycler==0.10.0 decorator==4.4.0 defusedxml==0.6.0 entrypoints==0.3 gast==0.3.3 google-auth==1.18.0 google-auth-oauthlib==0.4.1 google-pasta==0.2.0 h5py==2.10.0 idna==2.10 imageio==2.6.1 importlib-metadata==0.23 ipykernel==5.1.2 ipython==7.8.0 ipython-genutils==0.2.0 ipywidgets==7.5.1 jedi==0.15.1 Jinja2==2.10.3 jsonschema==3.1.1 jupyter==1.0.0 jupyter-client==5.3.4 jupyter-console==6.0.0 jupyter-core==4.6.0 Keras==2.3.1 Keras-Applications==1.0.8 Keras-Preprocessing==1.1.0 kiwisolver==1.1.0 Markdown==3.1.1 MarkupSafe==1.1.1 matplotlib==3.1.1 mistune==0.8.4 more-itertools==7.2.0 music21==5.7.0 nbconvert==5.6.0 nbformat==4.4.0 networkx==2.3 notebook==6.0.1 numpy==1.17.2 oauthlib==3.1.0 opt-einsum==3.1.0 pandas==0.25.1 pandocfilters==1.4.2 parso==0.5.1 pexpect==4.7.0 pickleshare==0.7.5 Pillow==6.2.0 prometheus-client==0.7.1 prompt-toolkit==2.0.10 protobuf==3.10.0 ptyprocess==0.6.0 pyasn1==0.4.8 pyasn1-modules==0.2.8 pydot==1.4.1 pydotplus==2.0.2 Pygments==2.4.2 pyparsing==2.4.2 pyrsistent==0.15.4 python-dateutil==2.8.0 pytz==2019.3 PyYAML==5.1.2 pyzmq==18.1.0 qtconsole==4.5.5 requests==2.24.0 requests-oauthlib==1.3.0 rsa==4.6 scikit-image==0.17.2 scipy==1.4.1 Send2Trash==1.5.0 six==1.12.0 tensorboard==2.2.2 tensorboard-plugin-wit==1.7.0 tensorflow==2.2.0 tensorflow-addons==0.10.0 tensorflow-estimator==2.2.0 termcolor==1.1.0 terminado==0.8.2 testpath==0.4.2 tornado==6.0.3 traitlets==4.3.3 typeguard==2.9.1 urllib3==1.25.9 wcwidth==0.1.7 webencodings==0.5.1 Werkzeug==0.16.0 widgetsnbextension==3.5.1 wrapt==1.11.2 zipp==0.6.0
requirements.txtはpip
を実行するところと同じ階層(ディレクトリ)においておきます。
ターミナル・Anaconda Prompt から、
pip install -r requirements.txt
5.4 仮想環境でjupyter notebook 動かせるように設定
ターミナル・Anaconda Prompt から、
python -m ipykernel install --user --name general
通常のjupyter notebookと同じようにターミナルからjupyter notebook
を立ち上げて、newをクリックすると「general」がありますので、「general」を選ぶと仮想環境でのjupyter notebookとなります。
5.5 仮想環境からの脱出
ターミナル・Anaconda Prompt から、
conda deactivate general
6. 注意点など
環境は使用していくうちに新しいモジュールのインストールや、モジュールのバージョンアップ、ダウンが必要となってきます。変更したものは、requirement.txtに、追加したモジュールや変更したバージョンを入力していく必要があります。(これは結構面倒です。よい方法があれば教えてください)
同じ環境を作ってもパソコンのハードの仕様によって動かない場合がありました。私の場合はTensorFlow2のバージョンにより古いPCでは動かないことがありました。
同時期に複数のパソコンで設定する場合は、この方法でよいですが先によく使っているパソコンがあり、その環境を別のパソコンでも作成するには、conda仮想環境のコピーができるようです。その場合はコピーにチャレンジしてみる価値はあると思います。(私はしたことがないので、どの程度、便利なのかはわかりません。)
Anacondaを使った仮想環境を保存・再構築、複製
Python Anaconda環境をコピーする。その環境下でTensorFlowをダウングレードする手順
7. 参考文献
Pyenvの使い方
Anacondaを使った仮想環境を保存・再構築、複製
Python Anaconda環境をコピーする。その環境下でTensorFlowをダウングレードする手順
'-------------------- おしまい --------------------'
【Memo】Ubuntuむらさきのiphone壁紙、Mac壁紙、android壁紙
やること
Ubuntu18.04をメインにつかっていますが、Ubuntuの起動時やターミナルのむらさき色がけっこうお気に入りなので、その壁紙を作りました。
Ubuntuを使っていない人はわからないと思いますが、Ubuntuむらさきはこんな色です。
やりかた
以下のUbuntu_MURASAKI.pngの画像を右クリックしてして「画像の保存」、または、リンク先のnoteからUbuntu_MURASAKI.pngをダウンロードしてから、iphoneやMacで壁紙に設定してください。
単色なのでメモリ節約のため、画像サイズは小さめにしています。
'-------------------- おしまい --------------------'
【Memo】Google Colaboratoryの90分セッション切れ対策 --- Pythonをつかう! ---
やること
Google Colab はプログラム実行中でも、何もさわらないと90分経過でプログラムが止まってしまいます。
このセッション切れ対策として、Google Chromeのアドオンを使う方法やスクリプトを実行する方法が紹介されていましたが、アドオンがうまくいかなかったので、Pythonプログラムで画面を定期的にクリックするという原始的な方法のシンプルプログラムを書きましたので、その紹介です。
やりかた
pyautoguiモジュールをインストールする
画面をクリックするのにpyautoguiモジュールを使用します。pipを使って普通にインストールします。
pip install pyautogui
Google Colaboratoryを動かす
いつもどおりにColabでプログラムをはしらせます。ブラウザはなんでもOKです。
対策プログラムを動かす
ターミナルかエディタから、以下のプログラムを動かします。一応、for_colab.pyと名付けてますが、自由に名前をつけて保存、実行してください。
for_colab.py
#! python3 # -*- coding: utf-8 -*- # colabを継続して使う import time import pyautogui print() print('''10分ごとにマウスカーソルを左右に少し動かし、クリックします。 12時間後に終了します。途中で停止するときは、Ctrl + c を押してください。 ''') try: dir = -10 counter = 0 while counter < 72: time.sleep(600) pyautogui.moveRel(dir, 0) dir = - dir pyautogui.click() counter += 1 # print('カウンター:', counter) # クリックしたときに出力したい場合はコメントアウト print('停止:12時間経過') except KeyboardInterrupt: print('停止:Ctrl + c による終了')
プログラムはとてもシンプルで、time sleepで10分待ったあと、ポインタを右(または左)に少し動かしクリックします。
それを72回(=12時間)実施したら終了します。
google colabに戻る
先ほどプログラムをはしらせたcolabに戻って、プログラムが動いているのを確認します。
colabのプログラムの最後の方に空欄のセルをいくつか作っておき、その場所にポインタをおいておきます。以上です。
注意事項
- 「for_colab.py」は定期的にクリックしますので、ポインターをどこに置いておくかが重要です。左右の動きを繰り返すので、全然違う方に動いていくことはありませんが、colabの方がスクロールしていて思いもかけないところをクリックしないように、最後にポインターを置く位置に気をつけてください。
- colabとは別のプログラムですので、colabの計算が終わっても当然「for_colab.py」は止まりません。colabの計算が終了したら、ctrl-Cで「for_colab.py」を停止させてください。私は止め忘れていて、なんかパソコンの動きが変になった、と思ったらバックで「for_colab.py」が動いてました...
- 10分間隔でクリックしますが、その前にパソコンがスリープしないように、スリープまでの時間は10分超に設定してください。
- 単純に時間がきたらクリックするだけの機能ですので、動作中は別の作業はできません。睡眠学習用として使用ください。
プログラム「for_colab.py」は10分間隔でクリックするようにしていますが、colabのルール的には90分以内にクリックすればよいので、time sleepの値を各自の好みで変更してください。
また、クリック時にクリックしたことを確認したければ、コメントアウトしているPRINT文を有効にしてください。
単純なプログラムですので、使いやすいように変更して使ってみてください。
Google Colaboratoryは無料でGPUが使用できるので、機械学習の訓練にとても便利ですよね。 寝ている間にGoogle先生に訓練してもらいましょう。
'--------------------おしまい--------------------'