PHPサイエンス・ワールド新書のリスト(Kindle Unlimited対象多数)

Amazonプライムデー関連でKindle Unlimitedを99円で3ヶ月間利用できるキャンペーンが先日まで実施されていて、利用を開始。Unlimited対象本を漁ってたらPHPサイエンス・ワールド新書既刊78冊のうち48冊がUnlimitedで利用できることがわかったので、自分用にリスト。

このシリーズは2009年9月に始まり、2014年3月のNo. 078を最後に続刊してないみたい。

特記事項 番号 タイトル 著者 ジャンル
Kindle版なし 078 人体に危ない細菌・ウイルス 食中毒・院内感染・感染症の話 小林一寛
Kindle版なし 077 家電の科学 ここまで進化した驚異の技術 山名一郎
Kindle版なし 076 「金縛り」の謎を解く 夢魔・幽体離脱・宇宙人による誘拐 福田一
Kindle版なし 075 人体特許: 狙われる遺伝子情報 五十嵐享平
Kindle版なし 074 元素はどうしてできたのか 櫻井博儀
- 073 有害化学物質の話 井田徹治 都市開発・都市問題
- 072 頭がよくなる1分実験[物理の基本] 左巻健男 物理学
Unlimited対象外 071 群れは意識をもつ 郡司ペギオ-幸夫 生物・バイオテクノロジー
- 070 腰痛をこころで治す心療整形外科のすすめ 谷川浩隆 医学・薬学
- 069 ドキュメント 遺伝子工学 生田哲 生物・バイオテクノロジー
Unlimited対象外 068 無限と有限のあいだ 芳沢光雄 数学
Unlimited対象外 067 ABC予想入門 黒川信重 小山信也 数学
- 066 [図解]鉄道の技術 秋山芳弘 建設・土木
- 065 新しい超伝導入門 山路達也 物理学
Kindle版なし 064 なんでもカロリー換算 竹内薫 丸山篤史
- 063 水の危機をどう救うか 丹保憲仁 建設・土木
- 062 空飛ぶ納豆菌 岩坂泰信 地球科学・エコロジー
Kindle版なし 061 直観で解く算数 岡部恒治 数学
- 060 からだに、ありがとう 1億人のための健康学講座 伊藤裕 やくみつる 家庭医学・健康
Unlimited対象外 059 ダークマターとは何か 天の川銀河探査で挑む宇宙論最大の謎 郷田直輝 宇宙学・天文学
- 058 ウナギ 大回遊の謎 塚本勝巳 生物・バイオテクノロジー
- 057 「あまった食べ物」が農業を救う ウンコと生ゴミを生かす循環社会 山田浩太 農学
- 056 毒 青酸カリからギンナンまで 船山信次 基礎医学
Unlimited対象外 055 利己的遺伝子から見た人間 愉快な進化論の授業 小林朋道 基礎医学
Kindle版なし 054 [図解]スマートフォンのしくみ 井上伸雄
- 053 放射性物質の正体 山田克哉
- 052 透明人間になる方法 スーパーテクノロジーに挑む 白石拓 工学
- 051 細胞が自分を食べる オートファジーの謎 水島昇 生物・バイオテクノロジー
- 050 海底ごりごり 地球史発掘 須藤斎 海洋学
- 049 知らないと怖い閉塞性動脈硬化症 池田宇一 宮下裕介 医学・薬学
- 048 数学で未来を予測する ギャンブルから経済まで 野﨑昭弘 数学
Kindle版なし 047 生物のなかの時間 西川伸一 倉谷滋 上田泰己
- 046 噛めば脳が若返る 小野塚實 暮らし・健康・子育て
Unlimited対象外 045 がんになったら肉を食べなさい がんに勝つ栄養の科学 溝口徹 医学・薬学
Unlimited対象外 044 地理と気候の日本地図 地元の常識、驚くべき数字を知る 浅井 建爾 地球科学・エコロジー
Kindle版なし 043 物理学の原理と法則 池内了 物理学
- 042 認知症の正体 診断・治療・予防の最前線 飯島裕一 佐古泰司
Kindle版なし 041 スーパーアース 井田茂
Kindle版なし 040 宇宙137億年のなかの地球史 川上紳一
- 039 ダンゴムシに心はあるのか 新しい心の科学 森山徹 心理学
- 038 子どもの脳によくないこと 赤ちゃん学、脳科学を生かす子育て 西行 妊娠・出産・子育て
- 037 地球200周! ふしぎ植物探検記 山口進 生物・バイオテクノロジー
Kindle版なし 036 物理学はこんなこともわからない 川久保達之 物理学
- 035 世界に勝てる! 日本発の科学技術 志村幸雄 工学
Kindle版なし 034 数学に恋したくなる話 秋山仁 松永清子
Kindle版なし 033 日本人のための科学論 毛利衛
- 032 自然現象はなぜ数式で記述できるのか 志村史夫 物理学
- 031 東大博士が語る理系という生き方 瀬名秀明 池谷裕二 科学・テクノロジー
Unlimited対象外 030 人はなぜ数学が嫌いになるのか 芳沢光雄 数学
Unlimited対象外 029 相対性理論から100年でわかったこと 佐藤勝彦 物理学
Kindle版なし 028 なぜ、歩くと脳は老いにくいのか 久恒辰博
Unlimited対象外 027 量子力学はミステリー 山田克哉
- 026 生きもの上陸大作戦 絶滅と進化の5億年 中村桂子 板橋涼子 基礎医学
- 025 父親として知っておきたい理科の常識 目時伸哉 科学・テクノロジー
- 024 土の科学 いのちを育むパワーの秘密 久馬一剛 農学
- 023 中学受験理科の王道 鎌田浩毅 岸本利久 八木秀次
Kindle版なし 022 エッシャーとペンローズ・タイル 谷岡一郎
- 021 不可能を可能にする 視力再生の科学 坪田一男 医学・薬学
Kindle版なし 020 物理を知れば世の中がわかる 竹内淳 物理学
- 019 粘菌 その驚くべき知性 中垣俊之 生物・バイオテクノロジー
Unlimited対象外 018 知らないと怖い血管の話 心筋梗塞、脳卒中はなぜ突然起きる? 高沢謙二 医学・薬学
- 017 原発とプルトニウム パンドラの箱を開けてしまった科学者たち 常石敬一 工学
- 016 暗算力を身につける 栗田哲也 数学
- 015 脳のなかの匂い地図 森憲作 基礎医学
- 014 ロボットは涙を流すか 映画と現実の狭間 石黒浩 池谷瑠絵 工学
- 013 会社の数字を科学する すっきりわかる財務・会計・投資 内山力 実践経営・リーダーシップ
- 012 時間はなぜ取り戻せないのか 橋元淳一郎 物理学
- 011 はじめてのトポロジー 瀬山士郎 数学
- 010 見た目の若さは、腸年齢で決まる 辨野義己 医学・薬学
- 009 学校では教えてくれないオモシロ科学実験 篠原功治 科学・テクノロジー
- 008 笑う科学 イグ・ノーベル賞 志村幸雄 本・図書館
- 007 破られた対称性 素粒子と宇宙の法則 佐藤文隆 物理学
- 006 動物たちの反乱 増えすぎるシカ、人里へ出るクマ 河合雅雄 林良博 河合雅雄 林 良博 農学
Kindle版なし 005 数学が歩いてきた道 志賀浩二 数学
- 004 寿命はどこまで延ばせるか? 池田清彦 基礎医学
- 003 環境を知るとはどういうことか 流域思考のすすめ 養老孟司 岸由二 都市開発・都市問題
- 002 なぜ飼い犬に手をかまれるのか 動物たちの言い分 日高敏隆 ビジネス・経済
- 001 あなたにもわかる相対性理論 茂木健一郎 物理学

Jekyll 2.0 の新機能を触ってみた

Jekyll 2.0 が正式リリースされたので触ってみた。特に気になった機能3つについてざっくりと。以下 2.0.2 で確認。

  1. Collections
  2. Sass/SCSS と CoffeeScript サポート
  3. 追加フィルター where/group_by

Collections

従来の postpage に加え、文書タイプをユーザが定義できるようになった。例として clip という文書を定義してみる。

_config.yml

collections:
  clip:
    output: true
    example: This is an example!!

_config.yml で設定したデータは site.collections.clip から、YAML front-matterの情報は従来通り page から利用できる。

_clip/new-clip.md

---
title: 今日のクリップ
date: 2014-05-07 20:00
---

## {{ page.title }}({{ page.date }})

* [Jekyll turns 2.0.0](http://jekyllrb.com/news/2014/05/06/jekyll-turns-2-0-0/)
* {{ site.collections.clip.example }}

関係するファイルの部分的なツリー。

jekyll_project
├── _clip
│   └── new-clip.md
└── _config.yml

この例では _config.ymloutput: true と設定したので _site/clip/new-clip.html として出力される。

output: false(デフォルト)の場合、ページは生成されない。他のページの部品として使うことを想定しているのだろう。複数の著者がいるサイトで各著者の紹介文を Collection として作っておき、ポストのメタデータで対応させて取り込むようなケースなど。

なお Collections は実験的機能で、今後 API 変更の可能性があるそうなので注意。

参照 http://jekyllrb.com/docs/collections/

Sass/SCSS サポート

Sass/SCSS のビルドがサポートされた。例えば css/main.scss というファイルを作ると jekyll build の際に _site/css/main.css に自動変換される。ただし *.scss には空の YAML front-matter (ハイフン*3を2行)を入れる必要がある。

今のところ通常ディレクトリでは *.sass (インデント記法で書けるもの)が CSSレンダリングされない(そのままコピーされてしまう。後述の _sass/ 配下では使える)。

css/main.scss

---
---

body {
  background: hsla(0, 50%, 50%, 1);
}

これとは別に _sass/part.sass を作成すると、さきほどの main.scss からインポートできるようになる。こちらに ハイフンのヘッダを書くとエラーになる

_sass/part.sass

p
  color: red

css/main.scss

---
---

@import "part"

body {
  background: hsla(0, 50%, 50%, 1);
}

_config.yml で sass オプションを指定できる。 sass_dir でインポート用のファイルを置くディレクトリ名を指定(デフォルトは _sass)、style で出力スタイル指定など。

sass:
  sass_dir: _your_sass_dir
  style: compressed

関係するファイルの部分的なツリー。

jekyll_project
├── _sass
│   └── part.sass
└── css
    └── main.scss

参照 http://jekyllrb.com/docs/assets/

CoffeeScript サポート

CoffeeScript のビルドもサポートされた。こちらもハイフンのヘッダを入れる必要がある。

js/main.coffee

---
---

main = ->
  console.log 'ready.'

main()

Liquid フィルター wheregroup_by

Liquid 出力タグ(Output tags)のフィルターとして wheregroup_by が追加された。site を Root とするツリーオブジェクトのメンバーをフィルタするもの。

まず where から。例えば {{ site.posts | where:"author":"cu39" }} とすると、YAML front-matter に author: cu39 と書いてあるポストだけを抽出できる。

ただしこの例は Jekyll::Post オブジェクトの配列が返ってくることになる。これを自前のフィルタでさらに加工する。

_plugins/my_filter.rb

module Jekyll
  module MyFilter
    def list_titles(posts)
      posts.map do |post|
        %(<li><a href="#{post.url}">#{post.title}</a></li>\n)
      end
    end
  end
end

Liquid::Template.register_filter(Jekyll::MyFilter)

そして、特定の著者の記事だけを並べるページ cu39.html を用意したりして

<h3>cu39 が書いた記事</h3>
<ul>
{{ site.posts | where:"author":"cu39" | list_titles }}
</ul>

みたいな使い方ができそう。

group_by のほうは、{{ site.posts | group_by:"author" }} とすると以下のような構造が返ってくる。

[
  { "author" => "cu39", "items" => [...] },
  { "author" => "someone", "items" => [...] }
]

こちらは1枚のページに著者ごとにポストを並べるような用途に使えそう。

Liquid をあまり使いこんでないので、もっといい使いどころがあったら教えてください。

参照 http://jekyllrb.com/docs/templates/

Webアプリのモックアップ作業土台を作る その3 Sass Source Map

その1その2 Sprockets の続きです。が、今回の作業は その1 の途中からブランチしてます。

Google Chrome の Dev Tools は Sass/SCSS の Source Map に対応しているので利用できるようにしてみます。が、Source Map は仕様も実装も流動的な状態で、環境によって動作しない可能性も大ありなので、あくまで参考まで。

リポジトリ上では Sprockets も Bootstrap も Compass も導入する前の段階からブランチを生やしました。

新仕様と旧仕様

CSS リクエストへのレスポンスでブラウザに Source Map の位置(パス)を知らせる必要があり、その方法は2種類あります。

  1. レスポンスの HTTP ヘッダで渡す
  2. ボディ内のコメントで渡す
続きを読む

Webアプリのモックアップ作業土台を作る その2 Sprockets

前回のつづき。

前回作った作業台に Sprockets を導入して assets 提供を分離します。といっても Sprockets 使っていくかどうか自分でも確信持ててないのでリポジトリではブランチにしておきました。

Sprockets を導入するメリットとしては、このままデプロイするケースを視野に入れたときに圧縮機能を追加しやすかったりプリコンパイルできたりするところでしょうか(どちらも今回はやってません)。

というわけで、まずは Gemfilesprockets 関連の gem を追加して bundle

gem 'sprockets'
gem 'sprockets-helpers'
gem 'sprockets-sass'
続きを読む

Webアプリのモックアップ作業土台を作る その1

Slim, Sass/SCSS, CoffeeScript が使えて Livereload してくれるフロント周辺の作業環境がほしいと思いながらも自分にしっくりくる構成ができなかったんですが、最近 rack-livereload を見つけてピースが埋まった感じがしたのでまとめます。

記事を書くにあたり naoya さんのひな型に大いに影響されてますが、ここでは npm でインストールするのは bower だけにして基本的には Sinatra と Guard に任せています。

Sinatra, Slim, Sass, CoffeeScript

土台の土台としてシンプルな Sinatra アプリから。Gemfile を書いて bundle

Gemfile

source 'https://rubygems.org'

gem 'sinatra'
gem 'sinatra-contrib'
gem 'sass'
gem 'slim'
gem 'coffee-script'

group :develoopment do
  gem 'shotgun'
  gem 'thin'
end

workbench.rb

require 'sinatra/base'
require 'sinatra/reloader'
require 'slim'
require 'sass'
require 'coffee-script'

class Workbench < Sinatra::Base
  configure :development do
    register Sinatra::Reloader
  end

  get '/' do
    @title = 'Index'
    slim :index
  end

  get '/css/application.css' do
    sass :application
  end

  get '/js/application.js' do
    coffee :application
  end
end

views/layout.slim

doctype html
html
  head
    title= @title + ' | Site Workbench'
    link href="/css/application.css" rel="stylesheet"
  body
    == yield
    script src="/js/application.js"

views/index.slim

h1 Workbench
p Workbench for my site.

views/application.sass

body
  background: hsl(0, 0%, 90%)

views/application.coffee

() ->
  'Hoge'

config.ru

require 'bundler'
Bundler.setup
require File.expand_path(File.join('..','workbench'), __FILE__)
run Workbench

これで bundle exec shotgun --server=thin --port=3000 するとサーバーが立って、とりあえずプレビューできます。コマンド名が気持ちいい shotgun

Guard, guard-livereload, rack-livereload

Livereload 環境にするため guard, guard-livereload, rack-livereload を導入。rack-livereload があればブラウザ拡張は必要ありません。

続きを読む