八発白中

はてなブログに引越しました。

プロジェクトのCommon Lispライブラリ管理ツール「qlot」を作りました

想像してください。 Common Lispで開発しているアプリケーションが手元にありますよね。 それを他の環境、たとえば他の開発者のPC、CI環境やWebサーバなどで動かしたいというときに起こる問題はなんですか。 大きな問題は処理系やライブラリのバージョンが違…

軽量なCommon LispのDBライブラリ「datafly」を作りました

Common Lispのデータベースライブラリというか、O/Rマッパーとしては3ヶ月前に僕が作ったIntegralがあります。 IntegralはCLOSやMOPなどのCommon Lispの魔術を余すこと無く使い、拡張性や高度なマイグレーション機能もあるライブラリとして他の追随を許しま…

株式会社はてなを退職しました

二月末日で株式会社はてなを退職しました。二年半の間、大変お世話になりました。 理由。はてなで働き続けて得られる以上のことをしようと思ったから。 この一年くらい、僕は今の自分に何の価値も感じられず、今の自分に何の満足もできていない。それなのに…

誰向けかわからないCommon Lispでの関数型プログラミング入門とその未来

Lispと言えば関数型言語という印象を持つ人が多いようです。 まあ正直に言うと、Common Lispに関して言えば違うんですけどね。Common Lispは効率のためと言えばループも代入も使いまくるし、構造体もクラスもある。実際書かれたコードも関数型プログラミング…

Lisp Meet Up #13 に参加しました

1/23の夜開催されたイベント、Lisp Meet Up presented by Shibuya.lisp #13 に参加しました。 Lisp Meet Up presented by Shibuya.lisp #13 毎月やっているLisp Meet Upが1周年を迎えたのはめでたいですね。なわたさんと神田さんは表彰されていいと思う。 参…

新しいCommon Lisp方言「CL21」を作ったので意見を募集します

昨晩、神の啓示か何か知りませんが、ふと思い立って新しいLisp方言を作りました。 ほとんどの機能はCommon Lisp互換なので「Common Lisp方言」と言うべきかもしれません。 CLerだけでなく、Common Lispをあまり書いたことがない人やそれ以外の言語を使ってい…

高機能なCommon LispのO/Rマッパー「Integral」を作りました

「O/Rマッパー」や「ORM」と聞くだけで顔をしかめる人もいらっしゃいます。たぶん過去にひどい目にあったんでしょうね。その大きな理由の一つがパフォーマンスでしょう。 一昨年のYAPC::Asiaに参加したとき、ORMは使うなという話を4回くらい聞いたのが印象的…

Common LispのResqueクローン「Lesque」を作りました

明けましておめでとうございます。今年もよろしくお願いします。 昨年の暮れは、引越しという大掃除を終わらせたこともあってさほど忙しくもなく、とはいえ一年を振り返る気にも到底ならなかったので前々から欲しかったCommon Lispライブラリを作っていまし…

Sublime Text 2でCommon Lispを書くための環境設定

仕事を成し遂げるのに必要な労力が大きいほど、その仕事をうまく成し遂げられる可能性は低い。 — Design Rule Index[第2版]― デザイン、新・25+100の法則 最近、妻にちまちまJavaScriptを教えるということをやっています。 妻はプログラミングができません。…

あなたがLispを無視することができない理由

(この記事はLisp Advent Calendar 1日目のためのエントリです。) 禅が好んで用いる比喩がある。月を指すには指が必要である。だが、その指を月と思う者はわざわいなるかな。 — 鈴木大拙「禅」 これをLispに例えるなら、こう言うことができるかもしれない。…

Common LispのWebフレームワーク「Caveman2」を作りました

僕がClackを作ったのは2年9ヶ月前。Webフレームワークの「Caveman」をリリースしたのはその2ヶ月後だった。 Cavemanを作った頃、僕はアリエルネットワーク株式会社にいた。松山さんと開発していた試作プロダクトのために、並行して開発していたWebフレームワ…

SQLを生成するCommon Lispライブラリ「SxQL」を作りました

何か作ったときにしか更新しないブログが、最近では何か作っても「まあこの程度はブログ書くほどでもないか」と思って、更新も無いような感じになっています。今回もそうやってスルーしようと思ったのですが妻に「ブログで紹介したらいいのに」と言われてし…

Common LispでWebAppの開発に必要なN個のこと

PerlでWebAppの開発に必要なN個のこと - Islands in the byte streamのCommon Lisp版です。あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必…

プロジェクトごとに使うQuicklispを分離する

何か作った〜、とかの記事しか書かないので、もうちょっと小粒のTipsっぽいのも書いておこうかなと思った。 問題点 複数のCommon Lispアプリケーションを同じマシンで動かしているときに困るのが、Quicklisp。Quicklispは基本的にユーザ単位でインストールす…

Shellyの新しい使い方を紹介します

今、同僚と温泉ハッカソン(温泉なし)のため琵琶湖のほとりに来ています。琵琶湖初めて見たら普通に砂浜で若者 (5歳前後) とかが水着で泳いでたりするし海っぽい。おじさんがその辺の木にハンモック吊るして寝てた。意外にも京都市内から電車で30分とかで来ら…

Lispユーティリティの新しい解決案「Quickutil」

今、新婚旅行のためシリコンバレーのSanta Claraというところに1週間ほどいるのですが、途中から妻を無視してステイ先のRobert Smithとハッカソンを始めてしまってまじごめんみたいな感じです。とはいえ、まあこれも思い出ということで……新しいCommon Lispラ…

Quickdocs.org で学ぶCommon LispのWebアプリ運用ノウハウ

先日、QuickdocsというWebサービスを作りました。 Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中 アプリ部分はほとんどCommon Lispで書かれています。今までもいくつかCommon LispでWebアプリを書いたことはありますが、…

Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました

Quicklispに登録されているCommon Lispライブラリの情報をWebで見られるサイト「Quickdocs.org」を作りました。 http://quickdocs.org/ さくらVPS 1Gで動いてます。この2日で突貫で作ったみたいな感じなのであまりいじめないでください。 機能 とてもシンプ…

EmacsでKindle風の読書環境を整える

プログラムを書くのに使うのはもちろんEmacsなのですが、最近はプログラムだけでなく長文ドキュメントや本なんか読むことが多いです。そういうとき、どうしてもEmacsから離れてChromiumで開いたり、長文になるとKindleに転送したりしてしまう。だけど、Kindl…

巳年なのでPythonでLESSの自動コンパイルしてみた

これは普通の日記です。今年は巳年なのでPythonを始めました。 全てのwebエンジニアがPythonを勉強するべき2013年到来 別にこの記事に影響されるほど繊細でもないのですが、Perlは仕事でいくらでも書けるし、Rubyはあんまり好きじゃないので、Pythonやってみ…

20分ではてなブログを作る方法

これはLisp Advent Calendarの10日目です。先日、HappyElementsさんで行われたLiveCoding #11にライブコーダとして参加させていただきました。そのときの話をしようと思います。 LiveCodingとは 一人の"LiveCoder"が、20分の制限時間で何かソフトウェアを作…

ILC2012 @ Kyotoに参加して発表しました

10月21〜24日の4日間、International Lisp Conference (国際Lisp会議) 2012 @ 京都に参加してきました。4日目にはClackについて発表してきました。せっかくなのでレポートがてら、ILCについて少し書いておこうと思います。 ILC2010 @ Reno/Sparks ILCの参加…

Common Lispでシェルを便利に!「Shelly」をリリースしました

先日のKyoto.lisp Tech Talkでご紹介しましたが、「Shelly」というプロダクトを作りました。 Shelly View more presentations from fukamachi まとめると、ShellyはCommon Lispの関数をシェルコマンドのように実行できるユーティリティです。インストールは…

なぜ僕はcl-annotを使うのか

Twitterで、なぜcl-annotを使うのかという主旨の質問を受けて、そういえば id:m2ym がModern Common Lispに書くだろうからと言ってほとんど利点をまとめてなかった気がします。140字で返信するのは不可能なのでついでにブログに書いておきます。 cl-annotと…

Common Lispの軽量フレームワーク「ningle」を作りました

Clackベースの軽量Webフレームワーク「ningle」を作りました。 ningle by fukamachi 背景 Clackベースのフレームワークとしては既に「Caveman」がありますが、CavemanはPerlのAmon2に影響を受けたこともあり、プロジェクトの拡大に伴う拡張性を損なわないた…

Kyoto.lispを作ろうとしています

京都近郊のLispコミュニティ「Kyoto.lisp」というものを作ろうとしています。こういうのは「作った」って言えば作ったことになるのか、何人以上集めたらコミュニティなのかよくわからないですが、ブログとかメーリングリストとかは用意してみました。 Kyoto.…

Common LispのWebアプリケーションを社内運用してみた

今月の初めに弊社はてなで開発合宿を行いました。2泊3日の合宿の中でチームを組み、テーマを決めて開発をし、最後に各チームがプレゼンをする、というものです。成果物は今後のサービス開発に生かされます。僕のチームはバックエンドがCommon Lisp、フロント…

Common LispのProperty Listユーティリティ「Multival-Plist」を公開しました

Clackではライブラリ内で使うユーティリティをsrc/util以下に置いているのですが、その1つであるgetf-allを独立ライブラリの「Multival-Plist」として公開しました。 https://github.com/fukamachi/multival-plist 通常、Property List(属性リスト)へのアク…

Common Lispの循環ストリームライブラリ「Circular-Streams」を公開しました

Clackではライブラリ内で使うユーティリティをsrc/util以下に置いているのですが、その1つであるreplay-input-streamを独立ライブラリの「Circular-Streams」として公開しました。 https://github.com/fukamachi/circular-streams 通常、ストリームは一度読…

シンプルさはスタイルではなく必然性

Lispの話とデザインの話が交互に出てくるブログって誰得な感じですが、最近自分もデザイン力を身につけなければならないと思い立ってひっそり勉強しています。 そもそもデザインとは何かについて人に自信を持って言えるほどの知識も何もない状態からのスター…

Common Lisp用のデータベースライブラリ「CL-DBI」を作りました

Common Lisp用のデータベースライブラリ「CL-DBI」を作りました。https://github.com/fukamachi/cl-dbiこのエントリではCL-DBIの紹介と、なぜ新しくライブラリを作ろうと思ったかについて書こうと思います。 Common Lispが抱えるDB周りの問題 今までCommon L…

Clack、裏イントロダクション

先日、ClackのTutorialの更新を始めた。ただ、公式チュートリアルということもあって、あまり熱狂的なことも書きづらい。他のプロジェクトの名前を挙げて比較するのも行儀が悪い。そんなことを意識しながら書いたので、割とよくある平凡な文章に落ち着いてし…

Design is different from Decoration

最近、Webアプリケーションを全面的に"デザイン"する機会があったので、"デザイン"ってなんだろうと思っていろいろ調べています。日本で「デザイン」とか「デザイナ」という言葉を使うと絵を描いたり建物を設計したりとかいう人を思い浮かべがちだけど、海外…

アリエルの謎 (Ariel Advent Calendar 3日目)

はてなの深町です。ようやく昨日で入社4ヶ月目に入りました。この記事は「Ariel Advent Calendar 2011」の3日目らしいです。なんで僕がアリエルさんの社員Advent Calendarに参加してるのか。それは、弊社の id:antipop が「Hatena::Staff Advent Calendar 20…

Common LispプロジェクトをJenkinsで継続的インテグレーション

Clackのバグ報告を定期的にもらいます。ありがたいことなのですが、そのほとんどが○○の処理系でエラーが出てる、などです。具体的に言えば、追加したシンボルがその処理系の標準パッケージのシンボルとコンフリクトする、とかですね。こういうつまらないもの…

Shibuya.lisp TT #7 に参加してLTをしました

Shibuya.lispが久しぶりに開催されたので参加してLTをしました。今回で3回目の参加、2回目のLTです。LTの内容は僕がこの1年間でしてきたこと、これからの展望のざっくりしたまとめです。 深町英太郎はどこへ向かっているのか View more presentations from f…

なぜ数ある言語からCommon Lispを選んだのか

はてなに入ってからよく「なんでCommon Lispで書くんですか?」と聞かれます。アリエルにいるときは全く聞かれなかった質問です。今まで当たり前のように受け入れていたことを改めて尋ねられるとはっとさせられます。「Common Lispが一番書きやすいからです…

YAPC::Asia 2011に参加しました

先週の金・土に開催されたYAPC::Asia 2011に参加しました。YAPCはなんだかんだで3回目です。毎年会う人もいて、「Perlはもう書かないって去年言ってましたよね (ニヤニヤ」とか言われました。あれ、そんなこと言ったっけ…。以下に印象に残っているトークと感…

第四回 関西Emacsに参加しました

関西Emacsが弊社のセミナールームであったので参加してきました。 (kansai-emacs #x04) for 参加者 : ATND 参加ついでに発表もしてきました。最近はEmacs Lispはめっきり書かないのでアリエル時代に作ったライブラリの紹介です。 第四回関西Emacs「ari.el」 …

パーフェクトJavaScriptは読者を選ぶ硬派な本

アリエルCTOの井上さんから「パーフェクトJavaScript」の献本をいただきました。遅くなりましたがここで紹介しておきたいと思います。パーフェクトJavaScript (PERFECT SERIES 4)作者: 井上誠一郎,土江拓郎,浜辺将太出版社/メーカー: 技術評論社発売日: 2011…

はてなダイアリーに移転しました

前回の記事で書きましたが、今月からはてなで働くことになりました。 株式会社はてなに入社しました - 八発白中 それに伴い、ブログをMovable Typeからはてなダイアリーに移転しました。RSSはリダイレクトする予定なので、既にRSS登録をしている方々は引き続…