dorapon2000’s diary

忘備録的な。セキュリティとかネットワークすきです。

紙の本と電子書籍の使い分け

紙の本を買うべきか、電子書籍を買うべきか、本を買ったことがある人は誰もが一度は悩むと思います。自分もずっと答えが出せないまま、今でも悩んでいます。

使い分け方もいろいろあると思います。

  • どこでも読めるから
  • 場所を取らないから
  • 電子書籍のマーカーやメモ機能が便利だから
  • 値段が少し安いから
  • 寝ながら読めるから

電子書籍

  • 手に馴染んで前後のページを行き来したり、特定のページを開きやすいから
  • 所有欲が満たされるから
  • 1つのインテリアになるから
  • 人に貸せるから
  • 中古でも揃えられるから

⇒ 紙の本

自分の性格上、購入基準が統一されていないともやもやします。前買った本は電子書籍なのに、このどうしてもほしいこの本はなぜ紙で買いたいと思ってしまうのか。どちらかに揃えないと気になる。分けるなら理由がいる。好きな本だけ手元に置くというのは理想的ですが、好きかどうかは読んでみないとわかりません。内容がわからないうちにどちらかを選択する必要があります。

現状の自分なりの使い分け方を残しつつ、思考の整理をします。ここでの電子書籍Amazon Kindleとします。

本を3分類する

まず3つに分けます。

電子書籍がない本はもう紙の本買うしかないですね。ただ、kindleになくても出版社のホームページに行くと、案外電子書籍が販売されていたりします。データさえあればkindleにインポートできますが、PDFで取り込んだ場合マーカーがうまく機能しません。マーカーは電子書籍のメリットなので、それが引けないなら自分は紙にします。

電子書籍だと読みづらい本があります。例えば、1ページが文字ではなく画像として取り込まれていると、文章が小さく読みづらいです。マーカー機能も使えません。大きめの本やムック本によくあります。こういうのも実質紙の本一択だと思います。

今回話題にしたいのはそれ以外ですね。

買ってもいつかは手放すだろう本

〇〇入門や新書、漫画、などは自分はいつか手放します。引っ越しのときの荷物整理や、入門の次の本を買って入門の内容を含んでいる、好奇心で買ったけど1回読めればそれで十分、などの理由です。ただ捨てるくらいなら、場所も取らない電子書籍で持っておきたいです。検索のノイズにはなりますが、電子書籍で持っててタイトルを覚えていたおかげで人におすすめできたりします。

これが、自分のもつ使い分けの一番大きな指針です。

技術書

技術書は重いので、どちらで持つかは結構人によると思います。自分は紙の本派です。

仕事中さっとディスプレイに並べて読みたいとき、やはり本のお手軽感が強いです。技術書は割とレイアウトありきの読みやすさだと思っているので、その点も紙の本がいいです。あと、技術書が並ぶ本棚はカッコいいです。

漫画

電子書籍で買います。理由は「買ってもいつかは手放すだろう本」に自分の中で分類されるからです。単純に巻数が多いとすぐかさんで本棚を圧迫しますからね。本当に好きな作品だけ精神安定剤だと思いながら紙の本で買います。

悩みの種が、漫画は中古のほうが安いことで、中古で買うと必然的に紙になります。つまり、紙の本と電子書籍が入り乱れます。ほんとどうすれば......

小説

紙の本で買います。理由は小説が好きだからです。

漫画のように中古で小説を買うことに全く躊躇はありません。手放すくらいなら本棚を増やすか、小説以外を手放してスペースを作ります。

専門書

技術書以外の専門書(学術書)ですね。社会学とか法学とか興味が高じてたまに買います。その場合、紙の本です。新書と違って、高い分雑に手放したりしないですし、専門書は紙がいいという思い込みがあります。

ビジネス書

電子書籍で買っていますが、よくわかりません。紙の本と電子書籍を買うか迷走していた昔の自分が、とりあえず電子書籍で買い続けていたので、統一するために今でもという感じです。ビジネス書は新書と似ているので電子書籍でいいのかもしれませんし、専門書と似ているので紙の本がいいのかもしれません。使い分けに統一的な理由を与える際の鬼門です。

同人誌

特に漫画やイラスト集に限らず、技術書も含めた同人誌全般です。同人誌を購入する場合送料がかかり、本の値段によりますが、結構な割合になります。自分の読書体験より先に本の値段を気にしたくはないのですが、結局自分は電子書籍で購入することが多いですね。

最後に

以前ブックメーターというサイトで、「紙の本と電子書籍どちらを買うか」のようなスレッドを立てて回答を募ったことがあります。やはり本好きが集まるサイトなので紙の本派が多かったです。自分はここで話したように使い分けていますが、まずは紙の本から検討します。やっぱり紙の本のあの手触りとか本棚とかが好きなんです。

しかし、もし庭から石油が湧き出たとしても、すべて紙の本で揃えるとはならないなとも思っています。電子書籍電子書籍で魅力的です。やはり、紙の本と電子書籍を格安セットで購入できるラムダノートのような形式がもっと広まって欲しいです。需要ないんですかね。

Perlのfalsyな値の==とeqによる比較結果

Perlのfalsyな値を比較した時、True/Falseのどちらになるか整理します。検証するfalsyな値は以下の4つです。

  • 空文字""
  • 数字の0
  • 文字列の"0"
  • undef

検証コードはGitHubにあげています。

github.com

検証環境

==で比較

==は数字が等しいかの判定に使う演算子です。

f:id:dorapon2000:20220330234747p:plain

結果は明快で、すべてがTrueになりました。表のうち*をつけたところは数字の比較ではないという警告が出ました。0と"0"の比較だけは数字の比較とみなしてくれたみたいです。

eqで比較

eqは文字列が等しいかの判定に使う演算子です。

f:id:dorapon2000:20220330234757p:plain

こちらは、"0"と空文字""の2グループに分けて考えられそうです。数字の0と文字列の0は"0"のグループ、空文字""とundefは空文字""のグループで、同じグループ同士のeqはTrueになり、そうでないならFalseでした。*が付けている部分は、比較にundefを扱う部分で、変数を初期化していないという警告が出ました。

❯ perl -E 'say undef'

undefは出力すると何も表示されないので、空文字と同列というのはわかる話です。

()について

空Arrayの()もfalsyな値です。ただ、空Arrayは実質undefなので、結果中はundefとしてまとめています。

say(defined ()    ? 1 : 0); # -> 0
say(defined undef ? 1 : 0); # -> 0
say(defined ""    ? 1 : 0); # -> 1
say(defined "0"   ? 1 : 0); # -> 1
say(defined 0     ? 1 : 0); # -> 1

# my @l = ();
my @l = undef;
$l[0] = "Hello";
say $l[0]; # -> Hello

Twitterのリストをサブアカウントにコピーできるサービスをリリースした

リリースしたといいつつ、もう公開して3ヶ月ほど経ちます。リスト移動とアンドロイドを掛けたListIDOというサービスです。自分がほしいからと、勉強も兼ねて作ったサービスですが、作ったからには自分と同じ悩みを抱えている人(いるかわからないけど)にも知ってもらいたいと思い、この記事で紹介します。

listido.dorapon2000.xyz

f:id:dorapon2000:20220224233212p:plain

そもそもリスト機能とは

リストについて - Twitterヘルプセンター

Twitterの機能の1つで、アカウントのグループやフォルダみたいな機能です。友達アカウントのリストや趣味に関するアカウントのリストなどを作成して、TLのようにできます。

リスト機能は自分が使っているTweetDeckというTwitterクライアントと組み合わせた時に本領を発揮します。TweetDeckはTwitterの公式が提供しているWebサービスのため怪しいものではありません。

https://tweetdeck.twitter.com/

画像を見ればわかりますが、カラム形式にいくつもTLを作り出せます。TL以外に通知やアクティビティを並べたりもできますし、複数アカウントを管理することもできます。Twitter公式が提供しながらなぜか広告も一切表示されません。Twitter本家の機能が遅れて実装されるという欠点もありますが、PCでTwitterをするなら正直使わない手はないと思っています。

さて、このTweetDeckでカラムを作り出す方法として先程のリスト機能と相性がいいです。例えば、自分のTL、友達のリスト、趣味のリストと横に並べて一度に眺められます。複数アカウントでログインできることと組み合わせて、例えば、アカウントAのリストαとアカウントBのリストβを並べて表示できます。自分はそうやっていくつものリストを横に長々と並べています。

リストの引っ越し問題

ここからが自分の抱えていた問題で、かつてアカウントAで作成した趣味のリストを、趣味アカウントBを作ったからそちらに移行したいと思うことがありました。大抵そういうときは引っ越し用のツールがありますが、リストを移動する機能があるツールは見つかりませんでした。アカウントBで一から同じリストを作ることもできますが、100以上のアカウントを登録するのは大変です。

「#ないなら作ればいいじゃない」ということで自分で作ろうと思ったのがListIDOというサービスになります。

ListIDOでできること

次のような場面の利用を想定しています。

  • サブアカウントを本アカウントに統合するために、サブアカウントが所有しているリストを本アカウントに移動したい
  • サブアカウントにも本アカウントと同じリストを作成したい
  • 自分が公開しているリストと同じものがほしいと友人に言われた
  • 同じリストを同じアカウントにコピーして、オリジナルとは違ったふうにカスタマイズしたい

ListIDOでできないこと

  • 三者のアカウントが所有するリストと同じリストを自分のアカウントにもほしい
  • 自分がフォローするリストをアップロードしたい

つまり、リストの移動元と移動先アカウントはどちらも自分が所有している必要があるということです。

ListIDOの詳しい使い方

グーグルスライドを作っているので、そちらを御覧ください。

FAQも用意しています。

https://listido.dorapon2000.xyz/faq

紹介は以上です。

Pythonで2列をテーブルのようにprintする

tabulateのような、テーブル表示をするためのライブラリもありますが、フォーマット文字列だけでも縦を揃えられます。ただし、日本語が入ると揃いません。

def print_align_left(label, value):
    print(f'{label:<20}: {value}')

# ラベルを右寄せ
def print_align_right(label, value):
    print(f'{label:>20}: {value}')


print_align_left('Country', 'Japan')
print_align_left('Anthem', 'Kimigayo')
print_align_left('Capital', 'Tokyo')
print_align_left('National language', 'Japanese')
print_align_left('Area', '377,975 km2')
print_align_left('Population', '126,226,568')

print('\n' + '*' * 40 + '\n')

print_align_right('Country', 'Japan')
print_align_right('Anthem', 'Kimigayo')
print_align_right('Capital', 'Tokyo')
print_align_right('National language', 'Japanese')
print_align_right('Area', '377,975 km2')
print_align_right('Population', '126,226,568')
Country             : Japan
Anthem              : Kimigayo
Capital             : Tokyo
National language   : Japanese
Area                : 377,975 km2
Population          : 126,226,568

****************************************

             Country: Japan
              Anthem: Kimigayo
             Capital: Tokyo
   National language: Japanese
                Area: 377,975 km2
          Population: 126,226,568

github.com

参考

Python spacing and aligning strings - Stack Overflow