投稿者: koji

  • 明治政府の変革3原則

    まえがき

    『明治政府の指導者たちは基本的な大原則を三つ採用した。』

    リスト

    あとがき

    まえがきを含めて、ジャレド・ダイアモンド 『危機と人類(上)』(日本経済新聞出版、2019年)より。

    3は和魂洋才ですね。

    • タイトル危機と人類(上)
    • 著者: ジャレド・ダイアモンド(著)、小川 敏子(翻訳)、川上 純子(翻訳)
    • 出版社: 日本経済新聞出版
    • 出版日: 2019-10-26
    • WordPressでAPCuを使う


      はじめに

      レンタルサーバー(エックスサーバー)で APCu というデータキャッシュが使えるようになっているので、これを WordPress で使うために何をすればよいかを調べた(結論からいうととても簡単だった)。

      1. APC/OPcacheについて(エックスサーバー)
      2. APC User Cache(PHP マニュアル)
      3. Class Reference/WP Object Cache (WordPress Codex)
      4. l3rady/WordPress-APC-Object-Cache (GitHub)

      3. は WordPress Codex 内で唯一APCuに言及しているページ。4. はそのなかで「APCuを用いてWordPress オブジェクトキャッシュに永続的なバックエンドを提供する」と紹介されていたページ。

      キャッシュ関連関数 wp_cache_*() をAPCu版に置き換える

      4. には object-cache.php と README 文書しかない。README 文書を読むと、object-cache.php を /wp-content フォルダーに置けとだけ書いてある。

      これだけでなぜ動くのか。調べてみると、wp_start_object_cache() 内で/wp-content/object-cache.php があれば読み込むようになっていた。

      if ( $first_init ) {
          if ( ! function_exists( 'wp_cache_init' ) ) {
              if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
                  require_once WP_CONTENT_DIR . '/object-cache.php';

      この仕組みによって wp_cache_add() などの標準関数を外部関数に置き換えることができる。この仕組みは drop-in と命名されているらしい。_get_dropins() を呼び出すと一覧できる模様。シングルサイトでは8種のドロップインがあるようだ。

      APCu を動かしてしばらくすると管理画面でおかしな挙動が見受けられるようになったので、ファイルの冒頭に以下のコードを挿入した。

      if ( is_admin() ) {
          return false;
      }

      APCuの使われ具合を確認する

      APCuを使うだけならば、以上。APCuの働き具合を確認するためのファイルも簡単に設置できる。

      APCu のソースコード krakjoe/apcu: APCu – APC User Cache (GitHub) に同梱されている apc.php というファイルを Web サーバーのどこかに置けばよい。

      効果を確認する

      キャッシュの効果を Query Monitor というプラグインで測定した。テスト対象はサイトのトップページ。

      ページ生成時間 [S]最大メモリ使用量 [kB]データベースクエリー [S]クエリー数[Q]
      10.1616,5310.031997
      20.1215,5760.012429

      SQLを発行する回数が97から29と3割以下になっている。キャッシュされないクエリーを調べてみると、多くがget_posts()だった。get_posts()はオブジェクトキャッシュの対象外らしい。

    • 創造技法のSECRET(コトラー)

      まえがき

      『創造性分野の草分け的な著者であり、研究者であった故アレックス・オズボーンは、置換や誘発を起こすためのゲームや創造技法が、すべて七つの行動を基準にしていると指摘した。われわれはこれを六つに絞りこみ、頭文字をつなげて「SECRET」と呼ぶことにした。』

      リスト

      あとがき

      まえがきを含めて、フィリップ・コトラー、フェルナンド・トリアス・デ・ペス 『コトラーのイノベーション・マーケティング』(翔泳社、2011年)より。

      オズボーンの七つ、つまり SCAMPER を絞り込んだというだけあってすっきりしています。SCAMPERもよい頭字語ですが、Adapt が具体的に何をすることなのかキーワードだけでは思い出しづらかったり、Put to other uses のような acronym-ize の苦労がうかがわれる項目もありました。

      • 組織コミットメントの3次元

        まえがき

        『ジョン・マイヤーとナタリー・アレン(略)は、 3つの次元から、組織コミットメントのあり方を捉え直すべきだとしている。』

        リスト

        あとがき

        まえがきを含めて、金井 寿宏,、高橋 潔 『組織行動の考え方―ひとを活かし組織力を高める9つのキーコンセプト』(東洋経済新報社、2004年)より。

        挙げられていた参考文献(1)によると、3次元はそれぞれ a desire (affective commitment), a need (continuance commitment), an obligation (normative commitment)。

        本書では、マイヤー教授が結婚のたとえを使っていたとありました。個人対組織だけでなく個人対個人の人間関係において「なぜこの関係を続けるのか」を考える要素として使えるということですね。

        好きだから、得だから、「べき」だから、組織に残る。好悪・損得・善悪の判断基準だとみなせば、これも情・知・意的な枠組みです。

          参考文献

          (1) Meyer, John P., and Natalie J. Allen. “A three-component conceptualization of organizational commitment.” Human resource management review 1.1 (1991): 61-89.

        • 論理的に問題を解決するための5つの思考回路

          まえがき

          『人は何かを考える時、かならず次のような手順があります。周りの状況を調べ(1)、解決するための手段を考え(2,3,4)、それを1つ1つ実行していく(5)、という手順です。「5つの思考回路」は、これらの手順を分解したものなのです。』

          リスト

          あとがき

          まえがきを含めて、ソニー・グローバルエデュケーション 『5分で論理的思考力ドリル』(学研プラス、2019年)より。まえがきもリストも本文を一部編集しつつ引用しました。

          2以降は実質的に「どうすればよいか」なので、問題解決としてはかなり解決寄り。本書には各回路をテーマにした短いクイズがたくさん載っています。

          • Transient API をカウンターとして使う

            Transient API を使う理由

            ここ1週間でよくアクセスされたリストのウィジェットを作るため、簡易アクセスカウンターが必要になった。カウンターの格納先としては投稿のカスタムフィールド (postmeta) やファイルもあり得るが、Transient API は有効期間の情報を持たせられる。

            シンプルなカウンター機能

            Transient のキー は特定の文字列+投稿 ID、値はアクセス回数とする。すると次のようなコードでOKのはず。2行目は三項演算子。intval() は (Transient キーを他でセットしていなければ)不要だが、想定外のミスに備えて。

            // Transient キーを設定
            $transient = 'LFTEST'.get_the_ID();
            
            // カウンターを取得
            $count = intval( get_transient( $transient ) ) ?: 0;
            
            // カウンターをインクリメントして Transient を更新
            set_transient( $transient, ++$count );
            

            一定のタイミングでクリアする

            必要なのは「最近よく読まれている」リストなので、このカウンタは一定期間ごとにクリアしたい。set_transient() は第三引数に「現在から有効期限が切れるまでの秒数」を持たせられるが、単純に WEEK_IN_SECONDS と指定するとセットするたびに期限が延びていくだけなので、一週間に一度でもアクセスがあると値が累積されることになる。

            そこで、土曜日(のゼロ時)にカウンターをリセットすることにした。第三引数には期限(時刻)でなく期間(秒数)しか指定できないので、次のようにしてみた。

            // Transient キーを設定
            $transient = 'LFTEST'.get_the_ID();
            
            // カウンターを取得
            $count = intval( get_transient( $transient ) ) ?: 0;
            
            // 土曜ゼロ時にクリアされるようにしてカウンターをインクリメント
            set_transient( $transient, ++$count, strtotime('next saturday')-strtotime('now') );
            

            オブジェクトキャッシュを回避する

            その後 APCu をオブジェクトキャッシュとして使用したところ、不具合が生じた。

            Transient API はオブジェクトキャッシュが利用可能であればそれを利用し、Options テーブルにはアクセスしない。それが Options API にはない Transient API ならではの仕様で、高速化に貢献している。

            ただ、私の理解では、オブジェクトキャッシュは用意されたメモリを使い切ると設定した期限内でもクリアされてしまうことがあり、今回のように最長一週間値を保持させる仕組みとしては不向きである。

            そこで、この Transient だけオブジェクトキャッシュを迂回して Options テーブルに書き込ませる方法を考えた。

            get_transient() は冒頭で wp_using_ext_object_cache() によってオブジェクトキャッシュの有無を判定している。この関数はグローバル変数にタッチすることなく一時的にキャッシュの状態を変えられるようなので、 次のようなコードにすればよいはず。

            wp_using_ext_object_cache() は現在の状態を返すので、最終行のようにしておけば、たとえ将来的にオブジェクトキャッシュを使わなくなってもコードを変更する必要がない。

            // オブジェクトキャッシュを OFF にする
            $objcache_status = wp_using_ext_object_cache( false );
            
            
            // Transient キーを設定
            $transient = 'LFTEST'.get_the_ID();
            
            // カウンターを取得
            $count = intval( get_transient( $transient ) ) ?: 0;
            
            // 土曜ゼロ時にクリアされるようにしてカウンターをインクリメント
            set_transient( $transient, ++$count, strtotime('next saturday')-strtotime('now') );
            
            // オブジェクトキャッシュを 戻す
            wp_using_ext_object_cache( $objcache_status );

            おまけ:それでもオブジェクトキャッシュの恩恵は享受できる

            wp_using_ext_object_cache() はグローバル変数にタッチしないので、たとえ上のようにOFFにしても、Transient API が内部的に呼び出している Options API レベルではオブジェクトキャッシュが使われる。

            set_transient() はキャッシュオブジェクトが有効なら Options テーブルにはアクセスしない。しかしwp_using_ext_object_cache() でキャッシュをオフにすると add_option() が呼び出され、値は Optionsテーブルに挿入した後 オブジェクトキャッシュにも登録される。

            結果として、上のコードで オブジェクトキャッシュをオフにして get_transient() を呼ぶと、(オブジェクトキャッシュにデータが残っていれば)Options テーブルにアクセスすることなく値が取得できる。

          • フェイクニュース作成の4技法

            まえがき

            不確かな情報源をメディアに流布させる “source hacking” の4技法。

            リスト

            あとがき

            Data & Society — Source Hacking および Source-Hacking_Hi-res.pdf [PDF] より。

            タイトルを含めてかなり意訳したので、原文も引用しておきます。

            1. Viral Sloganeering: repackaging reactionary talking points for social media and press amplification
            2. Leak Forgery: prompting a media spectacle by sharing forged documents
            3. Evidence Collages: compiling information from multiple sources into a single, shareable document, usually as an image
            4. Keyword Squatting: the strategic domination of keywords and sockpuppet accounts to misrepresent groups or individuals

            マーティン・ファクラー 『フェイクニュース時代を生き抜く データ・リテラシー』(光文社、2020年)で『フェイクニュースの作り方は以下の3つに分けられる。』として、偽造・証拠のコラージュ・キーワードが紹介されていました。引用元が示されていなかったので調べてみたら冒頭の文書に行き当たりました。

            • 芸能の4要件

              まえがき

              『このような芸能の特質を実現するため、四つの要件が求められる。』

              リスト

              あとがき

              まえがきを含めて、熊倉 功夫 「概説:茶の湯の成立」(所収:茶の湯文化学会『講座 日本茶の湯全史〈第1巻〉中世』、思文閣出版、2013年)より。本文を編集してリスト化しています。

              まえがきの『このような芸能の特質』については「芸能の3特質」を参照のこと。

              茶会の四要素(おもてなしの四要素)」の原典を探していて見つけました。この文章では、一般的な芸能の4要件がこのようにあり、それを茶の湯に特殊化したものが「茶会の四要素(おもてなしの四要素)」という流れになっています。

              「茶会の四要素(おもてなしの四要素)」とは少し順番が違っています。「よそおい」が「ふるまい」を可能にするという順序で説明されていたので、それを尊重しました。

              この本からの他のリスト

            • 芸能の3特質

              まえがき

              (芸能には舞台芸能や民俗芸能、日本独自の茶の湯・いけばな・香などの室内芸能があるが、)『さて芸能とは、どのような特質をもつのであろうか。』

              リスト

              あとがき

              まえがきを含めて、熊倉 功夫 「概説:茶の湯の成立」(所収:茶の湯文化学会『講座 日本茶の湯全史〈第1巻〉中世』、思文閣出版、2013年)より。本文を編集してリスト化しています。

              ラベルを貼るなら、舞台性・一回性・非日常性となるでしょうか。

              この本からの他のリスト

            • 茶会の四要素(おもてなしの四要素)

              まえがき

              『四つの要素が茶会という場で総合され、非日常の時間と空間を主客ともども体験する』

              リスト

              あとがき

              まえがきを含めて、参考文献1より。検索中にGoogle Booksの内容として見つけたもので、残念ながら号数、著者名がわかっていません(出版社のサイトには第30号までの目次しかありませんでした)。

              おもてなし=よそおい・しつらい・ふるまい といった3要素はよくみかけるのですが、本書では「おもい」という要素が加わっています。他の3要素は目に見える要素で、「おもい」はそれらの根底にあるものですから少し異質ですが、この要素があるほうがわかりやすい。

              参考文献2を経由して、参考文献3でこの4要素についての解説を読んだところ、茶の湯やおもてなしよりも大きな概念だったので「芸能の4要件」として別に収集しています。

              この本からの他のリスト

              参考文献

              1. 『日本の美学』 第 29-33 号 ぺりかん社, 2001年
              2. 宮内壽美. “「異次元空間」 茶室-歴史化と自然化, 山形県金山町の事例を中心として.” (2015).
              3. 茶の湯文化学会『講座 日本茶の湯全史〈第1巻〉中世』(思文閣出版、2013年)