f

アーカイブ

2016-03-26

caw.vim was changed command name "i, I, a" -> "hatpos, zeropos, dollarpos" on 2016-03-20 and 2016-03-28

2016-03-26にコメントのオンオフの切り替えVimプラグインcawのバージョンをNeobundleでを久しぶりに更新したところ警告が出るようになった。

caw.vimはtyruさんが作成したコメントのオン/オフを即座に切り替えるVimプラグインだ。前身のCommentAnyWay.vimの最初の公開がとなっており、実に7年の歴史のあるプラグインだ。

tyru/caw.vim: sophisticated comment plugin

Vim pluginに関する情報はネット上ではあまり見つからないので参考のために掲載する。

再現方法

以下のコマンドを実行する。または、このコマンドが既定でマッピングされているgciキーを押下する。tyruさんの指摘を受け、<Plug>(caw:I:toggle)<Plug>(caw:i:toggle)(大文字のIが小文字のiに変更)に修正した

<Plug>(caw:i:toggle)

以下の警告が表示された。

<Plug>(caw:i:toggle) was deprecated. please use <Plug>(caw:tildepos:toggle) instead.

<Plug>(caw:i:toggle)は廃止予定なので、<Plug>(caw:tildepos:toggle)を代わりに使ってくれとのこと。

また、同様に<Plug>(caw:I:uncomment)(既定ではgcI)は<Plug>(caw:zeropos:uncomment)を代わりに使ってくれとの警告がでた。

原因

の以下のコミットでコマンド名を変更したようだ。

Rename small_i,capital_i,a -> tildepos,zeropos,dollarpos · tyru/caw.vim@df19123

また、関連するissueも以下に立っていた(2016-03-27追記)。

Refactoring: write tests, rename <Plug> keymappings, global variables by tyru · Pull Request #35 · tyru/caw.vim

以下のコメント欄にもあるとおり、変数名が間違っていた(tildepos->hatpos)ので(以下のissue)さらに修正があった(2016-03-28追記)。

Wrong mapping name <Plug>(caw:tildepos:toggle) by tyru · Pull Request #48 · tyru/caw.vim

この変更によると、今まで使ってきたコマンド名を以下のように変更したようだ。tyruさんの指摘を受け、と2016-03-28に表を修正した。

caw.vimの2016-03-20と2016-03-28のコマンド名の変更点
変更前 変更後 説明
<Plug>(caw:I:toggle) <Plug>(caw:zeropos:toggle) コマンド0での移動位置(行頭)でのコメントオン/オフ
<Plug>(caw:i:toggle) <Plug>(caw:hatpos:toggle) コマンド^での移動位置(文頭)でのコメントオン/オフ
<Plug>(caw:a:toggle) <Plug>(caw:dollarpos:toggle) コマンド$での移動位置(行末・文末)でのコメントオン/オフ

今まで、i、I、aのように短い単語を使っていたのを、意味のわかりやすい単語に変更されたようだ。きちんとしたコードを書くのなら可読性を考えてこのようにわかりやすい名前を使ったほうがいいので、この変更点には納得だ。

また、help caw.vimhelp cawまたはhelp caw-faq-3 指摘を受け修正)でも確認できるが、コマンド名の変更理由としては以前の変数名の理解が難しいことを挙げている(2015-03-27追記)。

*caw-faq-3*
Q. Why you renamed keymappings and variables?
A. Because old keymappings and variables' names are hard to understand.

caw.vim/caw.txt at release/1.0.0 · tyru/caw.vim

まだ変更していなければ、コマンド実行の度に警告がでてしまうので変更しておこう。

2016-03-24

Bloggerにラベルごとの記事一覧のページを追加

Bloggerのブログ記事の数が200を越えてきた。ブログ記事の数が増えてくると、どこに何があったかわからなくなってくる。HPのように関連する内容にすばやくアクセスできるような一覧ページがあったほうがいいだろう。Bloggerにはブログとは別にページを作成する機能がある。この機能を使って、記事一覧のページを作成する。

ページの作成

まずは、なんでもいいから掲載するためのページを作っておく。

  1. Bloggerにログイン。
  2. 更新するブログを選択。
  3. 左側のメニューから[ページ]を選択し、[新しいページ]をクリック。

  4. なんでもいいから記事を作成して[公開]。ページの一覧に追加される(今回は「アーカイブ」というタイトルのページを)。

ブログ本体にページへのリンク項目を追加

  1. 左側のメニューから[レイアウト]を選択。

  2. どこでもいいが、今回はページのヘッダーにリンクが表示するように[crosscol]の[ガジェットを追加]を選択。

  3. [ページ]を選択。

  4. 真ん中の[表示するページ]に先ほど作ったページのタイトルが表示されている。[タイトル]などを適当に設定し[保存]。ここで設定する[タイトル]はリンクが設置される部分の名前のことだ。

  5. ブログを表示すると、トップページの上部に先ほど作ったページへのリンクとそれを設置する欄ができている。

後は、同じ手順で好きなだけページを作り、各ページの内容を充実させていけばよいだろう。

参考:ブログにページを追加する - Blogger ヘルプ

ラベルごとの記事一覧の生成

作成したページに手動で記事一覧を作っていってもよいのだが、今後記事を作成する度に手動で追加していくのは面倒だ。そこで、ラベルごとに記事一覧を生成する以下で説明されているJavaScriptを利用した。

Blogger でサイトマップを表示するツールを、投稿が 500 件以上あるブログにも対応させてみた | クリボウのプログラミングひとりごと

ブログ記事をHTMLモードで開き、以下のコードを記事一覧を設置したい場所に貼り付ければ完了だ。なお、3-5行目のwww.kuribo.infoの部分は自分のブログ記事のURLに変更する。

<script type="text/javascript" src="http://tools.kuribo.info/blogtoc/blogtoc-plus.js"></script>

<script type="text/javascript" src="http://www.kuribo.info/feeds/posts/summary?alt=json-in-script&callback=loadtoc&max-results=500&redirect=false"></script>
<script type="text/javascript" src="http://www.kuribo.info/feeds/posts/summary?alt=json-in-script&callback=loadtoc&max-results=500&start-index=501&redirect=false"></script>
<script type="text/javascript" src="http://www.kuribo.info/feeds/posts/summary?alt=json-in-script&callback=loadtoc&max-results=500&start-index=1001&redirect=false"></script>

<script type="text/javascript">showPosts();</script>

例えば、以下のようにラベルと記事タイトルが五十音順にソートされて順番に掲載される。

このままだと、全てのラベルが一つのページに表示されて少し使いにくい。今後必要に応じて、項目の多い特定のラベルだけ別のページに分離するなどしたらいいだろう。

2016-03-23

"Can't find a usable tk.tcl" when running git-gui and gitk

Git標準のGUIにはgit guiとgitkがある。Ubuntuなどでは以下のコマンドでインストールできる。

sudo apt-get install git-gui gitk

しかし、Ubuntu14.04でGitのGUIとしてgit guiやgitkを試そうとすると以下のようにエラーがでて実行できなかった。

git gui
application-specific initialization failed: Can't find a usable tk.tcl in the following directories: 
    /home/senooken/local/stow/tcl-8.6.3/lib/tcl8.6/tk8.6 /home/senooken/local/stow/tcl-8.6.3/lib/tk8.6 /usr/lib/tk8.6 /lib/tk8.6 /usr/library



This probably means that tk wasn't installed properly.

Error in startup script: can't rename "tk_optionMenu": command doesn't exist
    while executing
"rename tk_optionMenu real__tkOptionMenu"
    (file "/usr/lib/git-core/git-gui" line 722)

以下のようにコマンドを管理者権限で実行するとできた。

sudo git gui
sudo gitk

参考:Error finding tcl.init when running Git GUI - Stack Overflow

2016-03-21

「Boolean」の翻訳を「論理型」とすべき3の理由

プログラミング言語やHTMLのようなマークアップ言語などプログラミングに関する文書を呼んでいるとboolean(ブーリアン)という単語に出くわす。Booleanとは真(True)と偽(False)という2値をとるデータ型のことである。

情報元によって、このBooleanの翻訳や呼び方が異なっている。以下のように呼ばれたり訳され、最後に「型」や「値」がついたりつかなかったりする。

ブール、ブーリアン、真偽、論理、真理

このBooleanの呼び方としてどの訳し方がよいか気になったので調べた。その結果「論理型」と訳すのがよいという結論が得られた。その理由は以下3点だ。

  1. Booleanはlogical data type(論理型)の特殊なケースであること。
  2. JIS規格での翻訳の採用数が一番多い。
  3. 論理演算と用語が統一される。

以下でそれぞれについて説明していく。

Booleanの由来

Wikipediaによると、Booleanというのはイギリスの数学者であるGeorge Booleから名付けられている。ただ、以下のようにboolean data typeはlogical data typeの特殊なケースとも記述されている。

It is a special case of a more general logical data type; logic does not always have to be Boolean.

Boolean data type - Wikipedia, the free encyclopedia

このことから、Booleanはlogical data type、つまり論理型と呼んでも意味としては間違っていないことがわかる。

JIS規格での翻訳の採用数

Wikipediaの記述だけだと判断がつかない。実際に公的文書において、Booleanがどのように訳されているかを参考にしたいと考えた。そこでJISの翻訳例を確認した。

JISにおいて、JIS X 3000-3999にはプログラミング言語の標準が記載されている。本文中での対応やISOの規格書などと見比べることで、各種プログラミング言語でboolやBooleanをどのように翻訳しているか調べた。JIS規格は以下のサイトを参照した。

情報処理 X 3000-3999 | kikakuri.com

JIS規格に存在するプログラミング言語関係の規格は以下のサイトがまとまっている。

JIS規格 - 危ないRiSKのGoogleサイト

ここによると、プログラミング関係のJISは全部で31種類存在する。

2016-08-03追記:JIS X 4000-4999はプログラミング言語ではないがXMLやHTML,SGMLといったマークアップ言語や,JIS X 7000-7999の応用分野としてGISのデータ形式のGMLなどでもbooleanの使用を確認できたので追加した(日本工業規格(情報処理)の一覧 - Wikipedia)。

この内、SQLやFortranなど同じ言語での重複を除外すると実質18種類となる。さらに,JIS X 4000-4999と7000-7999で有力なマークアップ言語の15種類を合計して,33種類の言語についてboolやbooleanの翻訳がどうなっているか調査した。

調査結果を以下の表に示した。

JIS規格での単語boolの翻訳例
プログラミング言語JIS規格bool/Booleanの翻訳説明
Fortran JIS X 3001-1:2009 - boolは存在せすlogical(論理型)が使われている。
COBOL JIS X 3002:2011 ブール
Full BASIC JIS X 3003:1993 - boolは存在しない。
NDL JIS X 3003:1993 - boolは存在しない。
SQL JIS X 3005-1:2010 ブール
Pascal JIS X 3008:1994 論理
Ada JIS X 3009:2002 - JISは廃止。
C JIS X 3010:2003 論理
MIMPS JIS X 3011:1995 真偽
ISLISP JIS X 3012:1998 真偽
Prolog JIS X 3013:2001 - JISは廃止。
C++ JIS X 3014:2003 論理
C# JIS X 3015:2008 真理
CLI JIS X 3016:2010 真理
Ruby JIS X 3017:2013 真理
POSIX C JIS X 3030 - JISは廃止。
POSIX Shell JIS X 3031 - JISは廃止。
ECMAScript JIS X 3060:2000 論理
SGMLJIS X 4151論理
DSSSLJIS X 4153論理
HyTimeJIS X 4155-
HTMLJIS X 4156論理
XMLJIS X 4159-
CSS1JIS X 4168-
XSLT 1.0JIS X 4169論理
UML 1.0JIS X 4170論理
XSL 1.1JIS X 4179論理
SVG Tiny1.2JIS X 4197論理
VRMLJIS X 4215-1-
OpenDocument v1.1JIS X 4401真理
GMLJIS X 7136ブール
NewsMLJIS X 7201-
XBRLJIS X 7206ブール

調べたものの、BoolやBooleanという単語が使われていなかったり、JISが廃止されており確認できないものがあった。実際にBoolの使用を確認できたのは11+10=21言語であり、boolの翻訳の内訳は以下の表のとおりとなった。

boolの翻訳結果の集計
分類割合[%]言語
論理 11 52.4 Pascal,C,C++,ECMAScript,SGM,DSSL,HTML,XSLT,UML,XSL,SVG Tiny
真理 4 19.0 C#,CLI,Ruby,OpenDocument
ブール 4 19.0 COBOL,SQL,GML,XBRL
真偽 2 9.6 MIMPS,ISLISP

「論理」の翻訳が一番多く,次点が「真理」と「ブール」,最後に「真偽」の翻訳という順に並んだ。この結果から、「bool」や「boolean」の翻訳には「論理」が一番使われているようだ。

Fortranにおいて、Booleanに相当する型がLOGICAL(論理型)であることを考慮すると、実に5割の言語で「boolean」の訳に「論理型」が使われていることになる。また、使われている言語もC、C++、ECMAScriptと世界中で広く使われている言語となっている。

「論理」の訳は特にマークアップ言語での採用が多いのが目立つ。マークアップ言語の古典ともいえる,SMLで論理と訳されて,それを踏襲しているように思えた。

用語の統一

プログラミング言語において、Booleanと似た用語として論理演算・ブール演算がある。この中で、論理和(OR)や論理積(AND)という演算がある。

技術文書において同じようなことは同じ呼び方をしたほうがわかりやすい。そのため、ブーリアンを論理型と呼べば論理演算と用語を統一でき、関連がわかりやすい。

結論

以上のことから、「Boolean」の翻訳には「論理型」を使うべきという結論が導き出された。

今後、「Boolean」という単語をどう訳すべきか迷ったときは、「論理型」とすればよいだろう。