小林 未知数の備忘録
雑記

WindowsからUbuntuに移行して

Windowsの中では比較的安定していたと思われるWindowsXPのサポートが切れるのを機会にWindowsを (本当に必要になったとき以外) 一切使わず、Ubuntuへの完全移行を試みた。移行して思ったことを色々書いてみる。
WindowsからLinuxへの移行を人に進めるかと言われれば、まず間違いなく「Microsoft PowerPointに慣れていて、LibreOffice Impressへの移行を含めるつもりならやめておくべき」、「プレゼンでオフィスを使わない(例えばbeamerを使う)ならアリ」。その理由はただひとつ、LibreOffice Impressの存在。WriterやCalcは気になるところはあまりないが、Impressはとにかくバグが多いし、新しいバージョンには必ずと言っていいほど新機能とともにとんでもないレベルのバグがセットになってくるし、新しいバージョンでバグが解消されたと思ったら、その次のバージョンで復活してるということもよくある。また、結構頻繁にクラッシュする。僕にとってLibreOffice Impressの存在が、他の全てのUbuntuの長所を超えて、Ubuntuに、つまりデスクトップをLinuxに変えたことを激しく後悔した。本気でbeamerに乗り換えるべきか。誰か周りで使い始める人が出ることを期待している。
このあたりは別に書くとして、使ってみた感触を順番に書いてみる。

  • 安定性

    僕がWindows2000やXPが好きだったのは、やはり安定に動いてくれること。Microsoftは新しいOSを出す度に様々な機能を追加することを考えているようだが、仕事で使うなら、必要最小限の機能でいいので、安定して動いてくれることがやはり大事だと思う。その意味ではUbuntuは個人的にはWindows2000やXPには劣るが非常に安定に動作していると思う。CentOSもサーバー管理で使っているが、やはりUbuntuはCentOSには安定性で負けるか。でもデスクトップでCentOSはLinux初心者の僕には想像も出来ない。その意味でLubuntuは安定性と快適性が半端なく良い。WindowsXPよりもいいんじゃないか?ということで普段はLubuntuを、プレゼンではUbuntuを使っている。CentOSユーザーとしてはFedoraでも良かったが、なんとなくUbuntuにしてみた。ただそれだけ。
    →Lubuntu20.04でlxqtになってプレゼンまわりも強力になり、もうUbuntuもいらなくなった。ただキーボードショートカットでopenboxとlxqt-globalkeysが競合し、一部のキーボードショートカットが面倒なことになったのが残念。
  • 快適性

    Lubuntu 〉 CentOS 〉 Ubuntu 〉 WindowsXP 〉 Windows7
    かな。やっぱり起動とかWindowsに比べて速いのがいい。ノートパソコンにした場合、消費電力もWindowsに比べてかなり低く、電池が持ってくれる。
  • アプリケーション

    なんと言ってもこれ。ほとんど必要なアプリケーションがUbuntuソフトウェアセンター、あるいはapt-getコマンドで揃ってくれる。Windowsでは考えられなかったことだし、CentOSのyumも入るアプリケーションがかなり少ないが、Ubuntuはこの点が思ったよりもすごかった。どこかからダウンロードしてインストールするのではなく、ボタンおよびコマンドひとつでどんどんアプリケーションがインストールされてゆく様は気持ちがいい。
  • デバイスとの関係

    まあ仕方ないが、ここがLinuxの大きな弱点。それでもCentOSと違ってUbuntuはかなりの部分をカバーしてくれる。少なくともディスプレイは普通に使える。NVIDIAのドライバもUbuntuソフトウェアセンターからインストールできる。Ubuntuならデュアルディスプレイも勝手にやってくれる。Lubuntuは自分でやらないとダメで、しかもLibreOffice Impressがちゃんとデュアルディスプレイを認識してくれないときが多々あったので、やはりプレゼンはUbuntuでやるべきだと痛感した。プリンタはブラザー製品ならLinuxのドライバもメーカーから提供してくれているので問題なし。他のメーカーのプリンタが好きなら仕方ないが。内蔵ウェブカメラ、内蔵スピーカー、内蔵マイクはちゃんと動作してくれないときがあった。仕方がないのでそのときはUSBの外付けを使っている。外付けはちゃんと認識してくれる。ちゃんとしたドライバをインストールすれば解決するのだろうけど面倒くさい。USBはWindowsのようにドライバをインストールしなくてもすぐ使えるのでこの点はWindowsに大きく勝っている。
    ちなみにApple製品との相性はすこぶる悪い。Apple製品を愛用するならLinuxはやめたほうがいいかも。あるいは逆にLinuxを使うのであればiphoneを始めとしたApple製品を買うのはやめるか、大変に苦労するのを覚悟でiphoneを買ったほうがいいと思う。Androidとの相性はそれなりに良いと思う (本当に個人的な感触だが、Apple製品がWindowsと違うものを作ろうと躍起になるあまり、Linuxがその余波をモロに受けてしまったような気がする) 。
  • 数値計算

    サーバーがCentOSなので、Ubuntuとの相性がものすごく良い。ファイル共有をNFSでしたり、アカウントをLDAPで共有したりもできるし、コンパイラを共有して、テスト計算を自分のパソコンでした後、そのまま本計算を計算機に投げることだってできる。これはどう考えてもUbuntuの勝ち。
  • アップデート

    Windowsユーザーのほぼ皆が口を揃えて不満を言う、「勝手なアップデート&再起動」の黄金コンビネーションがもちろんLinuxにはない。MacOSもそんなことはしないらしいが。
ここまでを見ると、Ubuntuにして本当に良かったと思っている。以下、アプリケーションの乗り換えについて。
  • putty→LXterminal

    文句なしにterminal。puttyが優っている点はあまりない。ちなみにLXterminalはLubuntuに付いているターミナルで、Ubuntuは別のターミナルだが、LXterminalの方が使いやすいのでUbuntuにもこれをインストールしている。
  • Winscp→LXterminal

    Linuxに乗り換えてからscpをやる機会はぐんと減ったが、Winscpは結構良かったので、これはどちらとも言えない。転送速度はterminalでやった方が速い気がする。
  • 秀丸→vim, gvim

    シェアとフリーを比べる事自体おかしいが、やはり秀丸の方がほんの少しだけだが使いやすかった。慣れればどちらもあまり変わらない。問題なのがvimにあまりにも慣れてしまったため、emacsが使いにくい。
    →Ubuntu16.04でインストールされるvimになってから、起動時に設定される余計なお節介がグンと増えて非常に厄介になった。個人的な感想だが、こういう余計なお節介は最初にエディタを選ぶ人には良いかもしれないが、エディタを乗り換える人のハードルを上げ、vimをとっつきにくいものにしているような気がする。例えば勝手に自分の思ってもいないインデントをされ、しかもそれがvimの初期設定ファイルであるvimrcで変更できないとなって、vimはやっぱりやーめたってなる人もそれなりにいるのでは?その点、秀丸は最初には何も設定されておらず、自分のやりたいことは全部自分でマクロやオプションで設定するという思想になっているのが良かった。
  • 秀丸メール→sylpheed

    やはりシェアとフリーを比べる事自体おかしいが、ここは秀丸メールの勝利。どちらも使いやすいが、違うフォルダを選択して戻ってきたときに、前に選択していたメールに戻ってくれるのが地味に大きい。僕はフォルダをしょっちゅう移動するので、秀丸メールはありがたかった。ただしwineを使ってまで秀丸メールを使うかと言われれば、sylpheedで十分、ということでsylpheedを使っている。
  • PaintShopまたはPhotoShop→gimp

    できることの多さはgimpとPhotoshopやPaintShopとであまり変わらないらしいが、gimpは分かりづらくネット必須。1年使ってやっと慣れてきた。
  • AnimationShop→gimp

    すでにJascSoftwareが開発をやめたAnimationShopだが、これは本当に高機能で使いやすかった。今更アニメーションの編集でgimpには乗り換えられないということでwineからAnimationShopを使っている。Windowsを使用していた時代にCDを買って、それをインストールしているので問題ないだろう。ちなみにAnimationShopはWindows7ではまともに動かない。
  • Illustrator→Inkscape

    できることの多さ、使いやすさの面ではIllustratorの方が若干いい。ただ、あまり変わらない。簡単なものはLibreOffice Drawで済む。なんだか最近InkscapeよりもPovRayを使う機会が増えてきた。
  • BBmpeg→ffmpeg

    Windowsだから他にも色々あるのだろうけど、なんでBBmpegなんて使っていたのだろう。ffmpegは高機能。できることが多すぎる。
  • Google chrome, skype, Dropbox, VLCメディアプレーヤー

    そのまま
  • エクスプローラ→PCManFM

    タブ表示ができるという点ではPCManFMがいい。あとデフォルトで見ているフォルダの場所のターミナルを開くことができるのが非常に大きい。エクスプローラも窓の手を使えばできるけど。ちなみにPCManFMはLubuntuに付いているファイルマネージャで、Ubuntuは別のファイルマネージャだが、PCManFMの方が使いやすいのでUbuntuにもこれをインストールしている。
    →SpaceFMの方が高機能で使いやすく、現在はこちらを使っている
  • RealVNC→TurboVNC

    TurboVNCはウィンドウをスライドさせると、そこに戻らなくなるというバグがある。それを除けば両者ほぼ同じ。
  • Acrobat→evince, Okular

    Acrobat Readerのウインドウ分割がevinceやOkularにないのが地味に大きいが、Linux版のAcrobat Readerにもこの機能は付いていなかった。その他はほぼ同じ。
  • Windowsメディアプレーヤー→Totem

    Totemはmpegをちゃんと再生しないときがある。まあTotemはLibreOffice Impressを使うときのおまけみたいなもの。普段はVLCで十分。
  • Windowsマインスイーパー→Gnomeマインスイーパー

    同じ。ちなみにやっと最近Windows時代の最高記録を超えることが出来た。
  • googleIME→fcitx+Mozc

    同じらしい。
  • Mathematica→Maxima, sage

    UbuntuにしてからもMathematicaは使っているが、職場の外では使えない環境になってしまった。Ubuntu関係ないな。入力のしやすさ、simplifyの機能、積分、行列の対角化などの機能はMathematicaの方がバカ高いだけあってMaximaよりもずっといい。皆に言われている通り、Mathematicaの唯一の欠点は馬鹿高いところ。Mapleの倍くらいする。sageはこれから色々と使ってみようと思う。
    →現在はJupyter-notebookを使ってPythonを使うことが多くなったため、sageを使うくらいならsympyで十分かも。
  • AVS/Express→Pov-Ray

    どちらもOpenGLを使って3D画像を作るアプリケーションで、簡単なものなら今でもAVS/Expressを使っている。UbuntuならPov-Rayも簡単にインストールできるので使ってみた。Pov-Rayの方がより綺麗なものを作ることができる。問題は等値面をPov-Rayで作るのが結構大変なこと。ちなみにPov-RayはWindowsでも使えることができるらしい。また、最近はParaviewという競合相手も出てきた。しかしParaviewに比べるとAVS/Expressは使いやすい。
  • カレイダグラフ→gnuplot

    gnuplotはWindowsでも使えるが本格的に使ってみたのはUbuntuに移行してから。はっきり言って全ての面でgnuplotの方が高機能。カレイダグラフの長所といえば、手っ取り早く綺麗なグラフを作ること、およびヒストグラムを簡単に作ることぐらい。回帰計算もできるグラフソフトとか言って結構な金額を取って、多変数関数の回帰計算が出来ないとかなめてるの?Windows時代から使っていればよかったと言いたいが、gnuplotで綺麗なグラフを作るにはそれなりのテクニックがいるのでやはりLinuxにしてから本格的に使うものかもしれない。
    Jupyter-notebook + matplotlibという強敵が現れたため、gnuplotもあまり使わなくなってきた。
  • セキュリティ対策ソフト

    Linuxにはあまりない。シェアではsymantec Endpointがあって入れてみたが、これがウイルスじゃないかと思えるほどのバグがあって、かつものすごく動作が遅くなったのでやめた。今はフリーのClamTKを入れて使っている。Windows時代はEset Smart Security(NOD)を使っていたが、軽いという点では両者あまり変わらない。
  • LaTeX

    Ubuntuはインストールが圧倒的に楽。ちなみにCentOSはUbuntuよりは大変(最初から入っているようにすれば別だが)。ただしインストールしてしまえばどちらも完全に同じ。まあこれがLaTeXの良い所か。
ここまではOffice以外。使いにくくなったものもあるが、まあUbuntuでもWindowsでも慣れが重要だということだろう。

プレゼンソフトの個人的な比較

プレゼンソフト (拡張子) 個人的長所 個人的短所
Microsoft PowerPoint (ppt, pptx)
  • 機能が多い
  • 安定して動作している
  • 数式エディタの数式は綺麗だと思う
  • 埋め込んだ動画の設定が色々あってとても楽
  • Windowsでしか動かない (Macにもあるらしいが詳細は知らない)
  • eps画像を読み込めない
  • dpsやodpとの互換性は皆無
  • 値段が高い
  • LaTeXはそのままでは使えない (コマンドだけは受け付ける)
WPS Presentation (dps)
  • Linux版なら無料
  • ppt, pptx互換性は高い
  • 機能はそれなりに多い
  • 頻繁にクラッシュして全く使い物にならない
    (Sorry! A problem has occurred もう見飽きた)
  • (他のWPSにも言えるが) Linuxの場合、日本語入力のサポートがお粗末
  • 数式のフォント (dejavu math) が個人的にダサい
  • LaTeXはそのままでは使えない
  • 埋め込んだ動画を再生すのにいちいちクリックしなければならない
  • eps画像を読み込めない
  • odpとの互換性はほとんどない
LibreOffice Impress (odp)
  • 無料
  • LaTeXがほぼデフォルトで使える
  • eps画像を読み込める
  • オブジェクトの位置調整がやりやすい
  • ppt, pptxとの互換性はそれなりにある。
  • マスタースライドとデフォルトの書式の連携が取れていない
  • 機能がやや少ない (特にテンプレートや素材まわり)
  • dpsとの互換性はほとんどない
beamer (tex,ps,pdf)
  • 無料
  • LaTeX同様、こだわればとことんこだわれる
  • 数式は一番楽、一番綺麗
  • 数式以外も割と綺麗
  • Overleafによる共同作業ができる
  • 細かい調整 (特に画像やオブジェクトの位置とか) が非常に面倒で作成に時間がかかる
  • ちょっとした図形を入れるのにtikzとか使ってたら日が暮れる、かと言ってInkscapeはちょっと…
  • いちいちコンパイルしないといけないので、ページ数が増えるとチェックだけでも時間がかかる
  • pdfpcはWindows版がない。
  • pdfなので、共同研究者からプレゼンファイルほしいと言われてpdfしかないと言うとがっかりされる
  • 数学物理分野以外の領域で僕beamer使ってるよ、と言うだけで引かれることがある

Linuxディストロの比較

そんなに試したわけではないけど、とりあえず比較

  • CentOS

    これはバージョン2からの愛用。これを使い始めたときに在籍していた大阪市立大学のメインOSがRedHatだったから、それに感化されて使い始めた。サーバー管理には非常に使いやすい。
    →CentOSの開発がストップしたようで、後継の1つであるRocky Linuxに移行した。特に問題はなし。Alma Linuxとどちらが生き残るのやら、少し心配。
  • OpenSUSE

    サーバー用として一度試したが、Intelコンパイラのインストールに失敗したのでやめた。何かやらかしたのかな。
  • Ubuntu

    Linuxにそれほど精通している訳ではない自分としては使いやすくていい。サーバーとしてもデスクトップとしても。今はデスクトップとして使っているがサーバーとして使ってみた時期もあってそのときも使いやすかった。デスクトップとして使ってみて何が一番良いかって、デフォルトのキーボードショートカットがとても自分にしっくりくる。Lubuntuのキーボードショートカットは更にしっくりくる(Lubuntu20.04でそうでもなくなった)。ちょこちょこと欠点もあるがそれは備忘録に記載。
  • Linux Mint

    Ubuntuに慣れてしまうと、初心者用Linuxを銘打っておきながらデフォルトの設定が物足りない気がする、と思ってたら最近使ってみてびっくり。ものすごく使いやすく進歩していた。ということでUbuntuから乗り換えようと思っている。
  • Arch Linux

    初心者の僕にはまだ早い、と思っていたがそろそろ初心者を卒業して使ってみようかな。pacmanが魅力的に見える。
  • Puppy Linux

    お出かけ用Linuxとしてそのうち使ってみようかな、と思ってる。

Matplotlib vs Gnuplot

Pythonを使うようになって、グラフを描くのにMatplotlibを使う機会が増えてきた。
時々、どちらを使うか迷うときがあるので、これ以上迷わないように両方の長所・短所をまとめておく

個人的長所 個人的短所
Matplotlib
  • Pythonと組み合わせて柔軟なデータの加工ができる(差分とか、フーリエ変換とか)。
  • Numpyと組み合わせてバイナリデータが簡単に読める(これがめちゃくちゃデカイ)。
  • LaTeXとの連携が楽。
  • PDFやらPNGやらの画像ファイルへの保存が楽。
  • Jupyter notebookを立ち上げるのがやや面倒。ただしvscodeという手もある。
  • インターネット上に情報が氾濫していて、目当ての情報を知るのに苦労するときがある。
  • 描画方法が2通りあって、完全に異なるため、検索時にうっとおしい。
Gnuplot
  • 動作が軽い。特に3次元データのプロット"自体"は速い。
  • 計算機上など、X Windowのない環境でもset terminal dumbでグラフが見られる。
  • ターミナルから速攻でグラフが描ける。
  • Windows版は何となく使いにくいところがある(え?Windows自体が使いにくい?)。
  • コマンドが独特
  • LaTeXとの連携がやりにくい。
  • 基本アスキーデータしか読めないので、3次元データのようにデータ量が膨大になると読み込みに時間がかかる。
結局「ちょこっと」グラフを描いてみるとき以外はMatplotlibを使うのが無難か。

Juliaでグラフを描く場合の選択肢

個人的長所 個人的短所
PyCall & Matplotlib
  • PythonのMatplotlibの遺産を惜しみなく使える。
  • PyObjectの挙動をきちんと理解しなければいけないときがあり、面倒。
Plots
  • 様々なバックエンドを選べる。
  • 基本Matplotlibなので同じ感覚で使える。
  • Windows版限定でインストールに失敗することがよくある。
  • バックエンドの細かい違いを覚えるのは面倒。基本はPyPlotで十分だと思う。
Gnuplot
  • Gnuplotの遺産を使える。fitは便利。
  • バイナリデータがやっと使えるようになった。
  • LaTeXとの相性があまり良くない。
Makie
  • Matplotlibに近い書き方が使える。
  • グラフ自体は綺麗。
  • アニメーション関連の機能が豊富。
  • 最初の起動に恐ろしく時間がかかる。
  • LaTeXとの相性が悪い。
  • VSCode + IPythonで動画を動かすと不安定。
  • JupyterNotebookで動画を動かしてもやや不安定。要はまだまだ不安定。
  • サイズが巨大なので講義 (講義室のPCを使うタイプ) では使えない。

色々試してみた結果、個人的には

  • 普段はPyPlot。
  • numpy, scipyが使いたくなった場合はPyCall & Matplotlibで、GUIかどうかはPyPlotのpyguiで調整する。
  • 関数フィッティングはGnuplotを使う(シンプルな関数ならCurveFitでもいいが)。
  • 凝ったアニメーションや複数のグラフを並べるのならGLMakieを使う。

という結論になった。

プログラミングの講義 (科学技術計算) で何を選択すべきだろうか

プログラミングはツールなので、計算ができればFortranでもCでもC++でもJavaでもRでもPythonでもJuliaでもRustでも何でもいいのだが、

  • プログラミング初学者にとって習得のハードルがなるべく低い (数学・物理・化学・生物と学生が多彩なので)
  • 実行しやすい、書きやすい、有用なライブラリが多い

となるとやはりPythonかJuliaになるだろうか。Rは満たすかどうかギリギリラインかな。
さて、PythonとJulia、どっちをやるべきか、未だに自分なりの答えが出ない。

個人的長所 個人的短所
Python
  • ライブラリが豊富で何かしたいときに困ることはほぼない。
  • 分からないときに検索すればすぐに出てくる。
  • 安定して動く。
  • エラーメッセージはJuliaよりも分かりやすい。
  • numpy, scipy, pandasはやっぱり便利
  • 適当に書くと遅い。
  • 検索するとすぐに出てくるということは、課題作成等でネット上のコピペやAI対策が厄介。
  • 習得難度はJuliaより高い。
Julia
  • 習得難度はPythonより低い。
  • 適当に書いても速い。
  • レポートにおける他人のコピペ、AI使用は何となく分かる (ツールも割とある) 。
  • ライブラリは個人のディレクトリにインストールされるので、あまり大きなものをインストールできない (しかもそういうものほど有用だったりする。FluxとかMakieとか) 。
  • ライブラリがPythonより少なく、あったとしても不安定だったり、使えなかったりする。
  • Jupyter notebookのシンタックスハイライトが変。
  • エラーメッセージがPythonよりも分かりにくい。
  • 記述が独特。ブロードキャストの.とか列方向のスペースとか、小数点や普通のスペースと紛らわしい。

うーん…