Vol.139 結城浩/YukiTask(結城タスク)- 仕事の心がけ/再発見の発想法 - Implement(インプリメント)/

結城浩の「コミュニケーションの心がけ」2014年11月25日 Vol.139

はじめに

おはようございます。 いつも結城メルマガをご愛読ありがとうございます。

最近はよく晴れた日も多いですが、とにかく寒いですね。 いかがお過ごしですか。風邪など引いていませんか。

 * * *

YukiTask(結城タスク)という企画を始めました。

「企画」というと変かもしれません。 「フリーソフトの公開」と表現した方がより正確かな。 でも単純にソフトを作って公開というのとは違うので、 あいまいな「企画」や「活動」と表現しています。

YukiTaskというのは、ひとことでいえば、 「結城がふだん使っているタスク管理ツールを整備して公開し、 その使い方についてまとめたもの」のことです。

まずはYukiTaskという名前を作り、 ロゴマークを作り、Webサイトも作りました。 現代で何か企画をやるときの基本ですね。

Webサイトは以下にあります。

 ◆YukiTask - A Simple Task Manager for Command Line Lovers.
 http://yukitask.textfile.org/

結城が実際にふだんやっている活動、すなわち、

 ・LaTeXを使って文章や書籍を書く。
 ・MathJaxを使ってWeb連載を書く。
 ・RubyやPerlなどのプログラミング言語でプログラムを書く。
 ・MakeWebを使って自分のWebサイトを作る。

といった行動を管理するというのが目的です。

自分で作り、自分で使っているタスク管理ツールですから、 結城と似たような活動をしている人には役に立つかもしれません。 具体的には、

 ・コンピュータで文章やプログラムなどを作成する人。
 ・コマンドラインのツールを使う作業をしている人。
 ・たくさんの作業を並行して行っている人。

という人のことです。

Webサイトは作りましたし、 GitHubというサイトでタスク管理ツールそのものも公開しています。 ただ、使い方についての文章はまだあまり書いていません。

特に〆切がある仕事ではないので(というかそもそも仕事ですらないので)、 少しずつ「お楽しみ」として整備していこうと思っています。 後ほど、結城メルマガの本文のほうで、 このYukiTaskという企画についてもう少し詳しくお話ししますね。

 * * *

ゲームの話。

Monument Valley(モニュメント・バレー)というゲームが好きです。 以前も結城メルマガでご紹介しましたね。 エッシャーの「不可能な図形」の世界に入り込んだようなゲームです。 三次元の錯視を利用した世界の移動が可能というおもしろい設定です。

通常の三次元の建築物ではありえないような移動ができるようになっています。 これこそコンピュータゲームの醍醐味。

ずいぶん以前に全画面クリアしていたのですが、 このたび新たな新章が8個追加(追加課金200円)されたとのことで、 ここ数日楽しいときを過ごしています。

ぜひ、以下のWebサイトでの動画をごらんください。

 ◆Monument Valley
 http://www.monumentvalleygame.com

 * * *

プログラムを作る話。

結城は、自分が以前書いたWebページを定期的にツイートしています。 ツイート回数は一日に三回くらいで、ツイートするページは順番に変化します。

もちろん、この定期ツイートは手動ではありません。 プログラムを組んで自動的にツイートされるように設定してあるのです。

IFTTTのようなWebサービスを使えば、プログラミングの知識がなくても、 定期的なツイートを実現できるでしょう。

 ◆IFTTT
 http://ifttt.com/

でも結城は自分でプログラムを組むのが好きなので、 この自動ツイートも自作のプログラムを使って実現しています。

そのプログラム(hyuki-tweet.pl)は、 プログラミング言語Perlで作りました。約40行くらいの小さなものです。 約40行で作れるのは、Twitterにアクセスするためのライブラリが オープンソースとして公開されているからです。これです。

 ◆Net::Twitter::Lite::WithAPIv1_1
 http://search.cpan.org/~mmims/Net-Twitter-Lite/lib/Net/Twitter/Lite/WithAPIv1_1.pod

「Twitterで自動的にツイートするプログラムをPerlで書こう」と思ったら、

 Twitter Perl 自動的にツイート

のような言葉をGoogleで検索します。 すると技術的な内容のブログが見つかりますので、 そこを読みながら作っていくことになります。

あるいはまた最初から、 「Twitter公式サイトにきっと開発者向けのページがあるにちがいない」 と予想をして、

 site:twitter.com API

のようにGoogleで検索する方法もあります。 site:を付けると、そのサイトに限定した検索ができるのです。 すると確かに開発者向けの dev.twitter.com というページが見つかります。

 ◆Twitter Developers
 https://dev.twitter.com/overview/documentation

考えてみますと、こういった技術的なWebページを読んで 自分のプログラムを作るためには、複合的な知識と技術が必要になりますね。

 ・プログラミング言語の知識(Ruby, JavaScript, Perl, ...)
 ・ライブラリの知識
 ・APIの知識
 ・Web技術の知識(HTML, CSS, HTTP, ...)

あとは英語や日本語のブログ記事を文章として読む力も必要になるでしょう。

一つ一つはそれほど難しい話ではありません。 でも、異なる複数のものを学び、 それを必要に応じて使っていくのは難しいことかもしれません。

結城はときどき、

 「どのようにしたらプログラムが書けるようになりますか」

という質問をいただきます。 でも、これはなかなか答えるのが難しい質問です。 そもそも、現在どれだけのことができる人からの質問か 考慮する必要がありますし、上に書いたように、 絡み合っている複数の技術を使うことが必要になるからです。

それはそれとして、現代ならドットインストールのような Web学習サービスを使って学ぶのがもっとも手軽かもしれませんね。

 ◆ドットインストール
 http://dotinstall.com

短期間に、多様な技術のおおよその感覚をつかむには、 とてもいいサイトだと思います。

 * * *

また、プログラムの話。

田中和希さん(@gogotanaka)が、Hilbert(ヒルベルト)という プログラミング言語をRubyで作ったというニュースがありました。

 ◆Hilbert
 http://hilbert-lang.org/ja/

 ◆世界で一番ピュアな論理型プログラミング言語Hilbert(ヒルベルト)をRubyで作った.
 http://qiita.com/gogotanaka/items/97ae187156541c8eaa9d

現在は命題論理のみを扱っているようですが、今後さらに拡張を考えているとのこと。

コマンドラインから、

 $ gem install hilbert

と入力すればインストールが完了するので、 理屈はさておき、上のQiitaのページを眺めて少し動かしてみました。 以下で、Enjoy! -> は入力を促すプロンプトで、# より後の部分は説明です。

 $ hilbert -i -zfc # 実数に関わる公理系も合わせて対話的に起動
 Hi guys, your postulating zfc_analysis is success. :)

 Enjoy! -> P # Pは真であると宣言した
 Defined: P is TRUE # Pは真であると定義された

 Enjoy! -> P->Q # P→Qは真であると宣言した
 Defined: P->Q is TRUE # P→Qは真であると定義された

 Enjoy! -> Q? # Qは真であるかと尋ねた
 Evaluate: Q is TRUE # Qは真であると評価した

 Enjoy! -> R? # Rは真であるか
 Evaluate: R is UNDEFINED # Rは未定義である

 Enjoy! -> d/dx(sin(x)) # sin xをxで微分せよ
 cos( x ) # cos xである

 Enjoy! -> d/dy(log(y)) # log yをyで微分せよ
 1 / y # 1/yである

 Enjoy! -> f(x) = x^2 # f(x)をx^2と宣言
 x ** 2

 Enjoy! -> f(3) # f(3)の値は?
 9.0 # 9である

 Enjoy! -> d/dx f(x) # f(x)をxで微分すると?
 2x # 2xである

 Enjoy! -> g(x) = x^3 + 2x^2 # g(x)をx^3 + 2x^2と宣言
 ( x ** 3 ) + ( 2 * ( x ** 2 ) )

 Enjoy! -> d/dx g(x) # g(x)をxで微分すると?
 ( 3( x ^ 2 ) ) + ( 4x ) # 3x^2 + 4xである

 Enjoy! -> A # Aは真である
 Defined: A is TRUE

 Enjoy! -> ~A # not Aは真である
 Defined: ~A is TRUE

 Enjoy! -> paradox? # パラドックスが起きているか?
 TRUE # 起きている

なかなか楽しいですね! 今後の進化も楽しみです。

 * * *

「よかった探しリース」について。

結城は毎年クリスマスシーズンの企画として、 「よかった探しリース」を開催しています。 これは、今年一年の「よかったこと」を探しましょうという企画です。 自分の個人的な「よかったこと」でかまわないので、 それをWebページに書いて、みんなでリース状に(輪のように)リンクするのです。

もしよろしければ、あなたもご参加しませんか?

 ◆よかった探しリース
 http://www.hyuki.com/ring/

 * * *

さて、それでは今週の結城メルマガを始めましょう。

今回は、不定期連載の「再発見の発想法」で、 「Implement(インプリメント)」をお届けします。

それから、「仕事の心がけ」として、 先ほども触れたタスク管理ツールYukiTask(結城タスク)の話。

その他「ルールを守ることの意味」という読み物をお送りします。

どうぞ、お楽しみください!

目次

  • はじめに
  • 再発見の発想法 - Implement(インプリメント)
  • YukiTask(結城タスク)- 仕事の心がけ
  • ルールを守ることの意味
  • おわりに