北原ミレイが歌う「石狩挽歌」

演歌のジャンルに入る音楽CDを一枚だけ持っている。それが北原ミレイが歌う「石狩挽歌」である。この歌は普通の演歌にはない歌詞でできている。作詞はなかにし礼である。

歌詞は:

海猫(ごめ)が鳴くから ニシンが来ると
赤い筒袖(つっぽ)の やん衆がさわぐ
雪に埋もれた 番屋の隅で
わたしゃ夜通し 飯を炊く

燃えろ篝火 朝里の浜に
海は銀色 ニシンの色よ
ソーレン節に 頬そめながら
わたしゃ大漁の 綱を尭(ひ)く

と続く。作曲は浜 圭介。いろんな歌手が歌っているが、この曲を最初に歌った北原ミレイがいい。

スピン・コントロールと回転式住所録

グラフィックスユーザインタフェース(GUI)の部品(ウィジェット)にスピン・コントロールというものがある。整数値を1つ表示する表示窓があり、その脇に上向きの矢印と下向きの矢印があり。上向きの矢印をクリックすると表示は増加し下向きでは減少する。このようにして整数値を選択できるようになっている。スライダーがアナログ的なのに対して、これはディジタル的なものである。

このスピン・コントロールの動きを見ていたら回転式住所録を思い出した。画像はここにある。

トグルスイッチ

これもユーザインタフェースの話である。

トグルスイッチまたはトグルボタンというものがある。二つの状態をとるスイッチでスイッチを押すと現在の状態から別の状態に切り替わる。

我が家でも電灯を付けたり消したりするトグルスイッチが使われている。電灯が消えているときにそのスイッチを押すと電灯が付き、電灯が付いているときにそのスイッチを押すと電灯が消える。つまりこのスイッチは二つの状態を取ることができるスイッチである。しかしスイッチの外見からはそのスイッチが今どちらの状態にあるかを知る手がかりは全くない。このスイッチは小スペースに配置できる利点があるが、これがこのスイッチの欠点である。

誰のためのデザイン?認知科学者のデザイン原論」のなかで著者のD.A. ノーマンはこのトグルスイッチをよくないデザインの例として取り上げていた。

例えば、このスイッチをエレベータのドアの開閉に使ったとしよう。

ドアが開いていたらそのボタンを押すとドアが閉まり、ドアが閉まっていたらこのボタンを押すとドアが開く。しかしドアの状態が見えないとこのボタンは有効に使えない。

エレベータのユニヴァーサル・デザインではドアを閉めるボタンとドアを開けるボタンは別々になっている。

ラジオボタンとチェックボックス

グラフィックスユーザインタフェース(GUI)の部品(ウィジェット)にラジオボタンとチェックボックスというものがある。どちらも提示された一群の選択項目からユーザが項目を選択する機能を持っている。違いはチェックボックスでは複数の項目が選択できることに対してラジオボタンは一つの項目のみが排他的に選択できる点にある。

このラジオボタンの名称の由来は旧いラジオの前面に配置されていた複数のラジオ局の選択ボタンである。一つのラジオ局を選択する(押す)と他の局のボタンが浮き上がった状態になり常に一つが排他的に選択されるようになっていた。このラジオボタンがGUIのラジオボタンになった。

旧い時代の機器が持っていたユーザインタフェースがそのままの機能でGUIに取り込まれたことが面白い。

ウイニーの大音響を実感する

今日のお昼休み(馬休の時間でもあった)に洗い場で一頭だけ残されしまった馬が盛んに嘶いていた。この馬の音声はウイニーと呼ばれている。以前にも馬の四種の音声を話題にしたことがあるが、ウイニーが最も大きな音で自分の存在を他の馬たちに知らせるときなどに使う。今日は「早く馬房に帰りたい」と指導員に向かって鳴いていたのである。

ふと他の馬たちは誰が鳴いているのか分るのであろうかという疑問がわいた。それにしても大音響であったのが面白かった。

庚申(こうしん)道:狸と猿の街道

庚申(こうしん)道というちょっと変わった名前の街道がある。

狸の焼き物で有名は信楽(しがらき)焼の信楽を含むように南北に走っている街道である。猿は庚申の使いで、何も悪いことは報告しないというポーズの三猿(見ざる、聞かざる、言わざる)であるが、この街道沿いにある寺(庚申山広徳寺)には大きな石柱のてっぺんにこの三猿が彫られている。この猿が街道の名前の起源。

藤沢周平の世界:データベースの話

藤沢周平は好きな作家の一人である。以前のこのブログで話題にしたことがある。

文庫本のかたちで全作品を持っている。どの作品がどのタイトルの文庫本に収録されているかを検索できるデータベースを作ってみた。

一例を示す:

検索結果の表示

wxPythonにはデータベースの結果表示に便利なgridクラスがあり表になったデータを適切に表示できる。

ソニーRX10M4の高速動画

このカメラは動画も撮れる。しかも高速に動画を撮れる。通常の動画はフレーム・レートが60fps(つまり一秒間の60コマ)であるが、このカメラはその16倍、つまり960fpsの高速で動画が撮影できる。このようなフレーム・レートであると1000分の1秒のシャッター速度であるのでレンズはf2.4と比較的明るいがそれでも撮影には明るい環境が必要になる。

試みた撮影は以下に示すが撮影は晴天の日の屋内である:

表示動画はオリジナルを20%に圧縮したものである。もちろん再生は通常のヴィデオのように60fpsである。

 

Pythonのマルチスレッドの覚書

マルチスレッドの一般論はここにある。プログラムで重たい処理の部分を干渉なしにバッチ処理的にやる部分を一つのスレッドと他の部分と独立に実行させる。こんなイメージがスレッドである。

Python上でスレッドを使った一例を示す:


import threading

a_final = 0


def count():
    global a_final
    for i in range(10000000):
        a = i+1
    a_final = a   
    print('end_count')
    return
def main():
    t = threading.Thread(target=count)
    t.daemon = True
    t.start()
    t.join()
    print(a_final)
    print('end_main')

if __name__ == '__main__':
    main()

関数mainの中で関数countをスレッドとして走らせる。メソッドJoin()はスレッドとそのスレッドを走らせた関数(今の場合はmain)が同時に終了するように同期をとるメソッドである。

これのGUI版は以下のようになる:


import tkinter as tk
from tkinter import ttk
import threading


a_final = 0

root = tk.Tk()
label = tk.Label(text='vinoth')
label.pack()

def fix():
    t = threading.Thread(target=count)
    t.daemon = True
    t.start()
    t.join()
    label['text'] = a_final
    return
    

def count():
    global a_final

    for i in range(100000000):
        a = i+1
    a_final = a


button = tk.Button(text='sub', command=fix)
button.pack()
dropdown = ttk.Combobox()
dropdown.pack()

root.mainloop()

こんな感じになる。