投稿者: koji

  • WordPress: フックを外す簡単な方法

    フィルターフックに登録したコールバック関数の中で自分自身の登録を解除したいときには、ハードコードせずに済む方法がある。

    function lf_my_filter( $title, $id ) {
    
        /* do some stuff */
    
        // equal to remove_filter( 'the_content', 'lf_my_filter' );
        remove_filter( current_filter(), __FUNCTION__ );
    
        return $title;
    }
    add_filter( 'the_content', 'lf_my_filter' );

    アクションフックも同様。

    function lf_my_action( $args ) {
    
        /* do some stuff */
    
        // equal to remove_action( 'wp', 'lf_my_action' );
        remove_action( current_action(), __FUNCTION__ );
    }
    add_action( 'wp', 'lf_my_action' );

    ただし、第3引数 ($priority) にデフォルト (1) 以外の優先度を設定している時は、remove する際にも同じ優先度を設定する必要がある。

  • SETUP – 救急ケアの準備

    まえがき

    『この語呂合わせは、救急ケアを安全に提供するための重要なポイントを思い出すのに役立ちます。』

    リスト

    あとがき

    まえがきを含めて、”Putting Your Safety First When Responding to an Emergency” (CPR and Basic First Aid Training Program | ASHI and MEDIC First Aid) より私訳。

    第一項目の Stop が 「動揺を切り抜けるための”SOS”」を連想させたので収集。

    このリストには反映されていませんが、記事タイトルが示唆するように、救急ケアにあたって自分自身の安全を確保することの重要性が強調されています。

    5項目では救急時に思い出すのが大変そう。第2~4項目は要するに周囲に注意を払う行為なので:

    • Stop: まずは一拍置いて
    • Situation (Surroundings): 状況(周囲)に注意を払い
    • Safety of your own: 自身の安全を確保する

    の 3S でどうでしょうか。

  • タグ一覧ページにページ内検索&ハイライト機能を付ける

    タグ一覧ページでは、現在1700個近いタグが1ページに表示される。ページネーションをしないのはブラウザのページ内検索機能ですばやく検索したいから。

    だけどタグがずらずら並んでいるのもぶっきらぼうなので、フォームに入力した言葉を含むタグをハイライトしたうえで、画面上部にもコピーされるようにした。

    下は初期表示時。

    こちらが「決」を入力して「タグ検索」をクリックした結果。

    おおまかな仕組み

    タグクラウドは下記のように段落タグでくるまれている。入力フォームを画面上部に置いて、入力された言葉を含むタグをハイライトする。

    <p class="alignwide listfreak_tagcloud" id="lf-alltags">
        <a href="https://listfreak.com/tag/EQ" class="tag-cloud-link tag-link-75 tag-link-position-1" style="font-size: 1.6em;" aria-label="EQ (89個の項目)">EQ</a>
    
        <a ... ></a>
        ......
    </p>

    HTML(入力フォーム)

    検索語句を入力する部分はブロックエディタで作成。フォームといっても表示されているHTMLのDOMをいじるだけなので<form>タグは使わない。

    JavaScript

    lf_highlight_words.js というファイルを作った。このファイルを読み込ませる手順は後述。

    // タグ検索ボタンのクリックと処理関数を結びつける
    document.getElementById('highlight-btn')
        .addEventListener('click', lfHighlight);
    
    function lfHighlight() {
        1. 前処理
        2. 本処理
    }

    前処理

    ページを読み込み直さないので、前回のハイライト結果や見つかった語句数の表示を消す必要がある。

    フォームが空であれば処理終了。フォームに語句が入っていたら、本処理へ。

    // タグクラウドが格納された <p> を取得
    const alltags = document.getElementById( 'lf-alltags' );
    
    // その中で highlight クラスを持つオブジェクトの集合を取得
    const highlighted = alltags.getElementsByClassName( 'highlight' );
    
    // 前回の表示結果が残っていたらhighlight クラスを削除
    while ( highlighted.length ) {
        highlighted[0].classList.remove( 'highlight' );
    }
    
    // 見つかった検索語句の個数を表示する div
    const found = document.getElementById( 'lf-found' );
    
    // 前回の表示結果が残っている場合があるのでクリア
    while ( found.firstChild ){
        found.removeChild( found.firstChild );
    }
    
    // 検索語句を取得(valueはHTMLInputElementのプロパティ)
    const searched = document.getElementById( 'search-tag' ).value;
    
    // 検索語句がなければ終了
    if ( '' == searched ) {
        return;
    }
    
    // 検索語句を正規表現オブジェクトに
    const searchedR = new RegExp( searched, 'i' );
    
    // ヒットしたタグを格納する
    const foundTags = document.createElement( 'p' );
    
    // 全タグを1つずつ
    alltags.childNodes.forEach( function( tag ) {
    
        // 検索語句が含まれていたら
        if ( searchedR.test( tag.innerText ) ) {
    
            // 検索窓の下に表示するためにコピー
            foundTags.appendChild( tag.cloneNode() );
    
            // ハイライト
            tag.classList.add( 'highlight' );
    
        }
    } );
    

    L5-L18: タグ検索ボタンが2回め以降に押された場合、前回のハイライトやヒットタグ一覧をクリアする必要がある。自分の子孫をすべて削除するメソッドが見つからなかったので一つずつ削除。highlighted は HTMLCollection インターフェイス、found は Element オブジェクトを返すので削除のやり方が違う。いずれにせよ逆ダルマ落し的に最初の要素から一つずつ削除した。

    本処理

    タグはノードの配列として取得できているので、innerText に検索語句を含むノードを抽出してハイライト用のクラスをまとめて追加する……ようなやりかたがあればと思ったが、見つからなかったので forEach で一つずつ。

    // 検索語句を正規表現オブジェクトに
    const searchedR = new RegExp( searched, 'i' );
    
    // ヒットしたタグを格納する
    const foundTags = document.createElement( 'p' );
    
    // 全タグを1つずつ
    alltags.childNodes.forEach( function( tag ) {
    
        // 検索語句が含まれていたら
        if ( searchedR.test( tag.innerText ) ) {
    
            // 検索窓の下に表示するためにコピー
            foundTags.appendChild( tag.cloneNode( true ) );
    
            // ハイライト
            tag.classList.add( 'highlight' );
    
        }
    } );
    
    // 見つかった個数を表示
    const foundMsg = document.createElement( 'p' );
    foundMsg.textContent = foundTags.childNodes.length + ' FOUND.';
    found.appendChild( foundMsg );
    
    // 検索語句を含むタグへのリンクを検索窓の下に表示
    if( 0 < foundTags.childNodes.length ) {
        found.appendChild( foundTags );
    }
    

    CSS

    ハイライト用のクラスには下記のように背景色を変える設定をした。

    .highlight {
        background-color: yellow;
    }

    PHP

    作成した JavaScript ファイルを登録する。

    add_action( 'wp_enqueue_scripts', 'lf_enqueue_highlight_in_page', 11 );
    function lf_enqueue_highlight_in_page() {
    
        // slug が tags でなければリターン
        if ( 'tags' != get_post_field( 'post_name',  get_the_ID() ) ) {
            return;
        }
    
        wp_enqueue_script(
            'lf_highlight_words',
            home_url().'/ <snip> /lf_highlight_words.js',
            array(), // No Dependency
            '1.0.0', // Version
            true     // In Footer
        );
    }
    
  • 個人的自由の三つの形式

    まえがき

    『ホネットは、フレデリック・ノイハウザーによるヘーゲルの読解に似た、否定的・反省的・社会的という3つの自由を区別している。その概念化は、どんなに評価しても過大評価とはいえないほど、実りあるものだ。』

    リスト

    あとがき

    まえがきを含めて、参考文献(1)より。リストは本文を意訳しつつ作成しました。

    アクセル・ホネットのインタビュー記事 「資本主義、批判、社会的自由」(聞き手=ガエル・カーティ、『資本主義と危機: 世界の知識人からの警告』第2章所収)でこの3つの自由を知りました。

    ただ、インタビュー記事のせいか、この3つの自由の定義が曖昧でリスト化しづらかったので、英語版の書評記事からわたしの理解できる言葉でリストを作成しています。

    カーティによるとホネットは2011年に出版した『自由の権利』でこの三区分を詳述しています。そちらをあたってもうすこし明快な定義を読みたかったのですが、未邦訳。

    話の流れからすると、アイザイア・バーリンによる「消極的自由」(自分の意図を実現するにあたっていかなる妨害もないこと)と「積極的自由」(何らかの高次のよさを尊重することによる自己決定に関わる自由)がおおまかに「否定的自由」と「反省的自由」に対応しています。そしてヘーゲルが言う「客観的自由」を受け継いで著者が提唱しているのが「社会的自由」。

    『資本主義と危機』では、ホネットは次のように述べています。

    わたしはかなりの程度ヘーゲルの「法哲学」の考えを引き継いで(略)、否定的、反省的、社会的自由の三区分を提案しました。それらの自由はすべて近代社会の制度的構造のうちに、その構成的場所を占めるのです。

    そして同書からの引用でリストを作ろうと試みたのが下記。

    • 否定的自由: 外的な世界において意志の行使に障壁がない
    • 反省的自由: 意志の内容が理性的な考慮によって決定されている
    • 社会的自由: 社会の他の参加者が自分たちの意図を絡み合った仕方で実現するという条件が満たされる場合において自分の意図を実現することができる
    • タイトル資本主義と危機――世界の知識人からの警告
    • 著者: マルクス・ガブリエル(著)、イマニュエル・ウォーラーステイン(著)、ナンシー・フレイザー(著)、アクセル・ホネット(著)、ジョン・ベラミー・フォスター(著)、大河内 泰樹(著)、斎藤 幸平(著)、ガエル・カーティ(著)
    • 出版社: 岩波書店
    • 出版日: 2021-05-29

      参考文献

      (1) Laitinen, Arto. “Axel Honneth: Freedom’s Right: The Social Foundations of Democratic Life. Translated by Joseph Ganahl.(New York: Columbia University Press, 2014. Pp. 412.).” The Review of Politics 77.2 (2015): 327-330.

    • アダプティブ・リーダーシップのプロセス

      まえがき

      『アダプティブ・リーダーシップでは、次の三つの主な活動を反復する(略)。この三つの活動は、それぞれ前の活動に基づいており、繰り返していくなかで観察、解釈、介入の精度を上げていく。』

      リスト

      あとがき

      まえがきを含めて、ロナルド・A・ハイフェッツ、マーティ・リンスキー、アレクサンダー・グラショウ『最難関のリーダーシップ――変革をやり遂げる意志とスキル』 (英治出版、2017年)より。タイトルは図表から、リスト項目の英語は原著からの引用です。

      アダプティブ・リーダーシップとは、自分・自組織自身の適応を要する課題(=適応課題)に取り組むためのリーダーシップ。適応課題は技術的問題を解くようには解けないという意味合いで用いられています。

      「バルコニーに上がる」とは観察のために状況を俯瞰すること。「エレファント」とは見て見ぬふりをされている問題。

      経験学習のサイクルと原理的には同じですが、3項目でわかりやすく、また観察(observer)・解釈(interpret)・介入(intervene)といった言葉の選択が実際に必要な活動のイメージをよく表しているように思えます。

      この本からの他のリスト

      参考文献

    • 権威者の責任

      まえがき

      『国や企業のトップであっても、病院や権利擁護団体の代表者であっても、一人の親であっても、権威者としての役割は大きく違わない。三つの主要な責任があり、それを果たすことだ。』

      リスト

      あとがき

      まえがきを含めて、ロナルド・A・ハイフェッツ、マーティ・リンスキー、アレクサンダー・グラショウ『最難関のリーダーシップ――変革をやり遂げる意志とスキル』 (英治出版、2017年)より。 英語部分は原著 “Adaptive Leadership” からの引用です。

      リーダーシップの実践と権威(オーソリティ)の行使の違いが重要、という文脈で出てくるリスト。ソリッドな枠組みに感じられたのでどこかからの引用なのかと思ったのですが引用元は書かれておらず、また検索してもそれらしい論文が見つからないので、著者オリジナルの模様。

      指揮・保護・秩序という三つ組は、「主師親の三徳」を想起させます。

      この本からの他のリスト

    • PQRST法 – 本からの学び方

      まえがき

      『PQRST法は、本から(無批判に)学ぶ際に重要な情報に焦点を当てるために使われる方法である。』

      リスト

      あとがき

      まえがきは、”Study skills” (Wikipedia) からの私訳です。リストは、同エントリ、読書猿『独学大全 絶対に「学ぶこと」をあきらめたくない人のための55の技法』 (ダイヤモンド社、2020年)、および参考文献 (1) を参考にして作成しました。

      『PQRST法は、言語的記憶戦略と呼ばれるものの一つであり、文章から得られる情報を記憶するために有効な学習法である。』(『独学大全』)とあるように、もともとは記憶方略の一つです。

      言語的記憶戦略としてのPQRST法における S は、 Self-Recitation (自己暗唱)の頭文字です。しかしPQRST とするために Self を付けたのは明らか。

      あまりセンスのいい頭字語とは言えないなとおもって検索したところ、上述の Wikipedia のエントリに本からの学習方略として S を Summary に変えて拡張された定義が紹介されていました。言葉的にこちらのほうが覚えやすいし、個人的に記憶というより学習方略としてメモしておきたかったので Summary を採用しました。

      まえがきに「無批判に」 (uncritically) とあるのは、これがもともと記憶方略であるから。

        参考文献

        (1) 高原世津子, 野間俊一, 種村留美, 上床輝久, & 種村純. (2005). 記憶障害例に対して残存する視覚記憶を利用した PQRST 法の効果. 高次脳機能研究 (旧 失語症研究), 25(3), 251-258.

      • フレイルの3因子

        まえがき

        『フレイルは(略)3つの因子で構成されている。老化の進行を緩め健康寿命を延ばすためには、3つのバランスを取ることが欠かせないとの考えで、仮に1つが損なわれると、負のスパイラルが起きる』

        リスト

        あとがき

        まえがきを含めて、樂木 宏実 (監修) 『老化はこうして制御する 「100年ライフ」のサイエンス』 (日経BP、2020年)より。

        フレイルとは『高齢期において、加齢による臓器機能の変化や予備能力の低下によって介護に至るリスクや過程を定義したもの』(本文より)。

        フレイルの因子ということはフレイルをもたらすものだと思うのですが、フレイルの因子にもフレイルと命名されていることで、すこしわかりづらくなっている気もします。

        たとえば「独居はフレイルの社会的因子」なのでしょうが、独居は社会的フレイルそのものではないですよね。独居で自立している人もたくさんいるので。「独居は社会的フレイルの因子」であれば納得しやすいですが、そうなると事象としての「社会的フレイル」の定義が必要になってしまいます。

        ……と思ってすこし検索してみると、『フレイルの社会的側面を表す「社会的フレイル」は、身体的フレイルに先行するとされ注目が集まっているが、社会的フレイルに関するエビデンスはまだ乏しい』(1)という論文がありました。側面 (aspect) という位置づけは因子 (factor) より納得しやすいですが、いずれにせよ(ザ・)フレイルと◯◯フレイルの関係はこれから整理されていくのかな。

          参考文献

          (1) 阿部紀之, 井手一茂, 渡邉良太, 辻大士, 斉藤雅茂, & 近藤克則. (2021). 社会的フレイルの指標に関する文献レビューと内容的妥当性の検証. 日本老年医学会雑誌58(1), 24-35.

        • 素粒子物理学における3つの研究領域

          まえがき

          『量子力学は、それ自体が奇妙なだけでなく、その研究領域も奇妙だ。素粒子物理学には、理論、実験、そしてその中間に、◯◯という領域がある。』

          リスト

          あとがき

          まえがきを含めて、ザビーネ・ホッセンフェルダー『数学に魅せられて、科学を見失う』 (みすず書房、2021年)より。各項目の英語は原著にあたれなかったので著者のホームページから引用しました。

          まえがきの◯◯は「現象論」です。二者択一にしか思えないペアに第三の要素を加える体のリストが好きなので思わず収集。

          現象論(者)とは何か。

          現象論者とは、(ゴードン・ケインのように)理論から予測を引き出す人々で、それには普通、数学的扱いをより簡明にし、何がどの程度の精度で、いかにして測定できるかを明らかにする(さらに、誰によって測定されるかを含むことも珍しくない)という方法を使う。

           物理学のほかの分野では、素粒子物理学におけるほど、研究者たちが明確にこれら三つの領域に分類されることはない。

          たしかに Wikipedia 日本語版にも、自然科学における「現象論」や、もちろん哲学の「現象主義」とは別に「現象論 (素粒子物理学)」というエントリがありました。

          実験が帰納されて理論となり、理論から生まれる予測が実験で裏づけられる。科学にはそういった循環があり、著者も『現象論者はあらゆる分野に存在する』と述べています。しかし素粒子物理学は、実験が大がかりで困難ないっぽう理論は形成されているので、理論からの予測が一つの研究領域として成立するくらい大きなテーマになっている、と理解しました。

          • リーディングスキルテスト (RST) の6分野

            まえがき

            『つまり、 AI に読解力をつけさせるための研究で積み上げ、エラーを分析してきた蓄積を用いて、人間の基礎的読解力を判定するために開発したテストが RST なのです。』

            リスト

            あとがき

            まえがきを含めて、新井 紀子 『AI vs. 教科書が読めない子どもたち』 (東洋経済新報社、2018年)より。リストは本文を編集して作成しました。

            開発の経緯については次のように述べられています。

            『基礎的読解力を調査すると言っても、そんな調査はこれまで世界中で誰もやっていませんから、方法がありません。そこで、基礎的読解力を調査するためのリーディングスキルテスト (RST) を自力で開発したのです。』

            そして、(2018年当時の)AIの読解力はいかほどか。係り受け解析の精度は80%程度あるようです。しかし『推論、イメージ同定、具体例同定の 3 つは、意味を理解しない AI ではまったく歯が立ちません』とのこと。

              参考文献