生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Audibleは果たしてどこまで使えるのか?

AmazonにはAudibleと呼ばれるオーディオブックサービスがあり、以前見かけた時に気になっていたので今回どこまで使えるのか試してみました。

f:id:syossan:20180217130245p:plain

オーディオブックとは?

オーディオブックとは、書籍を朗読したコンテンツのことで、国内ではAudibleの他にFeBehontoなどの配信サービスが存在します。

スキマ時間を使って本を聴くことが出来、手が塞がる単純作業の合間を有効活用することが可能となります。

Audibleの使用感

早速、Audibleの使用感についてなのですが、主に以下が挙げられます。

  • 聴いていて違和感の無い朗読
  • 豊富な書籍ラインナップ、だが・・・
  • 声優さんもナレーション

聴いていて違和感の無い朗読

聴き始める前はあまり朗読の質に期待はしていなかったのですが、聴いてみると朗読家の皆さんのレベルが高く、
一部英語になっている箇所については別途外国の方が朗読していたり、特殊な形態の本(単語帳など)はそれぞれの特色に合わせてカスタマイズされていたりします。

また機能として、朗読スピードを0.75倍〜3倍まで調節することが出来ます。
ただ、人間が聴き取れる範囲は2倍が限界な感じがしていて、「2.5倍や3倍を聴き取れる人はいるのだろうか?」と思ったりしたのですが、一応そういったハイスピード朗読も存在します。

f:id:syossan:20180217133728j:plain:w300

豊富な書籍ラインナップ、だが・・・

Audibleにある書籍のラインナップですが、これがなかなか豊富にあります。

f:id:syossan:20180217133805j:plain:w300

特に小説は古いものから新しいものまで種々様々揃っている印象を受けました。

アニメ化もされた柳広司先生のジョーカー・ゲームがあったのですが、この本を渋い声で朗読されるとたまらないものがありました。
ちなみに、こちらは続編のダブル・ジョーカーや、パラダイス・ロスト、ラスト・ワルツもあります。

また、全体を眺めるとラノベや英語に関する書籍も豊富に存在します。

あとは、意外な所でアダルトカテゴリーが豊富です。
男性向け・女性向けともにコンテンツが用意しており、驚きました。

f:id:syossan:20180217133830j:plain:w300

ただし、問題点として一部カテゴリーが機能していないという面もあります。
一例として、「科学・テクノロジー」というカテゴリーがあるのですが、あまり書籍数が無いように見受けられます。

声優さんもナレーション

書籍を探していてビックリしたのですが、一部の本では声優さんがナレーションしているものもあります。
数は決して多くはないのですが、釘宮 理恵さんや大塚 明夫さんなどの大御所もナレーションしているものもあります。

f:id:syossan:20180217134036p:plain

声優さんの聞き慣れた声で体験するオーディオブックは、また格別なものがありますのでファンの方は一ヶ月のお試し期間中に試してみるのもいいかもしれません。

まとめ

このような感じの使用感になります。

書籍のラインナップに偏りがある感じがしますので、人によっては使えると言えるかもしれません。
英語学習者や、小説・ラノベ好きな方はAudibleがフィットする可能性は大のような気がします。

というわけで、以上ザッと試してみた感想でした。

【Go】Unixドメインソケットでのinterruptを使った終了処理

GoでUnixドメインソケットを組んでいる時に、掲題が疑問だったので調べてみました。

Why?

最初このようなListenerのコードを書いていました。

単純に net.Listen/tmp/connection.sock をlistenして、 listener.Accept でコネクションを待ち受けているという非常に簡単なコードです。

で、このプログラムを普通に動かしてSIGINT Signal で割り込みすると、本来削除されるべきsocketファイルが存在したままとなり、再度プログラムを動かすとエラーとなります。

これをどうにかしたかったのですが、 listener.Accept で待ち受けている状態で、どうやったら signal.Notify で受け取ったシグナルを元にプログラムを終了させるのか、パッと考えつきませんでした。

How

インターネットをふらついていると、以下のようなコード片を発見しました。

golang unix domain socket · GitHub

このコード片の server.go にお目当てのコードがありました。

どういうことかというと、メインのスレッドは listener.Accept で待ち受けておいて、goroutineで作った新しいスレッドでSIGINT Signalをキャッチして、プログラムを終了させるという流れです。

goroutineのスレッド側でSignalをキャッチする、というのがちょっと思いつきませんでした。

kirimori v0.0.4 update

OSSメンテしないとな〜と突然意欲が湧いてきたのでやりました。

github.com

内容

vim pluginの検索機能をつけました。
こんな感じのやつです。

$ kirimori search Shougo
Total: 52

Plugin Name                        Short Description
shougo/unite.vim                   🐉  Unite and create user interfaces
shougo/vimproc.vim                 Interactive command execution in Vim.
shougo/neocomplete.vim             Next generation completion framework after neocomplcache
shougo/neosnippet-snippets         The standard snippets repository for neosnippet
shougo/neomru.vim                  MRU plugin includes unite.vim/denite.nvim MRU sources
shougo/neosnippet.vim              neo-snippet plugin
shougo/neocomplcache.vim           Ultimate auto-completion system for Vim.
shougo/vimshell.vim                🐚  Powerful shell implemented by vim.
shougo/unite-outline               outline source for unite.vim
shougo/vimfiler.vim                📁  Powerful file explorer implemented by Vim script
shougo/deoplete.nvim               🌠  Dark powered asynchronous completion framework for neovim/Vim8
shougo/neoyank.vim                 Saves yank history includes unite.vim history/yank source.
shougo/neoinclude.vim              Include completion framework for neocomplete/deoplete
shougo/context_filetype.vim        Context filetype library for Vim script
shougo/unite-help                  help source for unite.vim
shougo/vinarise                    Ultimate hex editing system with Vim
shougo/vinarise.vim                Ultimate hex editing system with Vim
shougo/unite-session               unite.vim session source
shougo/junkfile.vim                Create temporary file for memo, testing, ...
shougo/echodoc                     Print documents in echo area.

他所様のAPIを叩いているため、上位20件しか表示されません。ご了承下さい。

今後

細々とメンテしたいとは思ってます。
何か欲しい機能とかありましたらISSUEに書いて頂けるとありがたいです。

自作ツールをHomebrewに登録したい人生だった

ふと思い立って、「Homebrewに自作ツールを登録してみよう!」とやってみました。

結論から言うと敗北です、ありがとうございました。

成り行き

登録にはFormulaを作成する必要があるのですが、それ自体は簡単でした。

登録したいツールのURLを指定して create

$ brew create http://github.com/syossan27/kirimori

生成されたFormulaをよしなに変更して、

 class Kirimori < Formula
   desc "Tool for managing vim plugin"
   homepage "https://github.com/syossan27/kirimori"
   url "https://github.com/syossan27/kirimori/archive/v0.0.2.tar.gz"
   sha256 "0d35dfaad86ac8a781f134cd8ed4884869a633881c249cae98ca24f4c00b2262"
   head "https://github.com/syossan27/kirimori.git"
   
   depends_on "dep" => :build
   depends_on "go" => :build
   def install
     ENV["GOPATH"] = buildpath
     (buildpath/"src/github.com/syossan27/kirimori").install buildpath.children
     cd "src/github.com/syossan27/kirimori" do
       system "dep", "ensure"
       system "go", "build", "-o", bin/"kirimori"
       prefix.install_metafiles
     end
   end
   
   test do
     system "#{bin}/kirimori", "--version"
   end
 end

一応、作ったものをテストして

$ brew audit kirimori --struct

PRを投げてみました。

github.com

敗北

PR投げたんですが、テストがfailで返ってくるのでなんじゃらほい?と調べてみると、以下のコマンドを実行して落ちていました。

$ brew audit kirimori --new-formula
kirimori:
  * GitHub repository not notable enough (<20 forks, <20 watchers and <50 stars)

はい、原因は ツールの注目度が足りない という理由でした。
homebrewにrepositoryを登録するには以下の条件を満たす必要があるみたいですね。

  • fork数、watchersのいずれかが20以上
  • star数50以上
  • リポジトリ作成から30日が経過している

悲しいなぁ。
というかPRのテンプレート文言にそれを書いていて欲しかった。

というわけで敗北です。