<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>higepon @ cybozu labs</title>
      <link>http://labs.cybozu.co.jp/blog/higepon/</link>
      <description></description>
      <language>ja</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Thu, 25 Dec 2008 16:52:14 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Outputz で自分のランキングが分かるようになりました</title>
         <description><![CDATA[<a href="http://outputz.com">Outputz</a> の日別のページに自分のランキングが表示されるようになりました。


<img src="http://img.f.hatena.ne.jp/images/fotolife/h/higepon/20081225/20081225164932.png?1230191403"</a>


日々のアウトプットの励みにご利用ください。

また年末は今年のふりかえりとして自分の Outputz を月単位で見てみるのも面白いかもしれません。
みなさま良いお年をお迎えください。]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/12/outputz_1.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/12/outputz_1.html</guid>
        
        
         <pubDate>Thu, 25 Dec 2008 16:52:14 +0900</pubDate>
      </item>
            <item>
         <title>Outputz API の URI パラメータに svn:// などが使えるようになりました</title>
         <description>Outputz API の URI パラメータに svn:// などが使えるようになりました。
以前は http のみを許可していましたが、他のURIも使いたいというご要望がありましたので変更しました。


許可される URI は具体的には Ruby で URI.parse(uri).host が nil ではない uri です。
ご要望いただきましたユーザー様ありがとうございました。
</description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_api_uri_svn.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_api_uri_svn.html</guid>
        
        
         <pubDate>Fri, 21 Nov 2008 15:44:29 +0900</pubDate>
      </item>
            <item>
         <title>サイボウズ本社の2010年度新卒向け説明会</title>
         <description><![CDATA[11/29の<a href="http://cybozu.co.jp/company/job/recruitment/seminar.html" title="サイボウズ 新卒採用 説明会・セミナー案内">サイボウズ本社の新卒採用説明会</a>で講演することになりました。
あわせて当日の座談会で学生さんの質問に本音で答えたりする予定です。
別日程で、社長の畑、奥(id:kazuhooku)の講演もあります。
ご興味のある方はどうぞ申し込んでみてください。
]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/2010.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/2010.html</guid>
        
        
         <pubDate>Thu, 20 Nov 2008 17:27:10 +0900</pubDate>
      </item>
            <item>
         <title>Outputz API を公開しました</title>
         <description><![CDATA[<p>Outputz にアウトプットを投稿することのできる API を公開しました。</p>
			<p>ユーザーの皆さんから Firefox 以外でのアクティビティも Outputz に記録したいとのご要望を頂いていましたが、Outputz API を利用すれば可能になります。</p>

			<h2> API 仕様</h2>
			<h3> POST 用 URI</h3>
			<p><a href="http://outputz.com/api/post" target="_blank">http://outputz.com/api/post</a></p>
			<h3> パラメータ</h3>
			<ul>

				<li> <strong>key</strong> : 設定ページに表示されている復活の呪文（他人に知られていはいけない）</li>
				<li> <strong>uri</strong> : アウトプットの URI</li>
				<li> <strong>size</strong> : アウトプットの文字数</li>

			</ul>
			<h3> ステータス</h3>
			<p>投稿が成功した場合は HTTP ステータス 200 が返ります。</p>
			<p>エラーの場合はエラーに応じて、400, 500 などのステータスがエラーメッセージとともに返されます。</p>
			<h2> Ruby でのサンプルコード</h2>
<pre>
require 'net/http'

uri  = ARGV.shift
size = ARGV.shift
key  = ARGV.shift

Net::HTTP.start('outputz.com', 80) {|http|
  response = http.post('/api/post', "key=#{URI.encode(key)}&uri=#{URI.encode(uri)}&size=#{URI.encode(size)}&key=#{URI.encode(key)}")
  puts response.body
  puts response.code
}


</pre>

			<p>コマンドライン引数に uri, size, key の順で渡せば投稿する事が出来ます。</p>
			<h2> Gauche（Scheme） でのサンプルコード</h2>
<pre>
(use rfc.http)
(use rfc.uri)

(define (main args)
  (receive (status header body)
      (http-post "outputz.com"
                 "/api/post"
                 (apply format "uri=~a&size=~d&key=~a" (map uri-encode-string (cdr args))))
    (format #t "~a: ~a\n" status body)))

</pre>

			<h2> Subversion を利用して書いたソースコードを行数をおおざっぱに記録する</h2>
			<p>上記のスクリプト（post_outputs_by_api.rb）を利用して svn ci 直前に以下のコマンドを走らせる事で、おおざっぱなコード量を記録する事が出来ます。</p>

<pre class="syntax-highlight">ruby post_outputs_by_api.rb <span class="synStatement">'</span><span class="synConstant">適当なURI</span><span class="synStatement">'\</span>
<span class="synSpecial">`svn diff --diff-cmd /usr/bin/diff -x -EbwBu </span><span class="synStatement">|</span><span class="synSpecial">wc -c`</span> <span class="synStatement">'</span><span class="synSpecial">復活の呪文</span><span class="synStatement">'</span>
</pre>

			<h2> 利用にあたっての注意</h2>

			<p>API の利用は特に制限はありませんが、悪意のあるアクセスや過度に負荷のかかるものはアクセスを禁止する場合もあります。ご注意ください。</p>
			<p>投稿アプリなどは、固有のユーザーエージェントを適切に設定していただけると助かります。</p>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_api.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_api.html</guid>
        
        
         <pubDate>Wed, 19 Nov 2008 16:32:38 +0900</pubDate>
      </item>
            <item>
         <title>Outputz アドオンと Tab Mix Plus アドオンの相性問題解消など</title>
         <description><![CDATA[<p class="sectionheader"><span class="sectioncategory"><a href="/higepon/searchdiary?word=%2a%5boutputz%5d" class="sectioncategory">outputz</a>, <a href="/higepon/searchdiary?word=%2a%5bfirefox%5d" class="sectioncategory">firefox</a></span> |  <span class="timestamp">16:39</span></p>
			<p>Outputz アドオンを入れると、Tab Mix Plus の「検索を新しいタブで開く」が有効にならない不具合を修正しました。</p>
			<p>また<a href="http://wassr.jp/">Wassr</a> での「レス」のアウトプットが Outputz で記録されない不具合も修正しました。</p>

			<p>Firefox の 「アドオン」 - 「更新を確認」 から Outputz アドオンを更新する事で利用可能になります。</p>
<div style="width:530px;padding:20px 0;margin:0;"><div style="margin:0;padding:10px 20px 3px 20px;font-size:90%;font-weight:bold;background:transparent url(http://outputz.com/images/op_bg.png) 0 -60px no-repeat;font-family:"メイリオ",Meiryo,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3",Osaka,"ＭＳ Ｐゴシック",sans-serif,Arial, Helvetica;line-height:100%;"> 2008/11/10 - 11/16 の Outputz</div><div style="margin:0;padding:0;background:transparent url(http://outputz.com/images/op_bg.png) 0 bottom no-repeat;"><div style="vertical-align:middle;min-height:23px;margin:0px 20px 0 20px;padding:5px 1em 5px 38px;border:3px solid #d9d7d7;background:#f5f5f5 url(http://outputz.com/images/op_bg.png) 5px 3px no-repeat;font-size:95%;font-family:"メイリオ",Meiryo,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3",Osaka,"ＭＳ Ｐゴシック",sans-serif,Arial, Helvetica;line-height:200%;">原稿用紙 26.8枚（10,712文字）</div> <img src="http://chart.apis.google.com/chart?chs=500x180&cht=p3&chd=t:1.0,7.7,4.2,10.3,7.5,12.9,55.8,0.6&chl=10%E6%99%82 1.0%|11%E6%99%82 7.7%|12%E6%99%82 4.2%|14%E6%99%82 10.3%|15%E6%99%82 7.5%|16%E6%99%82 12.9%|17%E6%99%82 55.8%|18%E6%99%82 0.6%&chco=84c95b,fbf59b" style="margin:0;padding:0 0 0 15px;"><p style="margin:0; padding: 15px 130px 17px 17px;font-size:80%;font-weight:bold;color:#666666;">powered by <a href="http://outputz.com/" title="Outputz - あなたは原稿用紙何枚分のアウトプットをしていますか？ Outputz をインストールすると簡単に知ることができます。" style="color:#FF9900">Outputz</a>.</p></div></div>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_tab_mix_plus.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz_tab_mix_plus.html</guid>
        
        
         <pubDate>Thu, 13 Nov 2008 16:39:48 +0900</pubDate>
      </item>
            <item>
         <title>Outputz がはてなダイアリーの「その場編集機能」に対応しました</title>
         <description><![CDATA[			<p>ユーザーの皆さんからご要望の多かった、はてなダイアリーの「その場編集機能」に Outputz アドオンが対応しました。</p>
			<p>Firefox の 「アドオン」 - 「更新を確認」 から Outputz アドオンを更新する事で利用可能になります。</p>

<div style="width:340px;padding:20px 0;margin:0;"><div style="margin:0;padding:10px 20px 3px 20px;font-size:90%;font-weight:bold;background:transparent url(http://outputz.com/images/op_bg_barChart.png) 0 -60px no-repeat;font-family:"メイリオ",Meiryo,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3",Osaka,"ＭＳ Ｐゴシック",sans-serif,Arial, Helvetica;line-height:100%;"> 2008/11/12 の Outputz</div><div style="margin:0;padding:0;background:transparent url(http://outputz.com/images/op_bg_barChart.png) 0 bottom no-repeat;"><div style="vertical-align:middle;min-height:23px;margin:0px 20px 0 20px;padding:5px 1em 5px 38px;border:3px solid #d9d7d7;background:#f5f5f5 url(http://outputz.com/images/op_bg_barChart.png) 5px 3px no-repeat;font-size:95%;font-family:"メイリオ",Meiryo,"Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3",Osaka,"ＭＳ Ｐゴシック",sans-serif,Arial, Helvetica;line-height:200%;">原稿用紙 12.5枚（5,014文字）</div> <img src="http://chart.apis.google.com/chart?cht=bhs&chxt=x,x,y,y,x&chs=300&chd=t:166,4,0,19,412,294,4119&chxl=1:|%E6%96%87%E5%AD%97|2:|%E6%99%82 |%E6%99%82 |%E6%99%82 |%E6%99%82 |%E6%99%82 |%E6%99%82 |%E6%99%82 |3:|17%7C16%7C15%7C14%7C13%7C12%7C11|4:|a|&chxp=1,50&chxr=0,0,4119&chds=0,4119&chxs=4,FFFFFF,9&chco=c3ecfc|a0e2fa|7bd8fa|64d4fd|43cafc|3ebcfd|00abfb|3ebcfd|43cafc|64d4fd|7bd8fa|a0e2fa" style="margin:0;padding:0 0 0 15px;"><p style="margin:0; padding: 15px 130px 17px 17px;font-size:80%;font-weight:bold;color:#666666;">powered by <a href="http://outputz.com/" title="Outputz - あなたは原稿用紙何枚分のアウトプットをしていますか？ Outputz をインストールすると簡単に知ることができます。" style="color:#FF9900">Outputz</a>.</p></div></div>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/outputz.html</guid>
        
        
         <pubDate>Wed, 12 Nov 2008 17:07:26 +0900</pubDate>
      </item>
            <item>
         <title>「今日のあなたのアウトプットは原稿用紙何枚？」 Outputz をリリースしました</title>
         <description><![CDATA[本日 <a href="http://outputz.com">Outputz</a> というサービスを公開しました。</p>
			<p>Outputz は「自分がインターネットにどれくらいアウトプットしているか？」を自動的に記録し、その結果をグラフで見ることのできるサービスです。</p>
			<br>

			<p><a href="http://f.hatena.ne.jp/higepon/20081106123740" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/h/higepon/20081106/20081106123740.png" alt="f:id:higepon:20081106123740p:image" title="f:id:higepon:20081106123740p:image" class="hatena-fotolife"></a></p>
			<br>

			<h4> 使い方</h4>
			<p><a href="http://outputz.com">Outputz</a> に行き、Firefox アドオンをインストールしてください。やることはこれだけです。あとは自動的に Outputz があなたのインターネットへのアウトプット量を記録してくれます。</p>
			<p>アドオンをインストール後、ステータスバーに以下のようなアイコンが表示されます。クリックすると今までのアウトプットの集計を見られます。</p>
			<p>どのサイトに多くアウトプットしているか？、どの時間帯が多いか？、アウトプットの量を文学作品で例えるとどれくらいか？など多彩な集計情報が提供されます。</p>
			<p><img src="http://winserver-rm/labs/litecms/htdocs/status_bar.png"></p>

			<h4> 背景</h4>
			<p>私たちの生活において、インターネット利用の比重は高くなってきています。Google や Yahoo で検索をし、ブログを書き、Twitterや Wassr でつぶやき、mixi で日記を書くなど。</p>
			<p>毎日毎日キーボードを叩き、文字を入力しインターネットへ文字列を送り続けています。これらの日々のアウトプットを積み重ねてみたら、実は馬鹿にできない量なのではないか？そう思い、Outputz を作りました。</p>
			<p>週末、月末、年末などの節目に Outputz でアウトプット量を見て日々の生活を振り返ってみると、面白い発見があるかもしれません。</p>
			<h4> ブログに貼りつけ</h4>

			<p>Outputz のグラフは、ブログに貼りつけることができます。タグをコピーしてブログに貼りつけてください。</p>
			<p>多くのみなさんがアウトプットを公開してくだされば、その人をその人たらしめているアウトプットの傾向が分かって面白いかもしれません。</p>
			<p>例えばアルファブロガーの方々は、どういうアウトプットをしているのか？などはとても興味がありますよね。</p>
			<p>グラフはその時点でのアウトプットを記録したもので、<strong>自動的に更新される事はありません</strong>。</p>
			<br>

			<p><img src="http://winserver-rm/labs/litecms/htdocs/blogparts_small.png"></p>
			<h4> 自分の Outputz のデータを複数のパソコンで共有する</h4>
			<p>設定タブから「復活の呪文」機能を利用して共有する事が可能です。</p>
			<h4> 英語版</h4>
			<p>Outputz は英語版もあります。ブラウザの言語設定を日本語以外にし、アクセスすると英語版になります。</p>
			<p>もし海外にお友達がいたらぜひ紹介してみてください。インターネットへのアウトプットという概念は国を問わず理解してもらえると思います。</p>

			<h4> Outputz に送信されるデータについて</h4>
			<p>Outputz アドオンはOutputz サーバーに</p>
			<ul>
				<li> URL</li>
				<li> アウトプット文字数</li>

				<li> ユーザー識別のためのID</li>
			</ul>
			<p>のみを送信し記録します。それ以外の情報(たとえば入力されたテキストデータ)は送信・記録されません。</p>
			<p><a href="http://outputz.com">Outputz</a> が日々の生活のはげみになったり、新しい発見を提供できればうれしいです。</p>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/11/_outputz.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/11/_outputz.html</guid>
        
        
         <pubDate>Thu, 06 Nov 2008 12:42:13 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.7 をリリースしました</title>
         <description><![CDATA[<p>Mosh 0.0.7 をリリースしました。</p>
			<p>R6RS のUnicode, Bytevector, Sorting などが実装されました。</p>
			<p>Mosh の起動速度や g++ でのコンパイル速度が大幅に向上しました。</p>
			<br>

			<p>また以前から -b オプションでサポートされていた R6RS モードがデフォルトとなり -b オプションは廃止されました。</p>

			<p>今後 Mosh は起動時から R6RS モードとなります。</p>
			<p>追加、変更点の詳細は以下の通りです。</p>
			<h4> ライブラリシステム</h4>
			<p>ライブラリの load path の仕組みが実装され、デフォルトでは ./lib や /usr/local/share/mosh/lib などが対象となります。</p>
			<p>またライブラリの serialization を実験的にサポートしました。</p>
			<p>scripts/pre-compile-r6rs.scm でライブラリの serialization が可能です。</p>

			<h4> R6RS Unicode</h4>
			<p>UTF8/UTF16/UTF32 の取り扱いや、文字列の比較、正規化、upcase など種々の Unicode 手続きが実装されました。</p>
			<br>

			<h4> R6RS Bytevector</h4>
			<p>Scheme からバイト列を扱う Bytevector の手続きの多くが実装されました。</p>

			<p>バイト列からエンディアンやサイズを指定してデータを取り出したり、格納したりといったことが可能です。</p>
			<h4> SRFI-8 と SRFI-98 のサポート</h4>
			<p>SRFI-97 で提案されているように以下のような形式で SRFI ライブラリのロードが出来るようになりました。</p>
<pre class="syntax-highlight">  mosh&gt;<span class="synSpecial">(</span>import <span class="synSpecial">(</span>srfi :98<span class="synSpecial">))</span>

  <span class="synError">#&lt;unspecified&gt;</span>
  mosh&gt;<span class="synSpecial">(</span>get-environment-variable <span class="synConstant">"HOME"</span><span class="synSpecial">)</span>
  <span class="synConstant">"/Users/taro"</span>
</pre>

			<h4> R6RS REPL</h4>

			<p>R6RS の REPL が追加されました。 mosh で起動します。</p>
			<p>(import ...) なども利用できます。</p>
			<p>なお現時点での制限として入力は必ず一行単位でパースされます。</p>
			<h4> スタックオーバーフロー時のスタック自動伸長</h4>
			<p>再帰などでスタックオーバーフローした場合に、ヒープが許す限りスタックが自動で伸長されるようになりました。</p>
			<h4> Fasl のサポート</h4>

			<p>Fasl （Fast loading）のサポートにより</p>
			<ul>
				<li> 起動速度の向上</li>
				<li> g++ での Mosh のコンパイルの速度向上、省メモリ</li>
			</ul>
			<p>が実現されました。</p>

			<h4> Read の全面書き換え</h4>
			<p>多彩な数値表現のパースを見据えて、read が完全に書き換えられました。</p>
			<p>以前は Gauche の read.c をベースにしていましたが、bison/re2c ベースに変更となりました。</p>
			<p>read 速度も向上しています。</p>
			<h4> psyntax の最新化</h4>

			<p>psyntax ライブラリが最新版に置き換えられました。</p>
			<h4> ビルド時の Gauche 依存がなくなりました</h4>
			<p>リリース版ではビルド時に Gauche が不要になりました。</p>
			<h4> 謝辞</h4>
			<p>今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。</p>

			<p>みなさんありがとうございました。</p>
			<h4> 不具合報告</h4>
			<p><a href="http://code.google.com/p/mosh-scheme/issues/list">不具合報告</a>までお願いします。</p>
			<p>もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。</p>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/10/mosh_007.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/10/mosh_007.html</guid>
        
        
         <pubDate>Fri, 31 Oct 2008 12:38:37 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.6 をリリースしました</title>
         <description><![CDATA[<p>Mosh 0.0.6 をリリースしました。</p>
			<p>R6RS のエラーシステムの多くが実装され、より柔軟にエラー処理が書けるようになりました。</p>
			<p>例えば (car 3) のようにエラーが発生しそうな場合、guard で囲むことにより</p>
<pre class="syntax-highlight"><span class="synSpecial">(</span>import <span class="synSpecial">(</span>rnrs<span class="synSpecial">))</span>

<span class="synSpecial">(</span>guard
 <span class="synSpecial">[</span>con
  <span class="synSpecial">[(</span>message-condition? con<span class="synSpecial">)</span>
   <span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span>condition-message con<span class="synSpecial">))]]</span>
 <span class="synSpecial">(</span><span class="synIdentifier">car</span> <span class="synConstant">3</span><span class="synSpecial">))</span>

</pre>

			<p>例外をキャッチすることができます。</p>
			<p>また guard で囲まない場合はデフォルトの例外ハンドラにより以下のようなエラーが表示されます。</p>
<pre class="syntax-highlight"> Exception:
    Unhandled exception

 Condition components:
    <span class="synConstant">1.</span> &amp;assertion
    <span class="synConstant">2.</span> &amp;who: <span class="synIdentifier">car</span>

    <span class="synConstant">3.</span> &amp;message: <span class="synConstant">"pair required"</span>
    <span class="synConstant">4.</span> &amp;irritants: <span class="synSpecial">(</span><span class="synConstant">3</span><span class="synSpecial">)</span>
</pre>

			<p>また本リリースでR6RSが要求する Hashtables、Conditions、Enumerations、List utilities 多くの機能が実装されました。</p>

			<p>追加、変更点の詳細は以下の通りです。</p>
			<h4> R6RS モードの速度向上</h4>
			<p>「R6RS モード（-b オプション）」の起動が大幅に速くなりました。</p>
			<h4> R6RS Hastables</h4>
			<p>ハッシュテーブルを利用するための手続きがすべて実装されました。</p>

			<p>使用例</p>
<pre class="syntax-highlight"><span class="synSpecial">(</span>import <span class="synSpecial">(</span>rnrs<span class="synSpecial">))</span>

<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">([</span>hashtable <span class="synSpecial">(</span>make-eq-hashtable<span class="synSpecial">)])</span>

  <span class="synSpecial">(</span>hashtable-set! hashtable <span class="synSpecial">'</span>red <span class="synSpecial">'</span>apple<span class="synSpecial">)</span>
  <span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span>hashtable-ref hashtable <span class="synSpecial">'</span>red<span class="synSpecial">)))</span>

  <span class="synComment">;; =&gt; apple</span>
</pre>

			<p>R6RS Hastables では equivalence function と hash function を自分で定義し独自のハッシュテーブルを作成することもできます。</p>
			<p>詳細な仕様は<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-14.html#node_chap_13">R6RS 13.Hashtables</a>をご覧ください。</p>
			<h4> R6RS Records</h4>

			<p>以下のように構造体を利用することができます。</p>
<pre class="syntax-highlight"><span class="synSpecial">(</span>import <span class="synSpecial">(</span>rnrs<span class="synSpecial">))</span>

<span class="synSpecial">(</span>define-record-type <span class="synSpecial">(</span>point make-point point?<span class="synSpecial">)</span>
  <span class="synSpecial">(</span>fields <span class="synSpecial">(</span>mutable x<span class="synSpecial">)</span>

          <span class="synSpecial">(</span>immutable y<span class="synSpecial">)))</span>

<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">([</span>p <span class="synSpecial">(</span>make-point <span class="synConstant">3</span> <span class="synConstant">4</span><span class="synSpecial">)])</span>

  <span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span>point-x p<span class="synSpecial">)))</span> <span class="synComment">; =&gt; 3</span>
</pre>

			<p>構造体は継承をすることもできます。詳細な使い方は<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-7.html#node_chap_6">6.Records</a>をご覧ください。</p>

			<h4> R6RS Exceptions and conditions</h4>
			<p>例外とコンディションの仕組みが実装されました。</p>
			<p>これにより</p>
			<ul>
				<li> 例外を発生させる</li>
				<li> 発生した例外の状況（コンディション）を示す</li>

				<li> 例外をキャッチしたり、そのまま実行を継続する</li>
			</ul>
			<p>といったことが安全に行えるようになりました。</p>
			<p>詳細な使い方は<a href="http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-8.html#node_chap_7">7.Exceptions and conditions</a>をご覧下さい。</p>
			<h4> 細かい追加・内部的な改善など</h4>

			<ul>
				<li> VM 内部で発生したエラーを全て新しいエラーシステムに入れ替え</li>
				<li> R6RS List Utilities のすべての機能を実装</li>
				<li> R6RS Enumerations のすべての機能を実装</li>
				<li> オープンソースで公開されている r6rs-test-suite に対応。以下のテストが通っています。
				<ul>

					<li> mutable-strings.sps</li>
					<li> mutable-pairs.sps</li>
					<li> contrib.sps</li>
					<li> programs.sps</li>
					<li> control.sps</li>

					<li> hashtables.sps</li>
					<li> records/procedural.sps</li>
					<li> lists.sps</li>
					<li> enums.sps</li>
				</ul>

				</li>
				<li> equal? が循環参照しているリストでも停止するように</li>
				<li> dynamic-wind を実装</li>
				<li> ライブラリプリコンパイルの速度改善
				<ul>
					<li> g++ への負荷がだいぶ減りました</li>

				</ul>
				</li>
				<li> psyntax の静的リンク</li>
				<li> parameterize のサポート</li>
				<li> call/cc が多値に対応してなかったバグを修正</li>
				<li> apply の速度向上</li>

				<li> IRIE Shinsuke さんによる READ_CHAR のパッチの取り込み</li>
				<li> IRIE Shinsuke さんによる grass.scm のパッチの取り込み</li>
			</ul>
			<h4> 謝辞</h4>
			<p>今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。</p>

			<p>みなさんありがとうございました。</p>
			<h4> 不具合報告</h4>
			<p><a href="http://code.google.com/p/mosh-scheme/issues/list">不具合報告</a>までお願いします。</p>
			<p>もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。</p>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/08/mosh_006.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/08/mosh_006.html</guid>
        
        
         <pubDate>Thu, 28 Aug 2008 12:19:29 +0900</pubDate>
      </item>
            <item>
         <title>LL Future の「 LL で未来を発明する」に参加します</title>
         <description><![CDATA[8/30 の<a href="http://ll.jus.or.jp/2008/info">LL Future</a>にて「<a href="http://ll.jus.or.jp/2008/program/create">LL で未来を発明する</a>」セッションにて話します。

私以外のメンバーが
<ul>
<li>Larry Wallさん => Perl の生みの親</li>
<li>まつもとゆきひろさん(ネットワーク応用通信研究所) => Ruby の生みの親</li>
<li>住井　英二郎さん => MinCaml コンパイラを書かれた住井先生
</ul>

と豪華すぎて緊張しますが、言語処理系を作るという立場から面白い話ができればと思っています。
]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/08/ll_future_ll.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/08/ll_future_ll.html</guid>
        
        
         <pubDate>Thu, 07 Aug 2008 18:02:49 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.5 をリリースしました</title>
         <description><![CDATA[	<p>Mosh 0.0.5 をリリースしました。（<a href="http://mosh-scheme.googlecode.com/files/mosh-0.0.5.tar.gz">ダウンロード</a>）</p>
			<p>R6RS ライブラリの仕組み（import/export/library）や syntax-case, syntax-rules などが利用できるようになりました。</p>
			<p>これにより、本格的な R6RS プログラム 書けるようになりました。</p>
			<br>

			<p>追加、変更点は以下の通りです。</p>

			<h2> R6RS batch モード</h2>
			<p>R6RS batch モード "-b" オプションが追加され本格的な R6RS プログラムが動作するようになりました。（これは後述の psyntax を利用したものです）</p>
			<p>このモードでは</p>
			<ul>
				<li> library, import, export などの R6RS のライブラリの仕組み</li>
				<li> syntax-case、syntax-rules などの R6RS マクロ</li>

			</ul>
			<p>を使用してプログラムを書くことができます。</p>
			<p>例えば Mosh で書かれた Lambda Wiki のトップレベルプログラムは</p>
<pre class="syntax-highlight"><span class="synError">#!/usr/local/bin/mosh</span> <span class="synConstant">-b</span>
<span class="synSpecial">(</span>import <span class="synSpecial">(</span>prefix <span class="synSpecial">(</span><span class="synStatement">lambda</span> wiki<span class="synSpecial">)</span> wiki:<span class="synSpecial">)</span>

        <span class="synSpecial">(</span>rnrs<span class="synSpecial">))</span>

<span class="synSpecial">(</span>wiki:main <span class="synSpecial">'((</span>data-dir <span class="synConstant">.</span> <span class="synConstant">"/Users/taro/repos-mosh/trunk/r6rs-examples/wikidata/"</span><span class="synSpecial">)</span>
             <span class="synSpecial">(</span>top-url  <span class="synConstant">.</span> <span class="synConstant">"http://127.0.0.1:8001/wiki"</span><span class="synSpecial">)))</span>

</pre>

			<p>のように外で定義されているライブラリをインポートする形で書きます。</p>
			<br>

			<p>いくつかの簡単なサンプルが mosh/r6rs-examples にあるので</p>
<pre class="syntax-highlight">% cd r6rs-examples
% mosh <span class="synConstant">-b</span> hello.scm
</pre>

			<p>のようにお試しください。</p>
			<p>ライブラリ名とソースファイルのマッピングは (lambda wiki) =&gt; lambda/wiki.ss のような形になっています。</p>
			<h2> psyntax ライブラリの移植</h2>
			<p>Abdulaziz Ghuloum と Kent Dybvig による The portable R6RS library and syntax-case system を移植し取り込みました。</p>
			<p>このライブラリの移植により R6RS 準拠度が大幅にアップし、より堅牢で柔軟なプログラムが書けるようになりました。</p>

			<br>

			<p>現時点では psyntax.scm をロードするという形を取っているため若干起動時間が遅くなっています。</p>
			<p>これは次バージョン以降で改善される予定です。</p>
			<h2> SRFI 98 の先行実装</h2>
			<p>私が中心となって提案している <a href="http://srfi.schemers.org/srfi-98/srfi-98.html" target="_blank">http://srfi.schemers.org/srfi-98/srfi-98.html</a> の仕様をいち早く実装しました。</p>

			<p>以下のように (system) ライブラリが get-environment-variable/get-environment-variables を export しています。</p>
<pre class="syntax-highlight"><span class="synSpecial">(</span>import <span class="synSpecial">(</span>rnrs<span class="synSpecial">)</span> <span class="synSpecial">(</span>system<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span>get-environment-variable <span class="synConstant">"PATH"</span><span class="synSpecial">))</span>

<span class="synSpecial">(</span><span class="synIdentifier">display</span> <span class="synSpecial">(</span>get-environment-variables<span class="synSpecial">))</span>
</pre>

			<h2> -l オプションの追加</h2>
			<p>起動時にユーザーが指定したファイルを読む込む -l オプションを追加しました。</p>
			<p>ユーザーが独自に定義した手続きなどを、起動直後から使用することができます。</p>

			<p>この機能は <a href="http://d.hatena.ne.jp/g000001/">id:g000001</a> さんの要望により実装いたしました。ご提案ありがとうございました。</p>
			<h2> 手続きの追加</h2>
			<p>SRFI 1 を中心に多くの手続きを追加しました。</p>
			<p>追加された手続きは以下の通りです。</p>
			<ul>

				<li> call-process vector? string string-&gt;lines filter-map map-with-index</li>
				<li> car+cdr take drop take! take-right drop-right drop-right! integer?</li>
				<li> fifth sixth seventh eighth ninth tenth xcons make-list list-tabulate</li>
				<li> list-copy list= split-at split-at! not-pair? last-pair last circular-list</li>

				<li> proper-list? circular-list? dotted-list?</li>
			</ul>
			<h2> 内部的な改善</h2>
			<p>psyntax の移植に関連して多くの内部的な改善をしました。</p>
			<ul>
				<li> 大きなソースコードに対するコンパイル速度の向上</li>

				<li> 多値の仕組みを書き直し</li>
				<li> プロファイラにソースコード行番号などを追加し使いやすさを向上</li>
				<li> apply 手続きが再帰した場合に native スタックを使わないように</li>
				<li> スタックトレースの精度を向上</li>
			</ul>

			<h2> 謝辞</h2>
			<p>今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。</p>
			<p>みなさんありがとうございました。</p>
			<h2> 不具合報告</h2>
			<p><a href="http://code.google.com/p/mosh-scheme/issues/list">不具合報告</a>までお願いします。</p>

			<p>もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。</p>
]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/07/mosh_005.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/07/mosh_005.html</guid>
        
        
         <pubDate>Fri, 18 Jul 2008 16:00:19 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.4 をリリースしました</title>
         <description><![CDATA[Mosh 0.0.4 をリリースしました。（<a href="http://mosh-scheme.googlecode.com/files/mosh-0.0.4.tar.gz">ダウンロード</a>）


パターンマッチングライブラリが追加され、より柔軟なプログラムが書けるようになりました。
また Mosh で書かれたサンプルアプリケーションとして Grass 言語インタプリタを追加しました。Wikiのコードとあわせて現時点で Mosh で出来ることが伝わればと思います。


追加、変更点は以下の通りです。


Andrew Wright 氏のパターンマッチングライブラリを移植しました。
このライブラリはとても強力であなたの Scheme コードをより見やすくより短くしてくれるでしょう。

たとえば簡単な例として '(1 (2 3) 4 5) というリストを 1 と (2 3) (4 5) と分解したいとしましょう。でも入力されるリストは正しい形でない可能性もあるとします。
普通にやるならば list の cdr を辿っていって十分な長さがあるかどうか調べながら car/cdr を駆使してやることになるでしょう。
でも macth を使えばとても簡単に書けます。
<pre>
; l に '(1 (2 3) 4 5) などの入力が入っていると思ってください
(match l
  ((a b . c)
    (format #t "a=~a b=~a c=~a" a b c))
  (else
   (print "unmatch")))
; => a=1 b=(2 3) c=(4 5)
</pre>

パターンを書いて、それにマッチした場合の処理を書けば良いだけです。とても簡単！。
より詳しい説明は<a href="http://www.callcc.net/gauche/refj/gauche-refj_163.html#SEC440" title="Gauche ユーザリファレンス: 11.46 util.match - パターンマッチング">Gauche ユーザリファレンス: 11.46 util.match - パターンマッチング</a>をご覧ください。


サンプルアプリケーションとして Grass 言語インタプリタを追加しました。(<a href="http://code.google.com/p/mosh-scheme/source/browse/tags/mosh-0.0.4/example/grass.scm" title="mosh-scheme - Google Code">grass.scm</a>)
Grass 言語は「草を植えるための関数型プログラミング言語です。型無しラムダ計算がベースになってます。BrainF*ckとかあの辺の言語の仲間です。」とあるように、個性的でかつ本気度の高いプログラミング言語です。
たとえば Hello, World は以下のように記述されます。
<pre>
wWWWwWWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv
wWWwWWWwv wWWWwWWWWwv wWWwwwwwwwwwwwwWWWWWWwWWWWWWwWWWWWWWWWwWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWww
wwwWWWWWWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWwWWWW
WWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWW
WWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWW
WWWWWWWWWWWWWwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWW
WWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwww
wwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwww
wwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwww
wwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwww
wwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwww
wwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwww
</pre>

Grass 言語の詳細は「<a href="http://www.blue.sky.or.jp/grass/doc_ja.html" title="ちょっと草植えときますね型言語 Grass">ちょっと草植えときますね型言語 Grass</a>」にありますので興味のある方は実装してみると面白いかもしれません。
また<a href="http://code.google.com/p/mosh-scheme/source/browse/tags/mosh-0.0.4/example/grass.scm" title="mosh-scheme - Google Code">grass.scm</a> は前述のパターンマッチングライブラリで書かれていますので参考にしてください。


またインタプリタ内部にいくつかの変更があり。
<ul>
<li>マクロが内部的にプリコンパイルできるようになりました。</li>
<li>多値システムをすべて書き直し仕様に正しく準拠したパフォーマンスの高いものになりました。（多分）</li>
<li>以下の手続きが追加されました。</li>
<ul>
<li>(hash-table-keys ...)</li>
<li>(vector-for-each ...)</li>
<li>(hash-table-for-each ...)</li>
<li>(exit)</li>
<li>(string-ref ...)</li>
<li>(div ...)</li>
<li>(list? ...)</li>
<li>(macroexpand ...)</li>
<li>(procedure? ...)</li>
<li>(with-input-from-file ...)</li>
<li>char>=?, char>?, char<=? and char<?.</li>
<li>cons*</li>
</ul>
</ul>

また以下の不具合修正をしました。ご指摘いただいた皆さんありがとうございました。
<ul>
<li>REPL で Ctrl-D を利用して終了できるように。</li>
<li>div bug (thx leque)</li>
<li>case bug (thx leque)</li>
<li>(read) can't read "...".</li>
<li>SEGV with (write '(quote))</li>
</ul>]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/06/mosh_004.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/06/mosh_004.html</guid>
        
        
         <pubDate>Thu, 12 Jun 2008 12:33:17 +0900</pubDate>
      </item>
            <item>
         <title>Webエンジニア武勇伝のインタビューが公開されました</title>
         <description><![CDATA[先日受けましたインタビュー「<a href="http://www.web-career.com/contents/buyuden/24.html" title="Webエンジニア武勇伝　第24弾 蓑輪太郎 氏 | サイボウズ・ラボ株式会社">Webエンジニア武勇伝　第24弾 蓑輪太郎 氏 | サイボウズ・ラボ株式会社</a>」が公開されました。
もし良かったらご覧ください。]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/05/web.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/05/web.html</guid>
        
        
         <pubDate>Mon, 26 May 2008 09:33:19 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.3 をリリースしました</title>
         <description><![CDATA[Mosh 0.0.3 をリリースしました。（<a href="http://code.google.com/p/mosh-scheme/downloads/list">ダウンロード</a>）

例外システム、eval、REPL の追加により更に本格的なプログラミングが出来るようになりました。

変更点は以下の通りです。
<ul>
<li>R6RS の例外システムを実装。</li>
  <ul>
  <li>(<a href="http://mosh.monaos.org/manual.html#raise">raise</a> ...)</li>
  <li>(<a href="http://mosh.monaos.org/manual.html#raise-continuable">raise-continuable</a> ...)</li>
  <li>(<a href="http://mosh.monaos.org/manual.html#with-exception-handler">with-exception-handler</a> ...)</li>
  <li>(<a href="http://mosh.monaos.org/manual.html#guard">guard</a> ...)</li>
  </ul>
<li>対話的なモード（REPL）を追加。</li>
<li>eval 手続きを追加。</li>
<li>割り算と剰余を追加。</li>
<li>スタックフレームの構造を変更しスタックトレースを出力しやすく。</li>
<li>多くのバグ修正</li>
  <ul>
  <li>(apply proc ...) 手続きの引数のバグを修正。</li>
  <li>スタックオーバーフロー時に SEGV になるバグを修正</li>
  <li>PPC 上の OSX で正規表現のテストに失敗するエンディアン関連のバグを修正（masa_edwさんによる）</li>
  <li>(+) => 0 、(*) => 1 であるべきバグを修正（lequeさんの指摘による）</li>
  <li>(cond ((3))) のような cond のバグ修正</li>
</ul>
</ul>

バグ報告は<a href="http://code.google.com/p/mosh-scheme/issues/list">Issues</a>かコメントにてお願いします。
]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/05/mosh_003.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/05/mosh_003.html</guid>
        
        
         <pubDate>Tue, 20 May 2008 11:46:15 +0900</pubDate>
      </item>
            <item>
         <title>Mosh 0.0.2 をリリースしました</title>
         <description><![CDATA[Mac OSX でビルドを可能にする masa_edw さんのパッチを取り込み、<a href="http://code.google.com/p/mosh-scheme/">Mosh 0.0.2</a> をリリースしました。
多くの方々からコンパイルエラー状況を教えていただきました。ありがとうございました。
]]></description>
         <link>http://labs.cybozu.co.jp/blog/higepon/2008/05/mosh_002.html</link>
         <guid>http://labs.cybozu.co.jp/blog/higepon/2008/05/mosh_002.html</guid>
        
        
         <pubDate>Wed, 14 May 2008 14:02:45 +0900</pubDate>
      </item>
      
   </channel>
</rss>

