Kindle OASISを使ってみて

このエントリは ニューノーマルぴょこりんクラスタ Advent Calendar 2020のために書かれたものです。

 

1.はじめに

電子書籍kindle OASIS)を導入してから1年くらい経過したのでその感想でもつらつら書こうと思います。

前提として私はこんな人

(1)読む頻度と時間

 ほぼ毎日本は開く

 時間は1日当たり平日1~2時間、週末は集中力次第ですが3時間~5時間

(2)読む本

 応用数学系の入門書、コンピュータ関係の読み物、工学関係(機械、化学、電気etc)

 文庫本(筑摩学芸文庫の読み物系なやつとか、たまにビジネス本っぽいやつも)

(3)人物

 賃貸住まいの会社員をしている

 近視で眼鏡人生

 

2.電子書籍に手を出した目的

(1)現状

 賃貸住まいでスペースが少ないのでこれ以上本を増やすのは限界

 とはいえ新しい本は定期的に目を通したい

(2)kindle目的

 kindle導入により紙の本を買う頻度を減らして本の増加を緩やかにする

 電子書籍であれば気軽に本を買えるようにすることで触れる本の幅を広げる

 

3.端末の選択

 電子書籍の運用方法として①PCで読む。②携帯端末で読む、がありますが

①はわざわざPC開くハードルが余計な読書へのバリアとなるので論外。

②では、選ぶ端末の選択が重要ですが、近視なので文字は読みやすいかつ読んでて疲れにくい端末が良い

 ⇒上記より、画面はある程度大きくかつ端末は軽くて手が疲れないものが良いという基準で選択。タブレットkindleで迷いましたが、反射光を利用したe-inkで疲れにくいとのことでkindleにしました(ディスプレイの光が近眼にはつらいので)。また、サイズが小さくて読みにくいと絶対使わなくなるとの判断で奮発してOASISにしました。端末の本をいちいち読むものに入れ替えるのが面倒なのでたくさん入る32GBにしています。

 

f:id:gofres:20201221220429j:plain

kindleOASISの大きさ。画面サイズは文庫本と同じくらい

 

4.運用方法

電子書籍はパラパラ行ったり来たりして精査しながら読むような読み方だと画面が切り替わるタイムラグのせいで若干ストレスがあります。基本的には前から順番にじっくり読んでいくような本でかつ、後でそこまで読み返さないものが向いています。そこで以下のようなすみ分けを紙の本と電子書籍で行いました

 電子書籍・・・文庫本、コンピュータ関係の本、工学系の読み物

 紙の本・・・専門書、コンピュータ関係の本(一部)

コンピュータ関係本は割と参照しながら読む本ですが、分厚くて場所を取る割に内容の更新頻度や範囲が高くて新しく買う頻度が高くなりやすいため電子書籍を主としています。

 

5.導入して何が変わったの?

家計簿をつけているので、そこから買った書籍の冊数を抜粋して比較してみました。

まず本を買う冊数はkindle導入によってkindle分が加わって圧倒的に増えています。

kindleストアだと試し読みしてそのまま購入に進むことが出来、買った本の置き場所の心配もないため、勢いで買ってしまうことが非常に多いです。

そのおかげで、今まで場所を取るから手が伸びなかった読み物的な書籍を買う機会は非常に増えたと思います(購入書籍のジャンル統計は取ってないですが)

f:id:gofres:20201221220907j:plain

2019年と2020年の1~6月で買った冊数(2020年は紙、kindle、合計の3つ表示)

 

f:id:gofres:20201221221021j:plain

1~6月各月の購入冊数

 

あと、なんやかんや紙の本を買う冊数も増えてます・・・。

kindleがあるといえど、元々専門書はなるべく紙の本を買うスタイルなので案外減らないですね。本を買うことに対する心のリミッターが小さくなったので、手元に置いておきたい本をどんどん買っているのも大きいです。実はもっと最近だと欲しいジャンルの本は充実してきたので一応買う頻度は減ってますが、今年前半はガンガン買っていたようです。2020年5~6月突出しているのは給付金で調子乗った結果です。

ただ、kindle導入後に買ってる冊数を全部紙で買っていたらとっくに本棚は物理的に破綻してるので、省スペースに貢献しているといえばしています。

まあ今年と去年の比較だと、新コロナ流行で生活スタイルがインドアに寄った影響もあり、あまり良い比較になってないような気もします(それはそう)。

 

6.その他kindle使ってみての感想とか

<良かった点>

kindleフォーマット対応の書籍は文字の大きさがちょうどよく、非常に読みやすい

・画面の大きさ的にOASISで良かった

・わりとよく読む筑摩学芸文庫はkindle対応のものが多くありがたい

・鞄に入るサイズなのでどこにでも持って行って隙間時間に読める

・紙の本みたいに鞄に入れて折れ痕がつく心配がない

 

<使ってて気になる点>

kindleに対応してない電子書籍だと文字が小さくて若干読みずらい場合あり

・漫画は画面が小さくて読みづらい上に容量をたくさん食う

・そもそもkindleで買えない本が結構ある(これのせいで紙で買った本ある)

 

 まとめ

kindle導入後も紙の本の増加スペースは緩やかにならず

kindle導入により本を買う機会は圧倒的に増えて読むジャンルは幅広くなった

・トータルで見れば本の物理スペース占有を抑えつつ読書生活自体は豊かになった

 

 

C++ を触ってのメモ1(テンプレート、Operator)

私用メモ

 

テンプレート

・型ごとにいちいち関数やクラスを作るのは面倒

・操作があらかじめ決まっているので、それを任意の型の変数を扱う際にコピべする以外のやり方がほしい時に使う

・template<class T> T function(T a, T b){} などと宣言を書く。通常はヘッダファイルに入れる。仮の型としてTと書いてあるところ(書き方は決まってなくて仮の文字はTでなくても良い)にintとか任意の型を書いて使い回せる

・一度定義しておけば int function(int a, int b) などと任意の型を入れて使う。型はクラスでも良い。

operator

・operator・・・演算子のこと。= とか () とか + とか。

・通常演算子はデフォルトの操作をするが、クラスに対しては自分で定義して使うことも可。定義するときにoperator を使う

・例えば配列に配列を代入するような操作は=でそのまま扱えなくて関数作って処理したりするけど、値と同じように扱いたいときとかに使える

・下記はテンプレートクラス内で定義して、operatorを使って一次元配列を二次元配列っぽく指定して値を取り出すのに使う例 ※()という演算子を定義してる。Tはテンプレートの任意の型。Arrayはクラス内で定義したメンバ変数の配列。

T& operator()(int index0, int index1) {T& operator()(int index0, int index1) { return Array[index1 * mSize0 + index0]; }

 

以上

温度を導出する話

このエントリは圧倒的令和ッ!!ぴょこりんクラスタ Advent Calendar 2019のために書かれたものです。

 

1.はじめに

 今回はネタがないので趣を変えて熱力学の話でも。昔読んだ熱力学の本1)でちょっと面白かった温度の存在を導出する話を行間を補いながら紹介していこうと思います。熱力学といえば基本的には熱という概念を定義して扱う分野で、身近なところだとエンジンとかエアコンとかそういうのの設計とかで使われてます。熱ってそもそもなんなんだという質問に対しては、残念ながら私は専門家ではないのでうまく答えられないのですが、端的に言えば異なる状態(エネルギー)にあるAとBがあったとしてAB間で行き来するエネルギーの移動量といったイメージだと思います。

 

f:id:gofres:20191221170836p:plain

エネルギーの移動

 エネルギーの扱いは熱力学の法則というルールに基づいて行われます。第一法則(エネルギー保存則)、第二法則(エントロピー増大則)は高校物理で習うので多くの人が知っていると思います。ここで話をするのはこれら第一第二法則ではなく、当たり前過ぎて忘れられがちな第0法則についてです。

2.熱力学第0法則

熱力学第0法則とはこういうの

物体Aと物体Cが熱平衡にあり,同時に物体Bと物体Cが熱平衡にあるとき, 物体Aと物体Bも熱平衡にある

 要は状態AとBが熱平衡かどうか知りたいときに別の状態Cに対してAとBがそれぞれ熱平衡(合計の熱移動量が0でお互いに変化を及ぼさない)であるならばAとBも熱平衡ですよ、ということですね(雑)。こういうルールが成立することを推移律が成り立つとか言ったりします。

f:id:gofres:20191221172715p:plain

熱力学第0法則

3.温度を導出する

 前置きが長くなりましたが、ここから温度というパラメータの存在を導出していきたいと思います。まずは状態を何で表現するかということなのですが、我々は経験的に熱によって物体が膨張したり収縮すること、それに伴い圧力が変化することを知っています。そこで状態を圧力Pと体積Vの2変数で表現できることにします。物体AとBが熱平衡にあると下記のように書き表すことができます

\phi _ 1(p _ A , v _ A , p _ B, v _ B) = 0・・・(1)

 熱平衡なので状態A-状態B=0というイメージですね。同様に状態AとCが熱平衡であることを下記のように記述します。</p

\phi _ 2(p _ A , v _ A , p _ C, v _ C) = 0・・・(2)

またこのとき熱力学第0法則より

\phi _ 3(p _ B , v _ B , p _ C, v _ C) = 0・・・(3)

(1)からvBをpA、vA、pBの関数、(2)からvCをpA、vA、pC

の関数で表せるとして(3)に代入します。

\phi _ 3(p _ B , v _ B(p _ A, v _ A, p _ B) , p _ C, v _ C(p _ A, v _ A, p _ C) = 0・・・(3)'

熱力学第0法則により、BとCの関係にAの圧力p、体積vを潜り込ませることが出来ました。この式を使ってA、B、Cの関係を調べていきます。 (3)'の両辺をpA、vA偏微分すると、

\frac{\partial \phi _ 3}{\partial v _ B}\frac{\partial v _ B}{\partial p _ A} + \frac{\partial \phi _ 3}{\partial v _ C}\frac{\partial v _ C}{\partial p _ A} = 0

\frac{\partial \phi _ 3}{\partial v _ B}\frac{\partial v _ B}{\partial v _ A} + \frac{\partial \phi _ 3}{\partial v _ C}\frac{\partial v _ C}{\partial v _ A} = 0・・・(4)

\frac{\partial \phi _ 3}{\partial v _ B}\frac{\partial \phi _ 3}{\partial v _ C}は同時に0にならないので(※同時に0になったらΦ3はk体積に対してただの定数になってしまう)、(4)の係数がつくる行列式は0となる(逆行列が存在しない)

\left(\begin{array}{cc} \frac{\partial v _ B}{\partial v _ A} \frac{\partial v _ C}{\partial p _ A} \\ \frac{\partial v _ B}{\partial v _ A} \frac{\partial v _ C}{\partial v _ A} \end{array}\right) = 0

したがって、 \frac{\partial v _ B}{\partial p _ A}\frac{\partial v _ C}{\partial v _ A} = \frac{\partial v _ C}{\partial p _ A}\frac{\partial v _ B}{\partial v _ A}より

\frac{\partial v _ B}{\partial p _ A} / \frac{\partial v _ B}{\partial v _ A} = \frac{\partial v _ C}{\partial p _ A} / \frac{\partial v _ C}{\partial v _ A}・・・(5)

(5)の右辺左辺が恒等的に等しいので両辺共通の変数pA、vAだけを変数として持つ関数となる。この右辺左辺を表す共通の関数をuと置くと

\frac{\partial v _ B}{\partial p _ A} + u(p _ A, v _ A)\frac{\partial v _ B}{\partial v _ A} = 0

\frac{\partial v _ C}{\partial p _ A} + u(p _ A, v _ A)\frac{\partial v _ C}{\partial v _ A} = 0・・・(6)

以上より、VBとVCについての偏微分方程式を解けばいいことになった。この解法は一般的に知られていて(例えば参考文献(2))、特性方程式を立てると、

 \frac{dp _ A}{dt} = 1

\frac{dv _ A}{dt} = u(p_ A, v _ A)

 \frac{dp _ B}{dt} = 0

 \frac{dv _ B}{dt} = 0

これらより、上2つの式からf _ 1(p _ A, v _ A) = aとなる(aは積分定数)。また下2つの式から p _ B = b, v _ B = c(b,cは積分定数)となる。よって一般解は、f _ 2(b,c)を任意関数として

f _1(p _ A, v _ A) = f _2(p _ B , v _ B)・・・(7)

(6)の2つ目の式でも同様にして

 \frac{dp _ A}{dt} = 1

\frac{dv _ A}{dt} = u(p_ A, v _ A)

 \frac{dp _ C}{dt} = 0

 \frac{dv _ C}{dt} = 0

よってf _ 3(p _ C, v _ C)を任意関数として

f _1(p _ A, v _ A) = f _3(p _ C , v _ C)・・・(8)

以上より、

f _1(p _ A, v _ A) = f _2(p _ B , v _ B) = f _3(p _ C , v _ C)

すなわち、熱平衡状態において各状態にて圧力と体積を変数に持つ共通の値を取る関数が存在する。この関数が温度であるというわけです。

4.感想

 振り返ってみると至極当たり前のことをやってるだけな気がするのですが、実験事実からなんとなく定義した圧力と体積で表せる「状態」という曖昧な概念について、熱力学第0法則により数式を用いて熱平衡状態における共通の値をとる関数(=温度)の存在を示すことが出来るという点が面白いと思います。なんだか熱力学というよりは関数論的な話っぽいですが、そもそも熱力学の理論構成が数学によって成されており、これはその表れだと思います。「大学からは物理学が数学になる」みたいな話の一端っぽさがありますね。

  状態Aと状態Bで挙動が全く違う場合であっても熱平衡時には温度は共通のパラメータとして使うことが出来ます。この性質を利用してどんな物質に対しても同じ温度計で温度を測ることが出来るとか考えてみると、計測という行為そのものが推移律に立脚してるんだなあということをしみじみと感じます。

5.参考文献

(1) 阿部龍蔵著(2006), 新・演習 熱・統計力学, サイエンス社

(2) 杉山昌平著(1976), 工科系のための微分方程式, 実教出版

プロセスシミュレータCOCOを使ってみる

この記事は圧倒的令和っ!!ぴょこりんクラスタAdventCalender2019のために書いたものです。このアドベントカレンダーが何なのかは主催者様の記事を参照してください。

      

1. はじめに

(1) プロセスシミュレータとは

・プロセスシミュレータとは端的に言うと化学プラントをシミュレートするソフトウェアのこと

・化学プラントと言えば夜景萌え、ではなく化学反応を利用したり不純物を含んだものを精製して化学製品を作るための設備。一つの装置で製品が得られるわけではないので、プラントを構築するには各工程を担う複数の装置を組み合わせ、工程ごとに機械の仕様を決めて目的の品質のものを得るプロセスを設計する必要がある。プロセスシミュレータはその設計を支援する。

・工程の各内容は機能別にモジュールみたいに区切ることができる。

    例として ①反応、②分離、③混合、④蒸発、⑤凝縮 etc...などがあり、これらをモジュールのように組み合わせて製品が出来るまでの工程を設計している。

・このあたりはソフトウェアのオブジェクト指向に通じるものがあるかも。

(2)何をやるか

・化学工場といえばごちゃごちゃしたデカイ機器がいっぱいあるが、ごちゃごちゃした機器同士は配管でつながっていて複数の機器で一つの製造システムを構築してる(各機器を連結して連続したプロセスを構築するのが大量に作るには効率がいい)

・上記のような連続したプロセスを設計するには、原料からスタートするフロー図を書いて化学反応や分離精製工程等を組み合わせて最終的にほしい製品が得られる手順を考える必要がある

・なおかつ各工程で機器に必要な仕様を決めるにはそれぞれ計算しないといけない

・プロセスシミュレータは上記のフロー図作成と機器の仕様決めのための計算を行う総合開発環境みたいなソフトウェア

  

2. プロセスシミュレータCOCOについて

 ・COCOとは・・・こちらを読んでください

 ・かつてはプロセスシミュレータといえば商用のものしかなく、しかもソフトウェアライセンスのお値段がすごい(大学生のときに先生に聞いた話では学内の年間ライセンス料だけで億近くは支払っていたそうな)

 ・COCO使えば機能や扱える物質が限られるが、無償で商用のものと同じようなことができる

 ・みんなもCOCO使えば夢の化学工場をタダで自由に設計できるよ(テキトー)

 ・やろうと思えばドライヤーとか冷蔵庫みたいな電機製品の設計にも使えそう

 ・実はこのソフト2012年くらいからあったらしいけど、私も存在を知ったのはつい先月だったり。大学生のときにこういうのがあれば色々と遊べたのに。

  

3. 目標

・とりあえず今回はYOUTUBEにあったIntroductionに従い実際に使ってみる

      

4. やったこと

(1) COCOのダウンロード

こちらから。インストーラの指示に従うだけですが、COCOに含まれる各計算用のパッケージも忘れずにインストールする

(2) COCOをInstrutionに従い動かしてみる
①扱う物質やパラメータ設定

・Chemsep というCOCOのパッケージに含まれるソフトを使って設定を行う

・ここで間違えると計算が発散したりする。ダメなら別の状態方程式を試す(ちゃんと解説書きたいけど詳しくないので、化学工学用の状態方程式モデルをまとめた文献があれば知りたいところ)

f:id:gofres:20191214225736j:plain

最初に計算する上での設定を行う(扱う物質や使用する状態方程式を指定)

f:id:gofres:20191214230100j:plain

扱う物質の登録
②機器の配置

・メニューに各機器のアイコンがあるのでそれらから選択して置いてつなぐだけ

・今回はINTRODUCTIONに従い、ベンゼントルエン、o-、m-、p-キシレンの混合物から蒸留塔2つ繋いで沸点の小さいベンゼントルエンの順で分離していくだけです

f:id:gofres:20191214230618j:plain

機器を配置する
③仕様決め

・分離には蒸留塔という機器を使いますが、機器の仕様についてはテキトーに入力して後から計算結果を参考に調整します(計算結果出力するとフェンスキの式でソフトが概算してくれるのでそれを参考に調整してもう一回計算する)。

・Instructionと同じ条件で計算回すと発散したので状態方程式を変えるなどして微調整しました。動画の説明時からChemsepのバージョンが更新されて若干仕様が変わっているっぽい(要調査)

f:id:gofres:20191214230913j:plain

上流側から各機器の仕様を入力して計算していく
④完成!

全ての機器について計算して目的の製品が得られていればひとまず完成です

f:id:gofres:20191214230956j:plain

完成!
⑤結果の表示など

・ちょっと違和感もあるけど気にしない

・その他、計算結果をCOCO上でPythonExcelMatlabなどに渡してさらに計算なんてことも出来るらしい。データドリブンでやるような化学プラントの制御手法を組み込んだシミュレーションを試すみたいな使い方も出来る・・・のかな??

f:id:gofres:20191214232205j:plain

蒸留塔各段での各成分の濃度

f:id:gofres:20191214232234j:plain

マッケーブーシール法表示


    

5. 終りに

・使ってみると結構かんたん

・プラントもそうだし、実験室レベルでやってる実験もCOCOでトレースしてみるなど遊び方は色々とありそう

・化学工学から離れて長いけど今後はこれで遊びつつ久々に勉強しようかなと思います