constの扱いを見直す

ある案件中にちょっとした気づいたことを記述いこうと思います。

constの扱い方

ES6から導入されたlet, constですが、使い方・認識が間違っていました。

再宣言はできない

これは当たり前ですよね。

let hoge = 100;
let hoge = 200;

// Uncaught SyntaxError: Identifier 'hoge' has already been declared
// 再宣言しようとするとエラーが発生。constでも同様

constの場合は再代入ができない

const piyo = 100;
piyo = 200;

// Assignment to constant variable.
// 再代入しようとするとエラーが発生

再代入できないのは分かった。んじゃ、配列やオブジェクトも?

配列の場合

const huga = [100];
huga.push(200)

console.log(huga)
// [100, 200]
// あれ、変更できるや〜ん

オブジェクトの場合

const moge = {x: 100};
moge.y = 200

console.log(moge)
// {x: 100, y: 200}
// あれ、追加されてるや〜ん

注目すべきは再代入はできないが。。。

注目すべきは再代入はできないが、不変ではないということ。 const - JavaScript | MDN

const 宣言は、値への読み取り専用の参照を作ります。その値が不変ということではなく、その変数識別子が再代入できないというだけです。たとえば、定数がオブジェクトのコンテンツの場合、オブジェクトのコンテンツ(例 その引数)自体は変更可能です。

MDNのリファレンスにもちゃんと書いてありました。しかも、『不変ということではなく』の「なく」が太文字になっていました。。。

オブジェクト・配列を不変なものにするには

オブジェクトの場合

Object.freeze()を使うこと不変なオブジェクトに変更することが可能のようです。

const foo = {x: 100, y: 200};
Object.freeze(foo);
foo.z = 300;
console.log(foo)
// {x: 100, y: 200}
// おぉ、追加されていない

配列の場合

JavaScriptでconstの配列の値が変わる理由と変更しない方法 | iwb.jp こちらのサイトさんによると不変なオブジェクトにしてから、配列にすることで不変な配列にすることが可能のようです。 ちなみに上記のサイトさんで開発者ツールを開くとおもしろいメッセージが表示されました。気になる人は確認してみてください。

const bar = [100, 200, 300];
const arrObj = bar.reduce(
  (a, c, i) => Object.assign(a, {[i]: c}), {}
);
Object.freeze(arrObj);
arrObj.hoge = 400;
console.log(Object.values(arrObj));
// [100, 200, 300]
// おぉ、配列でも変更されていない

まとめ

  • constは再代入不可だが、不変ではない
  • Object.freezeを活用することでオブジェクト、配列を不変にすることが可能
  • jsの簡単な動作確認は開発者ツールが最強!

参考

初の一人暮らしから1年経過。これから一人暮らしする人へアドバイス。

2019年が始まりすでに3ヶ月が経ちました。 あと一ヶ月もすれば、多くの企業・学校では新年度となることでしょう。 私にもつい後輩が入ってきます。不安のほうが大きいです。 いわいるベンチャー企業と呼ばれる企業なのでやる気に満ちた新人が入ってくることでしょう。 そんな人達に何も教えられない気がする。不安。

一人暮らしを初めて1年

かくゆう私も去年の3月末に地元の岩手から東京に上京してから1年が経とうとしています。 バタバタしているうちに始まった一人暮らしでしたが、なんとか生きてます。 そんななんとか生きてきた1年で得た生活の知恵などをどっかの誰かに見ていただいたら嬉しいです。 つい先日もtogetterで話題になっていたひとり暮らしする人へ『ソファは一旦買わない』を含むアドバイスと経験者からの反応「実家の食器を10年使うのはガチ」 - Togetterという記事には共感しかできなかったです。 ちなみに私はケチな部分があるので、一般の人と違った感覚を持っている部分もあります。 どこまで許容できるかは皆さんの気持ちしだいということで。 思いついた限り書いていきたいと思います。

必要なものは最低限で。

一人暮らしになるとつい、羽を伸ばしたくなるかと思います。社会人となると給料という形で学生時代とは変わって大金が入ってくるかたも多いでしょう。 そのため、今まで買えなかったものやお金を得た余裕からつい財布がゆるくなってしまいます。 私の場合は、上記でも書いてあるようにケチなので、「なくても不便ではないでしょう」と判断したら買うのをやめてしまいます。 実際、家にゴミ箱やバスマットがないくらいですから。。 ゴミ箱はゴミを出すようのゴミ袋に、生ゴミは冷凍庫の一部にスペースを確保し、ゴミ出しまで凍らせておきます。 バスマットについては、バスタオルで十分です。 冬になり、こたつを買うまでは机がありませんでした。。。 これには以下の理由があります。 - 現状、そこまで不便ではないのでとりわけ必要がない - 次の引っ越しを考えた際に準備の手間を減らしたい - そもそも物に溢れた部屋が好きではない - お金を貯めたい このような理由から頭の中で脳内断捨離を行っています。

時間を有効的に使う

これは社会人に言えることですが、大学時代と比べて全く生活が変わります。がちです。 大学生のときは休講日や授業の開始時間が遅いこともあり、ゆっくり起きて、準備してとかやっていましたが、 社会人になると全く違います。規則正しい生活が求められます。 また、休みも学生時代と比較して少なくなるため休みをいかに有効に活用するかも必要になってきます。 私は上京した最初の2ヶ月の休みの日は引きこもることが多かったですが、仕事を行うにつれて、「このままではアカン」と思いました。 そこからはカメラを持って趣味の撮影や自転車で公園を廻ったりとアクティブな活動をするようになりました。 もう一点。 会社に入ってからは自分に使える時間が極端になくなるので、入社までの時間で引っ越し、各機関の手続きは絶対済ませるようにしましょう。 土日休みの場合は、各機関は止まることがあるのでできるだけ余裕があるうちにできることやっちゃいましょう。 これは重要。

ときには贅沢を。

やっぱりケチケチしているだけでは、なんのために働いているのかわからなくなります。また、仕事を頑張っている自分にご褒美を上げましょう。 私の場合は、一人で外食をし、普段家で食べないものを食べるようにしています。

アポがとっていない訪問者はでなくてよい

実家暮らしなどであればご近所付き合いもあると思うので、人がいきなりくることもあると思いますが、一人暮らしになるとそんなことはほとんどありません。 彼女・彼氏、家族、友人であれば嬉しいところではありますが、実際皆無です。 ほとんどが宗教、NHKといったところでしょうか。 出てしまうとせっかくの自分の時間が失われることになるのでスルーしましょう。

まとめ

学生と社会人では、いろんな面で変化があると思います。 社会人になると工夫して生きていかなければいけないですね。。。 ほかにあれば随時更新します。

Next.jsを使ってみる。~チュートリアル編~

概要

業務でNext.js + Reactを使う可能性が出てきたので簡単なWebアプリを作ってみたいと思います。 Next.jsはサーバーサイドレンダリングをやってくれるものらしい。 サーバサイドレンダリングを行うことでSEOとかにいいらしい。

環境

OS: Mac OS High Sierra バージョン10.13.4 Homebrew 1.9.3

準備

brewでyarnをインストールします。

brew install yarn

適当にプロジェクトを作成します。

mkdir sample
cd sample
yarn init -y

必要なパッケージをインストールします。

yarn add react react-dom next
yarn add webpack webpack-cli babel-loader @babel/core @babel/preset-env @babel/preset-react

babelの設定ファイル .babelrcに設定を記述

{
    "presets": [
      [
        "@babel/preset-env", {
          "targets": {
             "node": "current"
            }
          }
      ],
      "@babel/react"
      ]
}

次にめんどくさいwebpack.config.jsの設定です。

module.exports = {
    entry: './src/App.jsx',
    output: {
        path: __dirname + '/dist',
        filename: 'bundle.js',
        publicPath: '/dist/'
    },
    devtool: 'inline-soruce-map',
    module: {
        rules : [
            {
                test: /\.js(x?)$/,
                exclude: /node_modules/,
                loader: 'babel-loader'
            }
        ]
    },
    devServer: {
        historyApiFallback: {
            index: 'index.html'
        },
        port: '3000'
    }
}

package.jsonも設定します。

{
  "name": "DepositCalculation",
  "version": "1.0.0",
  "main": "index.js",
  "repository": "hogehoge",
  "author": "hogehoge",
  "license": "MIT",
  "dependencies": {
    "@babel/core": "^7.2.2",
    "@babel/preset-env": "^7.3.1",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.5",
    "next": "^7.0.2",
    "react": "^16.7.0",
    "react-dom": "^16.7.0"
  },
  "devDependencies": {
    "babel-preset-react": "^6.24.1",
    "webpack": "^4.29.0",
    "webpack-cli": "^3.2.1",
    "webpack-dev-server": "^3.1.14"
  },
  "scripts": {
    "dev": "next",
    "start": "next start",
    "build": "next build"
  }
}

コード書いていきます。 Next.jsはpagesディレクトリ配下のファイルがそのままルーティングとなってくれます。 そのためpagesディレクトリの下に対象のファイルを作成していきます。 まずはpages/index.js

mkdir pages
cd pages
vim index.js

index.js内

import React from 'react';
import Link from 'next/link'

const Index = () => (
  <Link href="/about">
    <div>
      <p>Hello Next.js</p>
    </div>
  </Link>
)

export default Index

次に同じpagesディレクトリ内にabout.jsを作成します。

import React from 'react';
import Link from 'next/link';

export default () => (
  <Link href="/index">
    <div>
      <p>This is the about page</p>
    </div>
  </Link>
)

ここまで終わったら実行するのみです。 コマンドを実行しましょう。

# ビルド→スタート
yarn build
yarn start

# サーバがスタートした合図がでたら、http://localhost:3000にアクセス
> Ready on http://localhost:3000

アクセスしたらアクセス先で表示されているメッセージをクリックしてみましょう。 おそらく、aboutページに遷移すると思います。 これで完了です。

所感

SSRは意外とめんどくさいものだと思っていましたが、Next.jsの登場でハードルがだいぶ下がったような気がします。 これからはReactも勉強していかないといけないですね。。。

ソース

現在のブランチ名を取得する。

gitコマンドを日常的に打ち続けているとどうしてもエイリアスを貼って簡単にしたいです。 例えば、現在のブランチをpullする場合

$ git pull origin hogehoge

毎回ブランチ名を入力するのがめんどくさいので動的に取得できるエイリアスを貼りたいです。 ちなみに現在のブランチは以下のコマンドで取得できます。

$ git rev-parse --abbrev-ref HEAD

となると、現在のブランチをpullするには

$ git pull origin `git rev-parse --abbrev-ref HEAD`

とすることで現在のブランチを1つのコマンドで取得できます。 これをbashrcやzshrcなどにエイリアスとして追加しておくといいと思います。

[zsh] 重要な情報は別ファイルで管理しよう

概要

先日、zshを自分のMacに導入しました。 その時の記事は以下のリンクです。 http://www.chunli.xyz/archives/59 仕事用のPCやPCを新しく購入したPCをセットアップする際に手軽にzshrcを共有したいこともあるかと思います。 しかし、他サービスのトークン等の重要な情報が書いてあるものをうっかりgithub等にあげちゃうと大変なことになります。 実際にやらかした現場も見たりしてます。。。。 うっかりから大きな損失を生み出さないためにも重要な情報は、別ファイルにして保管しておくといいです。 例えば。zshrcにzshの設定を書いて、zshrc.localというファイルに重要な情報を記述しzshrcで読み込んであげるという方法です。 そうしておけば、うっかりzshrcを上げちゃっても重要な情報は漏洩しないわけです。

ソース

.zshrc.localのススメ - Qiita

bashからzshに移行してみる

概要

今回は、bashからzshに移行をしてみようと思います。 会社の先輩がzshを使っていて「なんて使いやすそうなターミナルなんだ」と思ったのがきっかけです。 自分の好きなようにターミナルをカスタマイズできるのが魅力的ですね。 いざやっていきましょう。

環境

High Sierra 10.13.4 HomeBrewをインストール済み

zshのインストール

まずは、zshをインストールを始めます。 Macの場合は、デフォルトで入っているはずですが、今回は別途インストールを行います。 brewでインストールします。

$ brew install zsh
$ zsh --version
zsh 5.6.2 (x86_64-apple-darwin17.7.0)

続いて、zshrc(設定ファイル)を記述していきます。 今回は、2行表示させたいと思います。 一行目は、現在のディレクトリの位置とブランチ名 二行目は、コマンド入力するところです。 以下のような感じです。

[~/programming/hoge](git)-[ブランチ名]
>>> こまんど

zshrcは以下のような感じです。

PROMPT="%{${fg[magenta]}%}>>> %{${reset_color}%}"

[ -f ~/.zshrc.local ] && source ~/.zshrc.local
[ -f ~/enhancd/init.sh ] && source ~/enhancd/init.sh
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

function gi() { curl -L -s https://www.gitignore.io/api/$@ ;}

export PATH=$PATH:"/usr/local/bin:$PATH"
export PATH=$PATH:/Users/msk6252/Library/Android/sdk/platform-tools
export PATH=$PATH:/usr/local/Cellar/openssl/1.0.2l/bin:/Users/msk6252/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/msk6252/Libra
ry/Android/sdk/platform-tools

export PATH="$HOME/.pyenv/shims:$PATH"

alias nowb='git rev-parse --abbrev-ref HEAD'
alias pull='git pull origin `nowb`'
alias allpull='git pull'
alias fetch='git fetch --prune'
alias tree="pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'"

eval "$(rbenv init -)"

export XDG_CONFIG_HOME="$HOME/.config"

export LANG=ja_JP.UTF-8

autoload -Uz colors
colors

autoload -Uz compinit
compinit

zstyle ':completion:*:default' menu select=2

autoload -Uz vcs_info
autoload -Uz add-zsh-hook

setopt prompt_subst
zsytle ':vcs_info:*' formats '%F{green}(%b %c%u)%f'
zsytle ':vcs_info:*' actionformats '%F{red}(%b|%a)%f'
zsytle ':vcs_info:git:*' check-for-chnages true
zsytle ':vcs_info:git:*' stagedstr "%F{yellow}!"
zsytle ':vcs_info:*' unstagedstr '%F{red}+'
function _update_vcs_info_msg() {
  LANG=en_US.UTF-8 vcs_info
  PROMPT="%{$fg[green]%}[%~]%{${reset_color}%}${vcs_info_msg_0_}
%{${fg[magenta]}%}>>> %{${reset_color}%}"
}
add-zsh-hook precmd _update_vcs_info_msg

まだまだ改善点はあるもののとりあえずはこれで使ってみようと思います。

RaspiberryPiで再起動コマンドを定期的に実行する。

概要

以前、RaspberryPiでテレビ視聴+録画環境を構築しました。 そちらについては下記を参考にしてください。 https://www.chunli.xyz/archives/34 RaspberryPiを常時起動しているとときには動作がうまくいかない場合もでてきます。 せっかく録画予約した番組も取れていなかったり、テレビを視聴しようとしたときにうまく見られないとテンションも落ちてしまいます。 そこで定期的にRaspberryPiを再起動してあげることで、上記のような問題を解決しようという試みです。

設定

cronに再起動するコマンドを登録してあげるだけです。

$ sudo crontab -e
# 今回はAM6:00に再起動がかかるように設定。
# 録画する番組と時間がかぶると録画が失敗してしまう恐れがあるので注意
0 6 * * * /sbin/reboot

# 設定したcronを確認
$ sudo crontab -l

cronの設定について

上記の0とか6とか分かりづらいですが、以下のようになっています。

分 時 日 月 曜日 コマンド
0 6 * * * /sbin/reboot

分 0~59
時 0~23
日 1~31
月 1~12 または jan~dec
曜日 0~7 または sun~sat

参考

Raspberry Pi + PX-S1UDでテレビの視聴環境を作る!

概要

上京してから早6ヶ月。 引っ越しした際に最低限のものしか買っておらず、テレビもなしで生活していた。 ふとしたきっかけでテレビを見たくなったが部屋にテレビを置きたくなかった。 上京前は、Windows PC + PT3で自宅内ストリーミング環境を作って、テレビを見ていたが、 一人暮らしの今となっては、電気代が気になるので常時起動は避けたかった。 そこで、Raspberry Piを使ってストリーミング環境を構築することにした。 つまずいた点もあるので共有ができたらいいと思っている。 あくまでも個人利用であり勉強のために行う。 公的に配信することは法律で禁じられているので注意を。

目標

  • タブレットでテレビをリアルタイム視聴できるようにする。
  • 録画環境はほとんどする予定がないので今回は保留(別途対応予定)

使用機器

  • Raspberry Pi 3 Model B+
  • OS入れるようのmicroSDカード 32GB
  • PLEX USB接続ドングル型地上デジタルTVチューナー PX-S1UD V2.0
  • 接触型ICカードリーダー SCR3310-NTTCom
  • B-CASカード (Windows PCからの流用。B-CASカードが認識できればいいので、おそらく他のICカードリーダーでも大丈夫)

参考記事

こちらの記事を参考にした。 先人の知恵はありがたし。 ほとんど下記の記事で実現できる。 - Qiita - ラズパイ3B+ を地上波8ch全録サーバにできるか試してみました

構築

SDカードにOSのインストール

今回はRaspbianを使う。 cliですべて完結するので、liteでOK。 WindowsとMacで違うので別途ググってもらいたい。

OSの設定

ログイン(初期設定) - ID:pi - Password: raspberry 以下の設定をしておくとよいかも。 - ロケールの設定 - 言語の設定 SSHの設定をしておくと、ノートPCから操作できるようになるのでわざわざモニターの前に移動しなくてよくなる。

つまずいた点

raspi-configでsshをenableにしても、rebootしたときにsshがdisableになってしまう事象が起こった。 SDカードにOSを入れた時点で、bootディレクトリ配下にsshというファイル(中身は空でよい)を作ってからsshをenableにすると解決した。

チューナの設定

チューナをさして、認識しているか確認

$ ls /dev/dvb/
adapter0


$ lsusb | grep VidzMedia
Bus 001 Device 004: ID 3275:0080 VidzMedia Pte Ltd

# ドングルのファームウェアをインストール
$ sudo apt -y install unzip
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware

$ sudo reboot now

カードリーダーの設定

$ sudo apt-get update
$ sudo apt -y install pcscd libpcsclite-dev pcsc-tools
$ pcsc_scan

# いっぱい文字がでてくるが以下の文字がでてくればOK
Japanese Chijou Digital B-CAS Card (pay TV)

mirakurunの導入

# node.jsのリポジトリを追加(version 8)
$ curl -sL http://deb.nodesource.com/setup_8.x | sudo bash -

# node.jsをインストール
$ sudo apt-get install -y nodejs


# pm2 - プロセスを管理するためのパッケージのインストール
$ sudo npm install pm2@2.10.4  -g

#Mirakurun をインストール
$ sudo npm install mirakurun -g --unsafe --production


# dvb-toolsの導入
$ sudo apt install -y dvb-tools

周波数設定用ファイルをダウンロード

#gitを導入
$ sudo apt install -y git

#周波数設定ファイルをダウンロード
$ cd /usr/local
$ sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git
$ cat /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf


# decoderのインストール
$ sudo npm install arib-b25-stream-test -g --unsafe


#チューナーの設定開始
sudo mirakurun config tuners


- name: S270-0
  types:
    - GR
  command: dvbv5-zap -a 0 -c /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P <channel>
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test
  isDisabled: false


#mirakurunの再起動
$ sudo mirakurun restart

# チャンネルスキャンを行う
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
つまずいた点

はじめはrecdvbを使用していたが、どうもうまくチャンネルスキャンが上手くいかない。 どうやらrecdvbはmirakurunでうまく動作しないことがあるようだ。 recdvbは有志により、いろんな派生がでているので試すのもありのようだ。 また、dvbv5-zapでチャンネルスキャンはできるが、ストリーミング再生がうまくいかなかった。 USBハブを介してラズパイに繋いでいたためおそらくうまく認識されていなかったのである。

# チャンネルスキャン後、不要なチャンネルがあれば削除したり、編集を行う
$ sudo mirakurun config channels

# mirakurunの再起動
$ sudo mirakurun restart

この時点でもストリーミングは可能なはず。

chinachuの導入

以前はβ(ベータ)というバージョンらしかったが、今はγ(ガンマ)になっているという

# クローン
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu

# インストール
$ cd ./chinachu

# ラズパイの場合はインストールに相当時間がかかる
# sshをしている場合は途中でセッションが途切れるかもしれないのでscreen等を使うといいかも
$ ./chinachu installer
# 選択項目が出てくるのでAutoでインストール
# インストールが完了するまで放置


# インストール完了後
# 現在のディレクトリを確認
# chinachu配下にいることを確認
$ pwd

# ルールファイルを作成
# コンフィグファイルの編集
$ echo "[]" > rules.json
$ cp config.sample.json config.json
$ vi config.json

“uid”のバリューと”wuiHost”のキーを”wuiOpenHost”に変更  録画先を変更する場合(例えば、外部HDDや指定先ディレクトリ)、”recordedDir”を変更する。 以下は例

{
  "uid": "pi",
  "gid": "video",
  "mirakurunPath": "http+unix://%2Fvar%2Frun%2Fmirakurun.sock/",

  "recordedDir" : "/mnt/",

  "vaapiEnabled": false,
  "vaapiDevice": "/dev/dri/renderD128",

  "excludeServices": [
    3273701416,
    3232728088,
    3273901183,
    3274201456,
    3239123992,
    3239123993,
    3273601408
  ],

  "serviceOrder": [
    3273601024,
    3273601025,
    3273701032,
    3273701033,
    3273701034
  ],

  "wuiUsers": [
    "chinachu:yoshikawa"
  ],
  "wuiAllowCountries": ["JP"],

  "wuiPort": null,
  "wuiOpenHost": "0.0.0.0",
  "wuiTlsKeyPath": null,
  "wuiTlsCertPath": null,
  "wuiTlsRequestCert": false,
  "wuiTlsRejectUnauthorized": true,
  "wuiTlsCaPath": null,
  "wuiOpenServer": true,
  "wuiOpenPort": 20772,
  "wuiXFF": false,
  "wuiDLNAServerEnabled": false,
  "wuiMdnsAdvertisement": true,

  "recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<channel-name>]<title>.m2ts",
  "storageLowSpaceThresholdMB": 3000,
  "storageLowSpaceAction": "remove",
  "storageLowSpaceNotifyTo": null,
  "storageLowSpaceCommand": ""
}

動作確認を行う。

# chinachu配下で実行
$ ./chinachu service wui execute
# エラーが出なければ、Ctrl + c で終了
# 上記の設定ファイル等で記述ミスがあれば、ここで表示される。

# mirakurunからEPGデータを取得?
# ここでエラーが出た場合はmirakurunに接続できていないらしい(私は起こらなかった)
$ ./chinachu update

スタートアップの設定

$ sudo pm2 start processes.json
$ sudo pm2 save
$ sudo pm2 startup

動作確認

chinachu

ブラウザ上で http://ラズパイのIP:ポート番号(デフォルトは20772) にアクセス

mirakurun

ブラウザ上で http://ラズパイのIP:ポート番号(デフォルトは40772) にアクセス

まとめ

今はなんとかPC,タブレットから見られる状態になったが、USBハブを介してドングルを繋いでいるとうまく受信できない罠には気が付かなかった。 2週間ほど時間を無駄にしてしまった。。。 別の問題点として家の無線LANルータが貧弱なのか通信ができない状態が結構な割合で起こる。 なんとかして快適なTV環境になるようにしたい。

ドキュメント72時間 控えめに言っても面白い

ドキュメント72時間

はじめに

NHKで放送されているドキュメンタリー番組。 同じ場所に72時間滞在し、行く人、来る人を取材している。

人のそれぞれ

同じ場所に居合わせた人でもその人が歩んできた道は別々であり、その様子が見えるのは面白い。 今までの人生を考える人、これからの人生を考える人、年齢、性別、国籍、文化、それぞれが違う人たちがその場に集まってくる。 そんな人のそれぞれが見られる。

作品例

タクシー本音の会話 北海道編

2006年の北海道。不景気の中、タクシーの中で繰り広げられる会話。 お客さんは、多種多様。旦那の見舞いに行く、お婆さん。就職活動を経てようやく職を手にした女性。野球観戦を終えた家族連れ。 さまざまな目的地を目指すお客さんの本音がつい出てしまう。

消印有効 24時間マンモス郵便局

舞台は新宿にある郵便局。 この郵便局は、24時間営業でさまざまな人が訪れる。メールやSNS時代になっても、絶えず人が訪れている。 写真展に写真を送付するために訪れたカメラマン志望の男性や、孤児院に毎年手紙を送り続ける男性、 家を空けることが多いという女医、婚約者への婚約指輪を郵便局に受取に来た男性。 以外と需要がある郵便局で人々の人生に迫る。

まとめ

上記に上げた場所以外にも、お弁当屋、病院のコンビニ、大衆居酒屋などさまざまなところで取材を行っている。 そうしたところから人生の機微のようなものを感じ取ることができるので面白い。 人間観察をテレビで味わえるこの番組が好き。

関連サイト