2012年12月27日木曜日

TEDの字幕は解決したけどfuluはダメだの巻

TEDが見られるようになったのに気を良くして、fuluもお試し期間を利用して字幕が読めるか確かめてみました。同じ字幕だからうまく行くだろうというのは、「皮相浅薄」で事はそう簡単ではありませんでした。有難いことに、こちらに解決の記載がありました。



$ sudo apt-get install ttf-arphic-uming
$ cd /usr/share/fonts/truetype/arphic
$ sudo cp ../takao-mincho/TakaoMincho.ttf uming.ttc

導入前




uming 導入後




uming 上書後




但し linux-mint をインストールした直後にこの作業をすると文字化けは治りませんでした。文字化けを回避するには、すべてのアップデートを導入した後にこの作業を実施しなければなりませんでした。もちろん、chromeの flush のプラグインの PPAPI は無効にしました。ちなみに、アップデートを導入する前にこのフォント入れ替え作業を行なってしまった場合でも、sudo apt-get remove ttf-arphic-uming してから再度導入すればちゃんと表示されました。

ttf-arphic-uming は中国語用のフォントらしいのですが、これで文字化けは少し発生するものの字幕が表示されるということは、中国語用フォントというのは日本語フォントを包含しているものなのでしょうか。また、中国語のフォントを導入しないと見られないのは flush のせいなのか、fulu の字幕設定に使っているフォントに問題があるのかも謎です。fulu から渡されるフォント情報が、見るシステムによって変わるとも思えないので、flush の実装がおかしいのでしょうか。また、アップデートモジュールの何が影響しているのかも不明です。お呪いのように、教えていただいた方法で文字化けは解決しましたが、内容の理解は全くできず「皮相浅薄」です。フォント関係の知識を深めないといけませんね。

2012年12月19日水曜日

電源管理とリモートデスクトップ再び

先日、windows8の電源管理でスリープを妨げていた srvnet サービスを電源スリープより優先順位を下げてスリープできるようにしたが、「鹿を追う者は山を見ず」で、スリープさせることにこだわりすぎて、本来、自分がやりたかったことは実現できていませんでした。



  1. テレビ録画予約のタイミングで目覚めて、録画が終了したらスリープさせたい。
    ⇒1時間に1回位のタイミングで意図せず目覚めてしまう。
    ⇒リモートデスクトップからは録画に失敗してしまう。

  2. 遠隔操作したい時に目覚めさせ、リモートデスクトップで操作したい。
    ⇒1時間に1回位のタイミングで意図せず目覚めてしまう。
    ⇒リモートで録画再生しても、操作内容がテレビ画面に繁栄されない。

  3. リモートデスクトップからスリープさせたい。
    ⇒RDP接続は快適なものの、メニューからスリープを選べない。

  • リモートから録画できなくなった原因と対処


    録画機に設置してあるスマートカードは管理者権限のユーザ1人しか利用できないらしい。RDPでリモート接続すると二重ログインの扱いとなってしまい、スマートカードにアクセスできずに録画に失敗していたようです。

    対処療法ですが UltraVNC を導入してみると、リモートの操作がテレビ画面にそのまま反映され、テレビ視聴、録画も問題なく行うことができました。 また、リモートよりスリープやシャットダウンの指定もできます。そもそも、RDPとVNCは、仮想画面と実画面という根本的な差異があるのですね。しかし、RDPの快適さになれた後はVNCの重さが気になります。



    そこで、情報検索中に出会った chrome のリモートデスクトッププラグインを試してみることにしました。これは、VNCと同じで実画面の遠隔操作をブラウザ内で実現したものです。これが意外や本家のVNCよりレスポンスが良好で、VNCが紙芝居的に動くの対して少しジャミジャミするくらいで表示されます。おまけに remmina でのリモート接続ではうまくいかなかった音声も聞こえてきます。リモート接続で動画をみるのが目的ではありませんが、反応が良いのには越したことがないので、これを利用することにしました。



    ただし、RDPやVNCは、録画機がスリープ状態であっても、接続にいくと目覚めてくれますが、chrome のリモートデスクトップで接続した場合は、目覚めてくれませんでした。この対策については、次の電源制御と絡めて対応しました。

  • 意図しないタイミングで目覚める件の対処


    録画サーバがスリープから意図しないタイミングで目覚める件は、我が家にある携帯、複合機、妻のMACなどから接続要求が発せられているのではないかと推測するのですが、ネットワークをモニタして解析する力がないので、一つずつ電源を落として数時間様子をみるくらいしか原因究明方法が思いつきません。時間もかかるし、なんと言ってもぉ妻様まで巻き込むことになるので、こんな実験は不可能です。

    そんなときに出会ったのが、Magic Packet というスリープを解除させる専用の通信コマンドです。パソコンがWakeOnLANという機能に対応している場合、ネットワーク接続に対して目覚めさせる方法とMagic Packetだけに反応して目覚めさせる方法の2種類が選択できるらしいのです。そこで、録画サーバをMagicPacket だけに反応するように設定しました。



    リモートマシンからは Magic Packet 送信ツール(powerwake)で解除させることにしました。

    $ sudo apt-get install powerwake
    $ powerwake xx-xx-xx-xx-xx-xx
    

    サーバーのMACアドレスは、検索>cmd>ipconfig で表示される物理アドレスで参照しました。
    $ ipconfig/all|more
    

    ひと手間増えましたが、意図せず勝手に目覚めを繰り返すよりは、はるかに気持ちが楽になりました。

    以上で、「録画のタイミングでの起動、停止」と「遠隔操作が必要な時に起動、停止」が行え、勝手に目覚める問題も解消しました。chrome のリモートデスクトップを導入しなければ、気づかなかったかもしれないので「棚から牡丹餅」な気分です。



2012年12月15日土曜日

.face 撮り直したい!

imac で mint を使っていますが、最近はインストールする際に isight を認識してポートレートを作成してくれます。いい顔して撮ったつもりなのですが、少ない髪の毛がちと乱れているのに気づいて撮り直したくなりました。どうやら、ホームディレクトリの .face というファイルに保存されているようです。

インストールの際に自動で認識するくらいだから標準にインストールされるアプリがあるのだろうと思い、メニューの中を探してみても、どうも該当するものが見当たりません。ubuntu、imac、isight、.face などのキーワードでネットで検索してもどうもしっくりしたものに当たりません。

しばし悩んだ後に、最近は skype などでデレビ電話(古い言葉)するのが一般的なのを思い出して、ubuntu、webcam などのキーワードで検索してみました。古い記事はあっても、最近は悩んでおられる方は少ないみたい。話題にもならない小ネタに悩む自分に相変わらずガックリです。

でも、どうやら cheese やら motion やらの文字を見つけ、はたと思い出しました。そう、はるか昔(1年前)、この imac を妻から譲り受けたときに 、同じ事に悩んで cheese を見つけてインストールしたことを。物忘れって怖いですね。そう言えば、まだ三十路だった頃、半年くらい前まで家に遊びに着ていてくれた後輩から電話がかかって、名前も存在も思い出せずに「ごめんなさい」といって電話切ったことがありました。その後、1年くらいしてから、電話の主は後輩だったのを思い出して落ちこみました。それに比べれば軽いです。

Mint でのログイン画面のポートレートの入れ替え方法は、
メニュー>システム管理>ユーザアカウントから写真をクリックして、写真を選択します。トリミングの機能までついています。どうせならココで isight も起動してくれればと思います。ちなみに、ここで写真を入れ替えても.face は更新されませんが、画面ロック時の画面はユーザアカウントで指定した写真が表示されてます。.face の謎は深まりこそすれ、解決されることはありませんでした。



しかし、波平さんって54歳だったのかぁ〜。タラちゃんのおじいちゃんだもんね。。。。

2012年12月14日金曜日

すうどぅぁ〜ず

昔、「スーダラ節」というのが流行ったことがあるらしい。既に人生後半を泳いでいる私が子供だった頃に、昔流行った曲としてテレビで紹介されていました。子供ながらに、その恐ろしいばかリの晴れっぷりに驚いた覚えがあります。その後、テレビの対談番組でこの歌を歌っていた植木等という人をみましたが、すごく生真面目で硬い感じのする人でビックリした覚えがあります。「あの声で蜥蜴食らうか時鳥 」です。(ちと違うか。。)



見かけによらないといえば、usermod コマンドです。ubuntu12.10での強制断捨離 事件以来、快適な環境探し地獄に陥っておりますが、virturalbox をインストールした際も「usb を有効にするにはこれをしなさい」指示に従い、グループにユーザ追加を行いました。



昔育ちのですので、直接 /etc/group を触ろうかとも思いましたが、最近は etc 周りも色々複雑になっているので、コマンドを調べて追加しました。

# groupadd vboxusers
# usermod -G vboxusers naoki

この時は、これで無事エラーも出なくなり事無きを得ました。しかし、後日 mint のアップデートマネージャから更新がある旨の連絡を受け、ダブルクリックしてパスワードを入力したあと全く反応がなくなりました。gui が壊れたのかと思い、コマンドラインから実行しようとすると sudo も叱られます。非常に焦りました。
$ sudo -s
[sudo] password for naoki: 
naoki is not in the sudoers file.  This incident will be reported.
$

幸い su コマンドのパスワードは、インストールしたての場合、メインユーザと同じになっていたので root になることができました。sudo のコースしかなかったらと思うとゾッとします。しかし、インストール後は root と デフォルトユーザのパスワードが同じであることを知らなかった私も相変わらずです。インストール時にユーザと root のパスワードは別に入力するユーザインタフェースのが良いのでしょうが、個人で使う場合には簡単であることのほうが重要なのでしょう。

パッケージマネージャが起動できなかった原因ですが、例の usermod の実行前後で、以下のようなことが起こっていました。

# diff group group.bk
5c5
< adm:x:4:
---
> adm:x:4:naoki
18c18
< cdrom:x:24:
---
> cdrom:x:24:naoki
21c21
< sudo:x:27:
---
> sudo:x:27:naoki
23c23
< dip:x:30:
---
> dip:x:30:naoki
35c35
< plugdev:x:46:
---
> plugdev:x:46:naoki
46c46
< lpadmin:x:107:
---
> lpadmin:x:107:naoki
63c63
< sambashare:x:125:
---
> sambashare:x:125:naoki
65d64
< vboxusers:x:1001:naoki

なんと、インストール時に設定されていた group 属性が全部初期化されて、指定したグループだけになっていました。ご存知な方には、当たり前の話なのだと思いますが、せめて更新時に警告でも出して頂けるとありがたいです。たしかに、add とかいう名前のコマンドではないので追加するだけと思い込むのが悪いのですが、影響が大き過ぎますよね?

2012年12月13日木曜日

仮想画面を大きくしてxubuntuを使いたい!

TEDの日本語字幕が□になる件で、仮想マシン上のMINTを使って感じたのですが、仮想マシンのMINT上でフラッシュを見るのは辛いという事です。他のパッケージでの状況を見るために xubuntuでもインストールをして見ましたが、パッケージインストール、再起動、プラグイン確認などの動作確認を行うにはこちらのほうが快適に作業できました。「過ちては改むるに憚ることなかれ」というほどでもないですが、ホストOSはMINT、ゲストOSはxubuntuが好み組み合わせということになりました。

以前、xubuntuを仮想マシンのゲストOSの候補にしなかった理由の一つに、仮想マシンの画面サイズが小さいということがあったのですが、GestAdditions 機能を使うことで全画面表示も簡単にできたので、制約もなくなりました。昔は、vmware を使用していたのですが、vmwareでも同じような仕組みを利用していたにも関わらず、virturalbox での機能を見過ごすというのは、相変わらずです。

  • 仮想CDのマウント

    デバイス>GestAdditions をクリックすると仮想CDがマウントされる。


  • GestAdditions の導入

    端末の特権ユーザにて VBoxLinuxAdditions.run を起動してインストールする。


  • 再起動後前画面表示

    仮想ウインドウ枠をダブルクリックすると全画面表示になる。パッケージの更新でこの機能が無効になることがあるので、その場合は再度 GestAdditions をインストールする。


  • ホストのメモリ使用量

    ホストがMINT14、ゲストをxubuntuで、それぞれOS上でchromeを立ちあげていますが、メモリ使用量やCPU使用率は結構低くて快適です。

Mint14でTEDみたい(よね?)

エンジニアにおすすめのTED」に触発されてTEDでも見て前向きになってみようと思った。玉に前向きなことをしようとすると突き落とされる星の下に生まれてしまった化石人間は、やっぱり、ちゃんと突き落とされました。

  • せっかくみようと思ったのに、日本語字幕が□です。ウインドウズではFirefoxでもchromeでもちゃんと表示されています。でも、リモートデスクトップではさすがに動画は苦しいので、軽い気持ちでMintでも見られるようにできないかなと調べ始めました。



  • いろいろネットで調べてみると、FLASHと日本語フォントは昔から問題が多かったらしく、いろいろと情報がでてくる。12.04 までは大体以下の4点で解決できるらしいのですが、12.10からは無理っぽいっていう感じの情報までしか辿れませんでした。



  • かなり滅入ったので、気分転換に外にゴミ出しにでかけ、冷たい夜風にあたっていたら、ふと「仮想マシン上でも同じように発生するのだろうか?」という疑問がわいてきました。部屋に戻り、仮想マシン上の各種 ubuntu でTEDを見てみると普通に日本語表示されていました。なんと自分のホストマシンだけの問題だったのですね。



  • 何かのパッケージの導入過程で発生していると思われるので、ホストマシンと同じパッケージを一つずつ導入しながら様子をみてみました。最初は、TEDの画面で日本語を選択した時だけ化けてしまうので、日本語パッチの導入を疑っていましたが、導入しても影響はありませんでした。

  • 次々と問題なくインストールは続き、最後に photoshp 用に wine を導入したら、ついに文字化けが発生しました。wine のインストール中に問い合わせがあるマイクロソフトコアフォントが怪しいと当たりをつけ、 /usr/share/fonts/truetype にインストールされていた同フォントを、大胆にもバッサリ削除してみました。すると、TEDの日本語字幕がちゃんと表示されました。chrome もPPAPI側のプラグインを "about:plugins" から無効にすると同様に表示されました。



  • という成り行きでしたが、日本人でMint14とwineとTED(fuluもかな?)を所望しない限りは発生しないわけですから、あまり話題にもならないのかもしれません。今回の対処方法は、フォント周りの事がよくわかっていないのでなんか問題も発生しそうですが、とりあえず、これで使おうと思っています。フォント周りを綺麗に解決するのは課題ですね。(その前に修正パッチが出回るでしょう。きっと。。)

2012年12月11日火曜日

即販価格のwindows8(3300円)

ウインドウズ8を「朱を奪う紫」に例えるならば、「開けて悔しき玉手箱」になろうとも果敢に挑まなければ、化石人間の生息場所は狭まるばかりである。なんていう前向きな話ではなく、今ならアップグレードが3300円というマイクロソフトの即販戦略にやられたのである。「飛んで火にいる夏の虫」である。とはいうものの、ウインドウズ8は結構気に入りました。

朱を奪う紫


  • 私にとって一番良かったのは、即販価格でもプロフェッショナル版なので、標準のリモートデスクトップが使えるようになったことです。標準のリモートデスクトップ(RDP)は、ホストマシンに接続されているディスプレイのサイズに関係なく、リモートマシンの画面サイズでつかえるので、綺麗で広いマックの画面サイズで操作が可能になりました。また、VNCに比較して、リモートマシン上でブラウザやオフィスを使う気になれる軽快感もいいですね。


  • 次に良かったのは、コマンドや設定画面が検索窓から呼び出せることです。メニュー階層を辿らなくても1アクションで機能を呼び出せるので、NT、XP、VISTA、WINDOWS7と世代が変わるたびに、微妙にメニューの操作感が変って困った覚えがある私としては便利です。


  • もうひとつのお気入りは、起動速度と全般の軽快感の向上です。おそらく、VISTA、WINDOWS7より確実に軽いと思います。世代を経る度に、速度向上のアナウンスとは裏腹に重くなっていった過去のリリースの苦々しさを味わうことはなかったです。



開けて悔しき玉手箱


  • マイクロソフトアップデートが「更新失敗」と「更新前の復活」を繰り返す無限地獄に陥ってしまいました。

    クリーンブートという方法でマイクロソフト以外のサービスを停止して、マイクロソフトアップデートの各更新プログラムを一つずつ手動で更新していくという気の遠くなるような作業を繰り返した結果、KB2770917という更新プログラムをインストールするとこの現象が発生することが解りました。



    私の場合は、MagicTV というソフトと干渉を起こしていたようで、このソフトを削除することで無事にインストールできました。そもそも MagicTV などは使っていなかったのだが、マシンを購入した時からデフォルトでインストールされていたようです。

  • 正常に動作しだしたのも束の間。今度は指定時間が過ぎてもスリープモードに入らないという現象に陥りました。こちらは、powercfg.exe という電源管理ツールで、srvnet というサービスが阻害していることが解り、同ツールで電源管理とサービスのプライオリティを変更することで対処できました。知らない事ばかりとはいえ、やはり、こういうトラブルに遭遇せずに過ごすには、現状維持に甘んじるが一番なのでしょう。

    コマンドプロンプトを管理者モードで開くのは、ファイルエクスプローラのファイルメニューから選ぶのですね。



    電源管理ツールでスリープを邪魔しているサービスと優先順位の入れ替え。


2012年12月6日木曜日

virtualbox には、Mint かも!

ミイラ取りがミイラになってしまった。

ubuntu12.10 へのアップグレードの失敗で強制断舎利させられてからひと月。ちょっとした実験にはいつも virtualbox を使わせて頂いていたが、まだインストールしていないのを思い出してインストールしてみた。

ubuntu12.10 は、私の core2duo の imac 上では、ちょっと使う気になれないほどの重さになっていた。そこで、virtualbox 上でも快適に使えるパッケージ探しが始まった。比較しているうちに LinuxMint が気に入ってしまい、ホストOSまで入れ替えてしまった。

  1. 比較環境
    • ホストマシンはメモリ3.8G、CPUはCore2Duo 2.8GHz
    • ホストOSはLinuxMint14(64bit)
    • VirtualBox 4.2.4 r81684
    • ゲストOS割当てメモリは1.3G

  2. 比較結果 

    パッケージ ログイン画面 ログイン完了 ブラウザ起動 メモリー
    lubuntu 30秒 5秒 5秒 419M
    xubuntu 30秒 10秒 5秒 520M
    ubuntu 31秒 27秒 15秒 879M
    LinuxMint 32秒 24秒 6秒 717M

  3. lubuntu

    デフォルトで導入されているソフトも軽量なものが選択されていて軽快に動作します。ただ、フォント、見栄え、導入ソフトなどを考えると、どうしてもハードの資源が足りない場合の選択肢ということにしました。


  4. xubuntu

    軽くて、見栄えもよくこれにしようかと思いましたが、仮想画面が imac の画面サイズの大きさにできないのが残念でした。きっと設定があるのでしょうが調べるのも大変なので第2候補としました。また、ホストOSの ubuntu12.10 に xubuntu を導入して利用してみましたが、一緒に導入していると軽快さがあまり感じられませんでした。


  5. ubuntu

    起動時間とかは他のパッケージと大差はないが、ログインしてからの unity3D のソフトシュミレーションの重さが効いて、仮想環境上では使う気になれず。なぜか、何回か起動に失敗したりもしました。


  6. LinuxMint

    起動時間やログイン時間は ubuntu オリジナルとあまり変わらないが、一旦ログインしてからの各アプリの速度は xubuntu 並に軽快です。menu の検索も早く、かなりお気に入り。また、仮想環境でもインストール直後から imac のフルサイズの画面サイズで使えるのもよいです。結局ホストOSもこれにシチャイました。


2012年12月3日月曜日

wordpress の header.php(後半)

今日は、header.phpの後半部の読書です。body 以下の内容なので style シートと密接に絡みます。オリジナルなテーマ作りに繋がるといいなと思ってます。
<body <?php body_class(); ?>>
<div id="page" class="hfeed">
  <header id="branding" role="banner">
      <hgroup>
        <h1 id="site-title"><span><a href="<?php echo esc_url(home_url('/')); ?>" title="<?php echo esc_attr(get_bloginfo('name', 'display')); ?>" rel="home"><?php bloginfo('name'); ?></a></span></h1>
        <h2 id="site-description"><?php bloginfo('description'); ?></h2>
      </hgroup>
      <?php
        // Check to see if the header image has been removed
        $header_image = get_header_image();
        if ($header_image) :
          // Compatibility with versions of WordPress prior to 3.4.
          if (function_exists('get_custom_header')) {
            // We need to figure out what the minimum width should be for our featured image.
            // This result would be the suggested width if the theme were to implement flexible widths.
            $header_image_width = get_theme_support('custom-header', 'width');
          } else {
            $header_image_width = HEADER_IMAGE_WIDTH;
          }
          ?>
      <a href="<?php echo esc_url(home_url('/')); ?>">
        <?php
          // The header image
          // Check if this is a post or page, if it has a thumbnail, and if it's a big one
          if (is_singular() && has_post_thumbnail($post->ID) &&
              (/* $src, $width, $height */ $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), array($header_image_width, $header_image_width))) &&
              $image[1] >= $header_image_width) :
            // Houston, we have a new header image!
            echo get_the_post_thumbnail($post->ID, 'post-thumbnail');
          else :
            // Compatibility with versions of WordPress prior to 3.4.
            if (function_exists('get_custom_header')) {
              $header_image_width  = get_custom_header()->width;
              $header_image_height = get_custom_header()->height;
            } else {
              $header_image_width  = HEADER_IMAGE_WIDTH;
              $header_image_height = HEADER_IMAGE_HEIGHT;
            }
            ?>
          <img src="<?php header_image(); ?>" width="<?php echo $header_image_width; ?>" height="<?php echo $header_image_height; ?>" alt="" />
        <?php endif; // end check for featured image or standard header ?>
      </a>
      <?php endif; // end check for removed header image ?>
      <?php
        // Has the text been hidden?
        if ('blank' == get_header_textcolor()) :
      ?>
        <div class="only-search<?php if ($header_image) : ?> with-image<?php endif; ?>">
        <?php get_search_form(); ?>
        </div>
      <?php
        else :
      ?>
        <?php get_search_form(); ?>
      <?php endif; ?>
      <nav id="access" role="navigation">
        <h3 class="assistive-text"><?php _e('Main menu', 'twentyeleven'); ?></h3>
        <?php /* Allow screen readers / text browsers to skip the navigation menu and get right to the good stuff. */ ?>
        <div class="skip-link"><a class="assistive-text" href="#content" title="<?php esc_attr_e('Skip to primary content', 'twentyeleven'); ?>"><?php _e('Skip to primary content', 'twentyeleven'); ?></a></div>
        <div class="skip-link"><a class="assistive-text" href="#secondary" title="<?php esc_attr_e('Skip to secondary content', 'twentyeleven'); ?>"><?php _e('Skip to secondary content', 'twentyeleven'); ?></a></div>
        <?php /* Our navigation menu. If one isn't filled out, wp_nav_menu falls back to wp_page_menu. The menu assigned to the primary location is the one used. If one isn't assigned, the menu with the lowest ID is used. */ ?>
        <?php wp_nav_menu(array('theme_location' => 'primary')); ?>
      </nav><!-- #access -->
  </header><!-- #branding -->
  <div id="main">
  1. body_class関数(wp-includes/post-template.php)
    body タグのclassを表示ページによって動的に切り替えている。クラスの内容は get_body_class関数から取得しており、複数のクラス名が返却されることがあるが、body_class はそれらをスペース区切りで連結している。HOME を開いた時には、twenty eleven では以下のように展開されている。
    <body class="home blog single-author two-column right-sidebar">
    
    ここで指定されているクラスは、twenty eleven では、使われていないクラスもあった。故に、自分でスタイルをカスタマイズする際には、HOME,SINGLE,SEARCH などに応じて展開される組み合わせを認識して、必要なクラスの定義を css に定義することになる。(参照)

  2. <div id="page" class="hfeed">
    "#page" は style.css に定義されているが、"hfeed"はどこにも定義されていない。インターネット上で調べてみると、テーマ twenty ten では利用されていた記載があるが、現在の twenty ten のスタイルシートには見つけることができない。もはや必要のないクラスなのか、カスタマイズを見据えたものなかわからない。

  3. header タグ
    「header 要素は、通常は、セクションの見出し(h1–h6 要素や hgroup 要素)を入れることを想定しています。しかし、これは必須ではありません。header 要素は、セクションの目次や検索フォームや関連ロゴを囲むために使うこともできます。」このタグは、html5 で拡張されたようだ。(参照) 

    また、header タグ内で使われている role 属性も HTML5 から追加された属性。そのタグに記載される内容を表すキーワードを記載するらしい。(参照)

  4. hgroup タグ
    「hgroup 要素は、セクションの見出しを表します。この要素は、小見出し、副題、キャッチフレーズなど、見出しが複数のレベルを持つとき、h1–h6 要素のセットをグループ化するために使います。」 これも HTML5 の拡張。なぜ必要なのか今ひとつわからなかったが、こちらに丁寧な説明があった。

  5. span タグ
    「<SPAN>タグはそれ自身は特に意味を持っていませんが、 <SPAN>~</SPAN>で囲んだ範囲をひとかたまりとして、スタイルシートを適用するのに用います。」とあるが、ここでは特にクラス指定などでスタイルを適用していないので、文書に構造的意味合いの付加・補強の意味合いが強いのであろう。

  6. get_header_image 関数(wp-includes/theme.php)
    ヘッダイメージのURL取得関数。管理画面よりランダム設定がされていれば、ランダムなURLが返却される。(参照)

  7. function_exists 関数(PHP)
    これはPHPの関数なんですね(参考)

  8. get_theme_support 関数(wp-includes/theme.php)
    custom_header が定義されていれば、その定義配列から width 値を取り出している。wordpress 3.1 以降の実装らしく日本語版のcodexは見当たらなかった。(参照)

  9. HEADER_IMAGE_WIDTH,HEADER_IMAGE_HEIGHT(wp-content/themes/twentyeleven/functions.php)
    twentyeleven_setup 関数内で $custom_header_support 配列にカスタムヘッダーの各種デフォルト値を設定している。管理画面よりカスタムヘッダーが設定されていない場合は、この配列に設定された値がそれぞれ、HEADER_IMAGE_WIDTH,HEADER_IMAGE_HEIGHT に設定される。

  10. has_post_thumbnail 関数(wp-includes/post-thumbnail-template.php)
    ポスト記事にサムネール画像があるかどうか判定する関数。ここでは、サムネール画像がある場合、サムネールを表示し、なければ、オリジナル画像を表示する判定に使用している。(参照)

  11. wp_get_attachment_image_src 関数(wp-includes/media.php)
    添付ファイルの表示用データを取得する。返却値にはイメージファイルのURL、幅、高さの順に格納されている。第2パラメータの画像サイズには、thumbnail, medium, large or full の文字列指定ができるが、ここでは、先に取得した画像表示エリアのサイズを渡している。ここで返却される画像サイズが、先に取得した画像表示エリアよりも大きければ、thumbnail サイズに変更するためである。(参考)

  12. get_the_post_thumbnail 関数(wp-includes/post-thumbnail-template.php)
    投稿記事/ページ編集画面で設定した投稿サムネイルを取得する。ここは、対象サムネール画像が先に取得した表示エリアよりも大きい場合に、サムネールサイズに変更している。返却値はhtmlのソースコードである。(参照)

  13. header_image 関数(wp-includes/theme.php)
    get_header_image 関数を呼び出しているのみ。get_header_image関数は、カスタムヘッダーのデフォルトイメージの url または、ランダムヘッダーのurlを出力する。(参照)

  14. get_header_textcolor 関数(wp-includes/theme.php)
    get_theme_mod 関数を呼び出しているのみ。get_theme_mod関数は、カスタムヘッダーのデフォルトテキストカラー名を出力する。(参照)

  15. get_search_form 関数(wp-includes/general-template.php)
    サイト内検索のテンプレートを読み込んで出力する。テンプレートはsearchform.phpで、存在しない場合はデフォルトのサイト検索コードが出力される。(参照)

  16. nav タグ
    ナビゲーションであることを示し、ウェブサイト内の他のページへのリンクや、ページ内リンクなど記載する。文書に構造的意味合いの付加・補強を目的とするHTML5で導入されたタグ。(参照)

  17. wp_nav_menu 関数(wp-includes/nav-menu-template.php)
    これは、ここを参考にもう少し調べよう。