tumblrのキーボードショートカットが便利になっとる。2012年10月17日 21時41分27秒

すんごい久しぶりにtumblrのことなど

それ以前にブログ更新するのがすんごい久しぶり、ってのは置いておいて。

いまだにメインブラウザがFirefoxなもので、tumblrのダッシュボード向けに、執念深く古いグリモン+Minibuffer+LDRize+Autopagerizeという環境で回しているんだけども、最近ふと気が付いたらダッシュボードでjした時に「カクッ」と動くようになってることに気付いた。

いつのまにか標準キーバインドが復活しとる

結構前からダッシュボードには、標準でキーバインドが組み込まれてて、使いづらいので これをキャンセルするグリモンスクリプトを組み込んでたんだけど、どうやらこれが効かなくなったらしい。

何日か前にこれに気付いて、なんとかキャンセルできるようにしたんだが、今日になったらまたコードが効かなくなってた。矢継ぎ早なアップデートみたい。

なんとか解除してみる

仕方ないのでまたJSのデバッグコンソールをごにょごにょいじって調べたところ、いつの間にやらキーバインドを処理するための Tumblr.KeyCommands なるオブジェクトが加わってて、これが suspended プロパティやら、suspend() メソッドなんかが実装されてることが分かったので、ためしにグリモンで

unsafeWindow.Tumblr.KeyCommands.suspend();
なんてやってみたら見事にキャンセルできた。

ところで、標準キーバインドってなにができるん?

KeyCommands 周りを調べてる過程で気づいたんだけど、「like」とか「reblog」、「notes」、「play」なんて興味深いメソッドが実装されてて興味が出たので、どんなキー操作ができるのかを調べてみた。tumblrのほうにエントリ挙げたけどあんまり見やすくないので、以下にもう一度まとめておく。

j(ジェイ)次のpostへ移動
k(ケー)前のpostへ移動
l(エル)like / like解除
n(エヌ)notesを開く / 閉じる
r(アール)reblog(別ウィンドウが開く)
R(Shift+アール)即時reblog
E(Shift+イー)キュー(投稿予約)へreblog
スペース動画再生?(未確認)
カーソルキー左前のページへ
カーソルキー右次のページへ

謎の処理もあるんだけども

この他に修飾キー(Windowsの場合はWindowsキー、Macの場合はoptionキーと思われる)を押しながら以下のkeyCodeでTumblr.blog_switcher()という処理を呼び出してるみたい。

Windows 9(Tab)、27(Esc)、192(???)
Mac 9、27、192、37(カーソル左)、39(カーソル右)

なんだけど、これが何をするのかよくわからんし、自分の環境ではなにも起きないのでとりあえず無視

標準キーバインドのほうが便利くさいので方針転換

先のキーバインドの機能、大体はこれまでのグリモン環境でもできてたことなんだけども、即時reblogは自分の環境ではできなかったので非常に魅力的。

ということで、www.tumblr.com ではMinibufferもLDRizeも外すことにして、標準キーバインドを使うようにするよう方針転換。ついでといってはなんだが、標準同士の組み合わせのほうが安定してるのは目に見えてるのでAutopagerizeも外して、settings/dashboard で「Enable endless scrolling」を有効に。

標準のendless scrollingを有効にしたのでiPadで見る場合なんかはかえって便利になったりといううれしい誤算もあり、結構うれしかったり。

でもちょっと手を入れないと

ただ、標準機能のままだとpostの移動が「カクッ」となっててこれはちょっと気持ち悪いのでなんとかならんかと調べたところ、 Tumblr.KeyCommands が「animate_scroll」というプロパティを持っていた。さっそくこれをtrueに設定したら案の定スムーズスクロールするようになって快適。

また、animate_scroll = true の状態でも個人的にはちょっと速度が速いように感じられたので、一緒に見つけてた「scroll_speed」プロパティをデフォルトの100から150にしたら結構いい感じ。

これらの設定(どころか、キーバインドの有効/無効の切り替えすら)はtumblrの設定からいじれないので、ひとまず

unsafeWindow.Tumblr.KeyCommands.animate_scroll = true;
unsafeWindow.Tumblr.KeyCommands.scroll_speed = 150;
みたいなグリモンスクリプトを作って対応。

オマケ:ブックマークレットも作ってみたよ

いちいち起動しなきゃなんないのは面倒だけど、おんなじようなことを行うブックマークレットも作ってみた。

スムーズスクロールを有効に

中身はこんな感じも。

(function() {
    if(Tumblr && Tumblr.KeyCommands) {
        with(Tumblr.KeyCommands) {
            animate_scroll = true;
            scroll_speed = 150
        }
    }
})()

Stylishでtumblrのダッシュボードを軽くできた件2008年09月21日 19時05分51秒

以前、Firefox3でtumblrのダッシュボードが重いって愚痴エントリを書いたのだが、ふとしたことでこれが解決したのでメモ。

やっぱりメインはFirefox3、なんだけど。

ChromeでもMinibuffer+LDRizeが動くのでダッシュボードをつらつらと見たりして遊んでるうちに、やっぱりこの操作感が気持ちいいので久々にFirefox3でもLDRizeをONにしてみたのだが、やっぱり重い。

いや、LDRize云々以前に、普通にスクロールさせるだけでも猛烈なストレスなわけで、「やっぱPC買い替えかぁ?」とか思ってたのだが、ふと「なにがボトルネックになってるのだろうか」と疑問。

Firebugでスタイルを表示してみて、いろいろ試したところ、「ol#posts li.post」(個別エントリの要素)に

    -moz-border-radius-bottomleft: 10px;
    -moz-border-radius-bottomright: 10px;
    -moz-border-radius-topleft: 10px;
    -moz-border-radius-topright: 10px;
なんて、不思議な指定があるのを見つけた。名前から推測するに、ボックスの角を丸めてるっぽい。

ためしにFirebug上でこれらを0px指定にしてみたら、スクロールがかなり軽くなった。これが原因か!

で、Stylishの導入ですよ

ということで、tumblrのダッシュボード向けに-moz-border-radius-*を無効にできれば快適なダッシュボード生活がまた戻ってくると判明したのだが、どうやってそうやるんだ?

ユーザスタイルシートやらいうキーワードは聞いたことがあったので調べてみると、Stylishという機能拡張を導入すると、グリモンでユーザJSを適用できるようにサイトごとにスタイルシートを設定できる、と。

さっそくインストール、見よう見まねでこんなスタイルを書いてみた。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.tumblr.com") {
    ol#posts li.post {
        -moz-border-radius-bottomleft: 0px !important;
        -moz-border-radius-bottomright: 0px !important;
        -moz-border-radius-topleft: 0px !important;
        -moz-border-radius-topright: 0px !important;
    }
}
ちなみに後ろの「!important」をつけないとうまく適用されなかった。

やっぱり重く感じてた人は他にもいたんだねぇ。

で、あんまりうれしくなったので上のスタイルをtumblrにPOSTしたら、さらに徹底的に改良したreblogが。

特にアバター(ユーザのアイコンみたいなもの)にまで適用したことで、notesを表示するときのアコーディオンエフェクトもずいぶん軽くなり、ほんとに快適。ありがたや、ありがたや。やっぱりv4になってから重たいと感じてた人は他にもいたのだなぁ。

最終的には先のtizooo氏のをベースに自分のPOSTと他の人のPOSTを若干色分けするルールを追加してこんな感じに落ち着いた。

こちらが適用前(デフォルト)。
ユーザスタイル適用前
で、カクカク適用後はこんな感じ。
ユーザスタイル適用後

ついでにGoogleも。

実はGoogleの検索結果も、表示している内容のわりに妙に重かった。これまたFirebugで調べて突き止めた原因が、font-familyのArial指定。これでなんでそこまで重くなるのかはわからんけど、ともかくarial指定を解除することで軽快になることだけは確か。ってか、俺のPCどんだけ重いのかと。

ということで、Google向けにこんなのやってみたり。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.google.co.jp") {
    body, td, div, .p, a {
        font-family: sans-serif !important;
    }
}

まぁ他にも重いサイトはあり、場合によってはユーザスタイルシートじゃどうもならんところもあるんだろうけど、利用頻度が高いところをこうやって潰せるとまだまだこのPCでも使えるかなぁ、と思ったり。

capture.tumblr.jsをgelato対応に2008年02月29日 23時55分54秒

とりあえずやってみました

ブラウザでキャプチャしてアップロードするJSActionsスクリプトシリーズのtumblrにアップロードするバージョンです。
という、激しく便利なJSActionスクリプトをgelatoに対応させてみた。

キャプチャサンプル
図はtumblrのダッシュボードをキャプチャしてgelatoに放り込んだものをさらにgelatoにキャプチャして、それをキャプチャしてtumblrに放り込んだもの。何いってんだかわかんなくなってきた。

どのあたりをどう変えるか

さて、一所懸命ソースを見てみましたよ。

URLの体系が違う

まず、URLの生成方法がまったく違う。capture.tumblrはTumblr write APIを使っているが、gelatoはそんな機能はないのでadmin/index.phpに直接POSTする必要がある。

このあたりを担当しているのが、269行目からの「Tumblr」オブジェクトらしい。このオブジェクトはベースURLになる「endpoint」プロパティとリクエストを実行する「post」メソッドが実装されているが、どちらも変更する必要がある。

POSTする内容が違う

そして当然POSTする内容が違うので、このあたりを扱う部分にも変更を加える必要がある。これは「ImageSaver」オブジェクト(296行目から)の「post」メソッド(451行目から)だ。

gelatoでphotoをPOSTする場合は

  • title → コンテンツのタイトル
  • description → オプションの説明文
  • type → コンテンツタイプ。photoは「2」になる
  • date → 投稿日時。UNIXタイムスタンプ形式
  • btnAdd → submitボタンなのだが、POST時にadmin/index.phpでこれをissetチェックしているのでつけてやる必要がある
と、イメージストリーム本体の「photo」を送る必要がある。

ちょっとだけ修正してやる必要もある

イメージストリームの流し込み方などはcapture.tumblr.jsそのままになるので、Tumblr.post()に渡すオブジェクトを上記のように整えてやればよいのだが、tumblrでは必要としないfilenameを与えてやる必要もある。

08.03.01付けの0.0.1bで修正されたようです。HTTP.Request.prototype.create_streamへの修正作業は不要になりました。(08.03.02追記)

この「filename」を与えてやるにあたり、もう一箇所修正が出てくる。マルチパートのストリームを生成している、HTTP.Requestクラスのcreate_streamメソッドだ。

173行目でfilenameが与えられていた場合にそれをリクエストに追加するのだが、ここでパラメータオブジェクト名を除いた変数でアクセスしているため、これを修正しないと例外になる。tumblrの場合はこのロジックを通らないので見つからなかったバグなのだろう。

そんなわけでこんなやり方

こんな感じで手を加える部分がちょっと散っているので、

  • Tumblrオブジェクトはまるまる再定義
  • ImageSaver.postメソッドもまるまる再定義
  • create_streamメソッドは173行目を修正
といった感じで実装してみた。

修正コードのみですが

こんな感じで。

Tumblrオブジェクトの再定義

Tumblr = {
  // set your gelato admin page.
  endpoint : "http://localhost/gelato/admin/index.php",
  post : function(params, opts) {
    opts.multipart = true;
    return new HTTP.Request(this.endpoint, opts).post(params);
  }
}

opts.multipartへの値の割り当ては、オリジナルではparams.typeの内容をチェックしていたのだが、どうせマルチパート確定なので直接trueをセットしている。あとはURLはendpointに何も手を加える必要がないのでこんな感じになった。

ImageSaver.postメソッドの再定義

ImageSaver.post = function(title, bstream) {
  try {
    var uri = window.content.document.location.href;
    var file_name = (function() {
      var buf = [];
      for(var i = 0; i < 3; i++) {
        var s = ( Math.random() * ( new Date().valueOf() ) ).toString().replace(".", "");
        buf.push( Number(s).toString(36) );
      }
      return "capture-" + buf.join("").slice( -10 ) + ".png";
    })();

    Tumblr.post( {
      url: "",
      title: title,
      description: "(via: " + title.link(uri) + ")",
      type: 2,
      date: parseInt( new Date().valueOf() / 1000 ),
      btnAdd : "Create post",
      photo: {contentType: 'image/png', filename: file_name, stream: bstream}
    }, {
      async: true,
      onStopRequest: function (request, context, statusCode) {
        request.QueryInterface(Components.interfaces.nsIHttpChannel);
        var text = request.responseStatusText;
        trace(this.response_body);
        if ( ImageSaver.conf.id ) {
          text = text.fontcolor("white").link(
            'http://' + ImageSaver.conf.id + '.tumblr.com/post/' +
            this.response_body
          );
        }
        ImageSaver.close_text_delayed(text);
      }
    } );
  } catch(e) {
    Firebug.Console.log(e);
  }
}

Tumblr.post()に渡しているオブジェクトの構成は前述の通り。ローカル変数「file_name」はphotoに割り当てるファイル名なのだが、gelatoはかなり何も考えてなくて、同じ名前のファイルをアップロードすると無条件に上書きするというステキ仕様なので、仕方なくランダム生成している。 あとの例外ハンドリングなどはオリジナルコードそのまま。

上記2つのコードブロックを、capture.tumblr.jsの実行コード(new function() ~から始まる部分。542行目)の直前にそのまま差し込むことで再定義ができる。

そしてHTTP.Requestのcreate_streamだが、

chunk += 'filename="' + filename + '"' +  '\r\n';
chunk += 'filename="' + stream_params.filename + '"' +  '\r\n';
と修正すればよい。

あとはこの追加・修正を適用したファイルを「capture.gelato.js」とでもしてJSAスクリプトのglobalフォルダに放り込めば使える。ハズ。動かなかったらコメント下さい。といってもgelato使ってる人なんざほとんどいないだろうけど。

あ、あと38行目のconffileの設定は別にどうでもいいです。内容を参照しないので、ファイルさえあれば大丈夫なはずなので。

gelatoを試してみたり。2008年02月25日 21時32分03秒

久々の更新なのに全然 Zend じゃないし。

前々から興味があったのだ

しばらく前にMOONGIFTで紹介されていて、激しく興味があったオープンソースCMS「gelato」。これ、要するにtumblrクローン。

まぁ、まだバージョンが0.95なので鋭意開発中、って感じなんだろうけど、tumblr感覚でローカルにぽこぽこPOSTできるとちょっといいよな、と思って試しにインストールしてみた。

インストール

インストールはこちらの記事を参考に。つか、まんまです。PHPのアプリケーションインストールしたことあるならほとんど迷わないと思うけど、install.phpでDBがらみの情報入力させる割りに先に「config.php」にDB設定書き込んどかなきゃなんなかったのがイマイチ腑に落ちないけど。

それから先ほどのLiner Noteさんとこから、日本語化ファイルをダウンロードできるのでそちらも忘れずに。ありがたや、ありがたや。

使ってみる

管理画面はtumblrのダッシュボードのようにはいかず、ちょっぴり使いづらいんだけど、まぁ普通にPOSTできるわな。

ただ、設定でタイムゾーン選択できるんだけど、POSTに上手く反映されてないような。

あと、わかりづらいけど一応ブックマークレットもついてます。図の赤枠のところがリンクになってて、これをブックマークすれば一応ブックマークレット。

POST画面
「一応」って断り書きをしたのは、ちょっとクセがあってtumblr感覚で使うとわりと戸惑うかと。 試した限りでは、
  • 普通にクリックするとlink
  • なにか選択してると、選択部分のテキストを本文にしてregular post
  • 画像を表示しているとphoto
といった感じ。tumblrみたいに親切にページ中の画像を列挙してくれたり、選択部分からquoteしてくれたりはしない上に、ブックマークレットから起動したPOSTフォームは単機能なので切替もできず。もうちょっとがんばって欲しいところ。

JSActionのスクリプトを書いてみる

んで、実はこっからが本番。そもそもローカルで使いたい動機は、社内に設置している内向きのブログ書くときに、スクリーンショットとかを手間なくホストしときたいなーってとこだったわけ。なので、

  1. まずはJSActionでphoto直行
  2. その次はcapture.tumblr.jsをローカルgelato対応に
なんて野望を抱いているわけで。

capture.tumblrはちとソース読むのが大変そうなので、まずはフォームの構造を調べがてらJSActionスクリプトを作ってみた。こんな感じ。

// post photo to gelato
new function(base) {
	function h2q(h) {
		var buf = [];
		for(var key in h) {
			if( typeof(h[key]) != "function" ) {
				buf.push( encodeURIComponent(key) + "=" + encodeURIComponent( h[key] == null ? "" : h[key].toString() ) );
			}
		}
		return buf.join( "&" );
	}
	var url = window.location.href;
	var title = window.title || window.document.title || window.location.href;
	var img = _jsaCScript.context.target;
	if( ! /^img$/i.test( img.localName ) ) return;
	
	var xhr = new XMLHttpRequest();
	xhr.open( "post", base, false );
	var hash = {
		title : title,
		url : img.src,
		date : parseInt( new Date().valueOf() / 1000 ),
		type : 2,
		description : "<a href=\"" + url + "\" title=\"" + title + "\">(via: " + title + " )</a>",
		btnAdd : "Create post"
	};
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send( h2q( hash ) );

} ( "http://localhost/gelato/admin/index.php" );

あ、gelatoってGPL v2なんだけど、こういうスクリプトってGPLに引きずられるのかなぁ、と心配になったのでこのスクリプトも「GPL v2」ということにします。

このスクリプトをJSActionのimageフォルダに保存して、一番最後の関数呼び出しに使ってる引数にPOST先のURLに変更して使う。この例では「http://localhost/gelato/」がgelatoのURLね。

実はちょっと注意点があって、POSTデータの「description」(linkのcaption)に元ページのURLをanchorでくっつけてるんだけど、gelatoはdescriptionをstrip_tags()しちゃうのでこのままだとリンクにならない。

そのままでもいいやってなら別になにもする必要はないけど、admin/index.phpの72行目あたりの

$_POST["description"] = strip_tags($_POST["description"]);
$_POST["description"] = $_POST['description'];
に変更すればHTMLタグ使い放題。あー、自己責任でおながいします。

あ、あとほんとに最低限の実装なので、例えばflickrで「all sizes」がある場合はそっちへ飛んでからじゃないと上手くPOSTできません。あとPOSTエラーも特に何もしてないので、「POSTされてなかったらなんかエラーでたんだなー」といった感じで使ってください。使う人いるかわからんけど。

その他の情報

  • 一応read apiも実装してるっぽいけど、コメントアウトの仕方が悪くてエラーになったり、そのあたり解消してもまともに情報返してくれなかったり。
  • なぜか編集ができない。新規POST扱いになる。
  • photoはlightbox使って表示するんだけど、上手く表示できないときがある。
  • lightboxとかで使ってる画像リソースのパス解決が上手くいかない場合があるっぽい。
  • アカウントを複数作れるけど、アカウント別に表示できたりするわけじゃないし、他のアカウントのPOST削除できちゃうし。
  • svnから最新ソースをチェックアウトしてみたけどクラスだか関数の重複定義とかでエラーがでて、もうぐだぐだ。
などなど、まだまだかなりバタバタした感じですが、ローカル(or イントラ)画像サーバと思えばなんとか使えなくもないかな。

次はがんばってcapture.tumblr.jsの改造だ。多分。

のし部屋さんからのツッコミについて2008年01月05日 18時35分34秒

2008/01/12 追記

このところ私事でネットに思うように時間を取れなかったため1週間近くの放置になりましたが、追記です。

こちらの一方的で感情的な内容のエントリですが、1/6付けにのしさんのほうが「これにて諍い終わり!ヽ(・ω・)ノ」とおっしゃってくださいました。かってにこちらから噛み付いておいて腰砕けのようですが、そのお言葉に甘えてこちらも終わりといたします。

このエントリの内容は削除しようかとも思いましたが、のしさんの「時々日記 #34」をご覧になる上での一種の資料と思い、とりあえずこのままにしておきます。ただ、のしさんが「印象操作をしている」かのような主張は大変失礼であったと反省をし、その部分は打消し、補足を追記いたしました。印象操作呼ばわりをして、大変申し訳ありませんでした。

コメント欄にも、さまざまなご意見をいただきました。また、はてなブックマークもいくつかブックマークしていただき、そちらでもいくつかコメントをいただきました。コメントを寄せていただいた皆様に感謝いたします。

tumblrのほうですが、いろいろ考えるところもあり以下のような運用にしようと思います。

  • 投稿はtextとlinkのみ行う。quoteについてはlinkで代替とする
  • すでに投稿済みのphotoについては、順次プライベートに変更していく。photo以外のコンテンツは原則そのまま
photoのメンテナンスについては、手作業ではかなり時間がかかりそうなので、なにかツールを作るかもしれません。

以上を以って、このエントリを終了とさせていただきます。お騒がせして申し訳ありませんでした。


このエントリについて

※:このエントリの内容はdara-jの一方的な主観に基づいております。お読みになる場合はそのあたりを踏まえてお願いいたします。(08.01.12追記)

このエントリは、のし部屋さんのコンテンツ「時々日記 #34 tumblrとワタクシ」について、dara-jが自分のtumblrに2008/01/04にquoteした4つのエントリへのツッコミに関するもので、ぶっちゃけた話、のしさんとdara-jの諍いの一端です。

このエントリが主に取り上げるのは「時々日記 #34 tumblrとワタクシ」の2008/01/04付けの「tumblrから苛まれる日々。(´・ω・`)」の部分になりますが、現在の状況を把握するには「tumblrとワタクシ」全体およびそこからの関連リンクなどを一通り目を通す必要があると思うので、関心のない方(≒tumblrをしていない方や、無断転載や引用の問題に関心がない方)はスルーされたほうがよいかもしれません。

ブログに書いた理由

そもそも、1/4付けの「tumblrから苛まれる日々。(´・ω・`)」で取り上げられた4つのエントリ(こちらこちらこちら、およびこちら)は、おそらくのしさんも感じておられるようにのしさんの以前のツッコミをDISること以外に意図がない極めて不毛なもので、dara-jは「建設的な議論をしよう」という意思はなかったのですが、直接名指しでコメントが入ったため今回の4つのエントリに対するコメントへの回答はしようと考えました。

なぜtumblrにpostせずにブログのほうへ移したかというと、tumblrでは

  • まとまった文章を書きづらい
  • コメント欄がないため、お互いのサイトを行ったり来たりで意見や主張が拡散し、さらに収集がつかない懸念がある
などの理由です。

長々と能書きをたれましたが、問題の4つのエントリに対する回答をします。

「dara-clipさんにつっこまれたの1」について

dara-clipさんにつっこまれたの1
どこを読んだら「Tumblrを容認できなきゃ」になるやら。
アンタ面白すぎるよ。

他人の権利を侵害するリスクをゼロにしたいなら

Tumblr など使わないことです。
と先に述べ、
他人の権利を侵害するリスクをゼロにしたいなら

誰にも会わずに人知れず死んでいくのがよいでしょう。
と後に〆る。
この手法から、
他人の権利を侵害する行為を容認できなきゃ
人知れず死ななきゃいけない。

生きるためには、他人の権利を侵害する行為を容認しなきゃいけない。

他人の権利を侵害するtumblrも容認しなきゃいけない。
ってことを言いたいんだろうなあ、と自分は理解し、
Tumblrを容認できなきゃ
人知れず死ななきゃダメらしいです。
と表現したのですが、どうやらこの解釈は間違ってるらしいです。
でもdara-clipさんによる正しい解釈はなし。
自分が「間違ってて面白れー」という主観だけを広められ、
どこがどうおかしいかの指摘はありません。(´・ω・`)
Reblogでアンケートしました結果。 - 逃げ場。でまとめられた、neodenjin氏「他人の権利を侵害しないようにtumblr.を利用するためにはどうしたらいいでしょうか。」というtumblr上に放流されたアンケートに対する、hexe氏の回答に関する部分。

hexe氏の回答内容は「他人の権利を侵害したくなきゃtumblrやめれ。」と、tumblrの意義をまるごと否定するような、ミもフタもないきつい回答で、tumblr否定派(という言い方はあまりよくないか)が「そうだそうだ!」と思うことはあるにせよ「tumblr否定派を腐す意見」と捉えるのはあまりにもおかしく、tumblrを否定するためだけにわざと曲解した上で、さもアンケートの回答内容がそう主張しているかのように見せる意図があると思いDISりました。

ちなみにdara-jによる「正しい解釈」とやらを表明しなかった理由は、「そんな義理はない」からでした。そもそもDISり目的ですので。

この考えは、のしさんのツッコミを見てもあまり変わりませんが、「ってことを言いたいんだろうなあ、と自分は理解し、」を汲み取ると、「tumblr憎しで冷静に意見が読めなくなっている?」とも思えるので、「わざと曲解した」と考えた部分に関してはお詫びいたします。

が、やはり根本的には

Tumblrを容認できなきゃ
人知れず死ななきゃダメらしいです。
の伝聞系の1文に集約している時点で「tumblrを否定するために曲解しやすい形で意見を引用している」のでは、との念はぬぐえません。

「dara-clipさんにつっこまれたの2」について

dara-clipさんにつっこまれたの2
面白すぎる誤読。「電車内での~」から
「同じモラル違反だから(中略)同じなんだ!」って、
どんだけ恣意的な解釈なんだよw

もう一度YoshikemaLablr.さんの意見を
見て欲しいのですが、

けど、指摘のとおり、大声で通話する人を注意した人を
わがままだと言うのはおかしいですよね。

「指摘のとおり」の指摘してる人って、
文脈を見ても自分のことですよね?
でも自分は「電車内でのノーマナー行為を注意」
なんてしてませんよ?
ニュースサイトに制作者サイトでなく
無断転載サイトが紹介されるのを不愉快に思ったら、
それは作者のわがままなのだそうで

指摘のとおり、大声で通話する人を注意した人を
わがままだと言うのはおかしいですよね
これって自分には同一視してるようにしか見えないんですが、
dara-clipさんが言うには恣意的な解釈なのだそうです。
でも恣意的じゃないdara-clipさんの解釈はなし。
自分が「恣意的な解釈をしている」という主観だけを広められ、
恣意的じゃない解釈はこうだ、の指摘すらありません。(´・ω・`)
これは2008/01/03付けの「年明け早々tumblr。」に対するdara-jのDISりについて。

元々はToshikemaLablr.さんのYoshikemaLablr. - tumblr雑感というエントリの中で

正直な話、転載によって作者が不快に感じるのって、作者のわがまま的な面もあるんじゃなんじゃないかな、とか思うこともある。
という1文があり、それにのしさんがツッコミを入れ、それを受けYoshikemaLablr.さんのquoteへつながるといった流れになっています。

で、YoshikemaLablr.さんのquoteは”わがまま”という言い回しをなぜ使ったのか

自分の考えを整理してみる。
ために比喩表現として「電車のマナー云々」という話を出したに過ぎず、論旨としても「自分が”わがまま”と表現したのはなぜか」の整理になっており、
同じモラル違反だから、
無断転載は電車内でのノーマナー行為と同じなんだ!
という主張にはなっていません

やはりここにも「dara-clipさんにつっこまれたの1」と同じような「tumblr否定材料としての引用」という意図を感じたためにDISりました。こちらの解釈を掲載しないのは「つっこまれたの1」と同じ理由です。

「dara-clipさんにつっこまれたの3」について

dara-clipさんにつっこまれたの3
これはわざと冒頭の「全然関係ないかもしれないけど、」を省略して
ミスリーディングを誘うという悪質な手法。
つか、提示されたアンケート課題に対する
(ご本人も「関係ないかも」と注釈をつけているくらい)
あまり有効と思えない回答をわざわざ選び出して
DISる感覚がよくわからん。

「傘を勝手に自分のものにするのはリアル犯罪」->
「リアル犯罪を犯すヤシが使うtumblr、極悪ツール確定」->
「俺、正義。たんぶりすた、涙目ww」
とかいう論理展開なのだろうか。

「全然関係ないかもしれないけど」の部分を削ると
悪質なミスリーディングになるのだそうです。
『年の瀬にもtumblrその2』での引用は、
DISるための引用ではなく、
「tumblrユーザーの考え方」を知ってもらうための引用であり、
上記回答を引用として選んだ理由は、
tumblrユーザーが、tumblrに自身のリアル犯罪履歴を
平然とpostして疑問にも思わない様子が、
「tumblrユーザーの考え方」の一端を知るための
引用になりうると判断したからです。
(蛇足ですが、 これは『年明け早々tumblr』で述べた
おかしなことやアレなことを言っても
指摘されることも反論されることも
炎上しちゃうこともない気持ちのいい空間に
身を委ねているうちに、
少しづつ正常な判断力やら思考力やらが
削り取られていってる様
が如実に表れている例であるとも思います)
「全然関係ないかもしれないけど」の部分は
本当に全然関係ないから引用しなかっただけなんですが、
引用しなかったことを挙げて
悪質な手法の証拠にされてしまうのも困るので、
「全然関係ないかもしれないけど」の部分を追加しておきます。
これは「つっこまれたの1」と同じ「他人の権利を侵害しないようにtumblr.を利用するためにはどうしたらいいでしょうか。」アンケートに対する、eeweigaquesumiさんのどちらかというと「まぜっかえし」の回答が元。

これは、おそらく一般のブログやmixi、BBS、2ちゃんねるなどでも同様のpostがあり、軽いツッコミがあったりスルーされたり、という類のものだと思います。また「全然関係ないかもしれないけど」とあるように、アンケートに対する回答として有効とは言えない内容のものです。それを「tumblrユーザはこんなやつばかりだ」と受け取れるように引用していると判断したため「悪質な手法」としてDISりました。

のしさん曰く、

tumblrに自身のリアル犯罪履歴を平然とpostして疑問にも思わない様子が、
「tumblrユーザーの考え方」の一端を知るための
引用になりうる
とのことですが、やはり「傘をギる → tumblrユーザに特徴的な考え方」には結びつかない気がするため、前述の「tumblrユーザはこんなやつばっかりだ、と読めるように意図した引用」という受け止め方に大きな相違はないと思いますが、いかがでしょうか。

この件と「つっこまれたの1」に関していえば、元のアンケート課題は「どうやったら他人の権利を侵害せずにtumblrを利用できるか」の議論・検討です。この議論そのものをのしさんが「意味なし」と受け止めるのは理解できますが、アンケート課題の意味を考慮せずに引用するのは、やはり「tumblr否定材料」として言葉尻を捉えている印象しか受けません。

「本来クリエイターは、満足な創作環境があって、子供を養える程度食えれば、貧乏でも幸せなんだと思うから。」や「リンク先がいつ消えるかわからないからこそ転載しているわけで。」に対してツッコむのはわかりますが、「他人の権利を侵害したくなきゃtumblr使うな」という意見や、課題に対して関係のないコメントを引用するのは「DISり目的」にしか見えません。

「dara-clipさんにつっこまれたの4」について

dara-clipさんにつっこまれたの4
いままで散々「誰かから奪い取った」だの
「テコンVを作りたい、ってことでしょうか。」だの
”権利の侵害”を指摘する表現で
ツッコミを入れておきながら、
「問題を無断転載(権利の侵害)のみに
ロックオンしちゃえば(中略)楽なんでしょうが、
『著作権を侵害してるから無断転載駄目!』なんて主張は、
自分は一度も行っていないのです。」ってのはすげーな。

もう一度自分の文章をよく読んでほしいのですが、

「人の嫌がること」ってのは、
無断転載それだけではなく、
無断転載の結果、引き起こされた事態に、
(確かに「権利者」でもあるけれども、それ以前に)
「制作者」がしょんぼりしている、
という一連の流れを指している

問題は「無断転載のみ」ではなく、
「無断転載+それによって引き起こされる一連の流れ」
ですよー、と言ってるのです。
そこから「無断転載」のみを切り取って
語っちゃうのは楽なんでしょうが、
自分は無断転載だけを切り取って
「著作権侵害だから無断転載駄目」
なんて主張はしてないので、
「他人の権利を侵害しないように」についてだけ話あうのは、
何か違うんじゃないでしょうかどうでしょうか?
というこちらへの総評だったのですが、
権利の侵害を指摘する表現でツッコミをいれてたから、

「tumblrユーザーの権利侵害行為によって、
何が起きてるかが問題なのであって、
法的なタテマエとかを持ち出して
無断転載駄目とか言ってるわけじゃない」
という主張はすごい矛盾だ、
という全く噛み合わないツッコミをしてくる人がいるとは
想像もしてませんでした。(´・ω・`)
なるほど、これについてはこちらの読解力不足がありました。(「つっこまれたの3」で書いたように)「他人の権利を侵害しないtumblrの利用方法」を模索することそのものを「無意味である」と判断された上での言葉でしたか。

こちらとしては、これまでののしさんの発言より、「のしさんもtumblrによる権利の侵害を問題の一部として捉えているだろう」との認識の上で権利を侵害しない方法を模索しているところで「(前略)なんて主張は、自分は一度も行っていないのです。」の部分にとらわれて「そんな主張してないし」とものすごい勢いで梯子をはずされたと捉えたため、「すげーな」というDISりになりました。

こちらの一方的な誤読・誤解といわれればそれまでですが、「権利の侵害だけ議論しても無意味でしょ」ではなく「権利を侵害するから無断転載するな、とは主張していない」という表現にいたったのはなぜでしょうか? また、

「嫌がること」とは「権利の侵害」のことだ。

他にも権利を侵害してるものがいっぱいあるじゃないか!

悪いのはボクらだけじゃない!
のコンボが成立しちゃうので楽なんでしょうが、
時々日記(強調:dara-j)
と「悪いのは俺たちだけじゃねーべ」と主張しているかのように断定されているのも疑問です。自分にはそのようには読み取れず、tumblrだけじゃなく、WEB全般の問題点に行き当たったのでさらに難しいなぁ、といったあたりで宙ぶらりんになっていると思うのですが。

「dara-clipさんにつっこまれたの4」の後半

まぁ、見やしないだろうけど、このツッコミ見つけても
「そんな意味ではいってないのですよー。」とかなんとかいうのかな。

偶然ですけども見つけてしまいました。
田圃に水を引き入れなければ稲は育たないよう、
意見も相手に届かなければ
誤解も解けなければ理解もないわけで、
「この意見はおかしいぞ!」って指摘したいんであれば、
BBSなりメールなり届く形で指摘してくれればいいのになあ、
と思うのですが、
「見やしないだろう」という前提で意見を吐いてる以上、
目的は他の部分にあるんでしょう。

指摘も反論もされない、この一方的な目的を持った意見が、
reblogで広められちゃうんだろうなあ。
自分は偶然気づいて自分のサイトも持ってたから
反論のチャンスに恵まれたけど、
気づかなかったら怖いなーこれ。
現実問題としていくつかreblogされてるのに
誰もツッコミ入れてないのが尚怖い。
tumblr怖いよー。(´;ω;`)
BBSやメールでの発現にしなかったのは、「議論をするつもりがなかった」からです。これについてはすでに何度か意見を述べていますが、のしさんの姿勢が「tumblrを否定する」に終始しており、tumblrユーザ側がなにかpostするとその言葉尻を捉えるような格好で引用しているため、議論にならないと考えているからです。また、やはりのしさんのコメントや引用方法に「tumblrに対する悪意」を感じるため、感情的になっていることもあります。

ツッコミが入らないのは主に自分のエントリが「注目されていない」部分が大きいかと思います。4エントリあわせてreblogしてくれたユーザ数は6人程度ですので。

「tumblr怖いよー。」とおっしゃっていますが、のしさんのツッコミが掲載されたおかげでdara-clipへのアクセス数が通常の20倍程度に増えています(普段はしょぼいアクセス数ですので...)。ほとんどは「のし部屋」経由です。これだけを見ると、のしさんの発言のほうがよほど影響が大きいと思われますが?

tumblrに対する見方について

最終的にのしさんが満足されるには「(ユーザが)tumblrをやめる」か「tumblrのサービスそのものが停止する」状態になる必要があると思われますし、tumblrユーザとしては「それでもtumblr楽しいしなぁ...」との思いがあるのは確かなので、落しどころを見つけるのが難しい状態だと思われます。

しかし、今回の一連の流れにおいて、「どうしたら権利を侵害せずにtumblrを利用できるのか」といった類の議論に参加するユーザは、どちらかというと一次創作者が困ること本意ではない、多少なりとも誠意があるユーザではないか思います。そのユーザに対して「その程度の考えじゃ、駄目だ」とだけされるのは、やはり波風を立てるだけです。

波風を立てるな、といっているわけではありません。のしさんとしてはtumblr上での議論や意見交換を気に入らなく思ったり「何ぬかしやがる」と思ったりすることはとめられませんので。

それでも一部のユーザの意見を発言の経緯を顧みないような引用を行うことや、一部のバカ発言を以って「tumblrユーザ」としてまとめ上げる格好での印象操作的な言論は避けたほうがよいのではないでしょうか。

※:「印象操作的な言論」というのは、dara-jの一方的な主張でした。言葉が行き過ぎ、申し訳ありませんでした。(08.0.12追記)

最後に

このエントリで取り上げてきた部分に関しては、私の意見は別にtumblrユーザ代表とかそういった性質のものではありません。これだけ喧嘩腰の態度でquoteしたのはたぶん今回の私のエントリだけでしょう

このエントリ自体も、別にDISりに対する謝罪にはなっていないのでいいたい事もいろいろ出てくるかと思いますので、コメント欄での反論は歓迎します。が、これを以ってtumblrがどうとかという議論はしないつもりです。あくまでdara-clipがのし部屋に喧嘩を売っただけですので。

また、コメントに対する反論が遅くなる場合もあるかと思いますがご容赦を。どうも文章をまとめるのが遅いもので。