あけましておめでとうございます。 僕の2017年の抱負は「イカをがんばる」です。 Switch のローンチと同時で発売してください。お願いします。

READ MORE >>



先月末だったかにアメリカのどこかあたりで開催されたらしい AWS re:Invent 2016 という催しもので Amazon という会社がまた色々な新サービスのようなものを発表したようだと風の便りに聞きましたが、その中でも色々な意味で衝撃的だったものの1つが、Text to Speech サービスの「Amazon Polly」でした。 Polly の使いかた自体はもう色々なところで書かれているのでここでは詳しくは触れませんが、これ、入力したテキストを読み上げてもらうだけならホントに超お手軽にできるので、僕も早速適当に何か喋らせてみたりして「うわ〜自然に聞こえるぅぅ」なんて無邪気に遊んでいました。 しかし、そのときふと僕の頭に1つの疑問が浮かんだのです。 最近はプレーンテキストであっても emoji を使うことで表現をリッチにすることがもう世界規模で一般的になっていますよね。もはや僕なんてたまに emoji が1つも使われていない LINE…

READ MORE >>



日曜日に、 よちよち.rb で仲良くなった @highwide の結婚式があった。 よちよち.rb ではメンバーの結婚祝いに何かプログラムを開発するという風習があって、これまで自分が知っている限りでも、お祝いのメッセージを添えた Web アプリや Ruboty 製の bot を作って送っていて、受け取った方も喜んでくれていたと思う。 その中でも中心的に活躍していた highwide さんの結婚祝いということもあったので、何か開発してサプライズで送るというのは当然の成り行きで、今回はフリースタイルのラップ好きな highwide さんのために、「 Rhymechan 」という、お祝いメッセージを登録すると、そのメッセージと韻を踏める単語を探してくれる web アプリを作った。 これ、もともと highwide さんが作っていた rhyby という Rails アプリを fork したものだったりする。実は今回はこのアプリが完成するまでに結構紆余曲折を経ていて、その経緯を追うのも (それを知らない本人的にも) 面白いかな、と思うのでその辺りの話からしていくことにする。 Copland…

READ MORE >>



Ruby 2.3.0 で が deprecated になっていて、使っていると警告が出力されるようになった。 で、使っているライブラリでもバンバンこの警告が出まくっていたので、「よーしじゃあ修正しとこうかな」と思ったけど、よく考えたらそもそもこの のことをよく知らなかった。 Thread.exclusive とは何だったのか 短いので、コードを見るのが一番早い。 prelude.rb ここからわかる通り、 というのは、 クラスに という名前で定義された に対して を呼び出してブロックを実行している。つまり、(少なくとも 1.9 以降では) は を使った排他制御に他ならず、各スレッドが を呼び出しているクリティカルセクションにおいてのみスレッドセーフに実行することができる。言い変えると、かつての 1.8 の のように、その実行中はスレッドのコンテキストスイッチを一切行わない、というものではない。 Thread.exclusive はなぜ deprecated になったのか バグトラッカーの「 Why was Thread.exclusive…

READ MORE >>



Crystal Advent Calendar 2015 に、なんと Crystal の作者である Ary Borenszweig ( @asterite ) 本人が記事を投稿してくれました。 せっかく日本のコミュニティの Advent Calendar に向けて書いてくれたし、内容も Crystal にとって非常に重要なものなので、これも日本語に翻訳したものを公開したいと思います ( クリスマス・キャロル を下敷きにした構成も洒落てていいよね!) 。 原文はこちら。 The future of Crystal The Future of Crystal (この記事は Crystal Advent Calendar 2015 の 24 日目の記事です) クリスマスイブに不思義な体験をした。 僕たちは Crystal のコーディングを楽しんでいたんだけど、ちょっと画面から目を離した瞬間、すぐそばに透き通った人影が現れたんだ。そしてそれは近づいてきてこう言った。 「私は過去のクリスマスの精霊。さあ、一緒に行きましょう。」 そこには、Ruby…

READ MORE >>



Crystal Advent Calendar 2015 にトルコの Rubyist である Serdar Dogruyol ( @sdogruyol ) が記事を投稿してくれました。せっかく日本のコミュニティの Advent Calendar に向けて書いてくれたので、日本語に翻訳したものを公開したいと思います。 原文はこちら。 Why Crystal? Why Crystal? この記事はプログラミング言語に関する個人的な意見を書いたものです。 まず、私は Rubyist です。私は、Ruby コミュニティや Ruby の生産性、そして他にも Ruby が持つ様々な素晴らしさを心から愛しています。実際に、ここ4年以上の間、私は Ruby のコードを書くことで収入を得てきました。本当はこのままずっと Ruby を書き続けていたいのですが、言語やツールというものはいつか入れ替わる運命にあることも理解しています。 2015年、「Ruby から X…

READ MORE >>



この記事は Crystal Advent Calendar 2015 の3日目の記事です。 昨日は、kfly8 さんによる Hello, Crystal でした。Crystal アプリケーションを Heroku にデプロイして動かすという内容で、自分も書いてある通りにやってみたんですが、buildpack もあるのでサクっと動かせて素敵でした!しかし、ここはリスペクトを込めて一言言っておくべきでしょう。「このぱくり記事め! (ごめんなさい)」 TL;DR Crystal の API リファレンスの Dash Docset を作りました。 使ってみたい方は ここ からダウンロードして、 を Dash に読み込んでください。 Dash Docset さて、タイトルにある通り、この記事では Crystal の Dash Docset を作ります。 Dash というのは OS X 用の API ドキュメントブラウザーで、もうこの時点で OS X ユーザーじゃなかったり Dash…

READ MORE >>



Rails アプリケーションの開発をするとき、頻繁にメソッドの定義内容や Gem のコードを参照することがあります。そこで、ソースコードタグ付けツールの GNU GLOBAL (gtags) を使ってその作業を少しでも楽に、快適にしたい、という話です。 タグ付けツールでは ctags が有名で、こっちは Ruby や Rails での利用例も結構見つかる (ほとんどは Emacs ではなく Vim ですが) のですが、GLOBAL は定義へのジャンプだけでなく、参照へのジャンプもできる点が優れています。ビルトインパーサーが対応している言語が少ないのが難点なのですが (Ruby も未対応)、プラグインパーサーとして先の ctags と Pygments を利用することで、多くの言語に対応させることが可能です。 やりたいこと 以下を実現するのが目的です。 アプリケーションコードで「定義」「参照」「シンボル」のタグジャンプを使えるようにする アプリケーションが利用している Gem のコードに対しても同様にタグジャンプの対象にする GLOBAL の gtags…

READ MORE >>



「Rails3レシピブック」を読んでいて、「 カウンタキャッシュ 」の設定方法が出てきた。 このように、モデルの関連において参照元で に というパラメータを与えると、そのモデルのコールバックで参照先のカウンター用カラム ( ) が自動的に増加/減少するというもの。 「Rails3レシピブック」では、上記の という書き方だけが紹介されていたけど、RailsGuides で該当箇所 ( 4.1.2.3 :counter_cache ) を参照したみたところ、(Rails 4 で追加されたのかもしれないけど) 以下のように指定することで、任意の参照先のカウンタ用カラム名を任意のものにすることもできるみたいだった。 「ほう、するとカウンタキャッシュはどうやって設定されてるんだろう?」と思ってコードを少し眺めてみたら、これがなかなか面白そうだったのでちゃんと読んでみることに。もしかしたら、最近 Ruby コードの Crystal 移植をやったりしてたので、こういう型が自由 (ハッシュの値が bool…

READ MORE >>



簡単な API サーバーを作る必要があったので、Elixir の WAF である Phoenix を使ってみました。API バージョンでスコープを分けた RESTful API 構成にしようとしたのですが、なんだか結構ハマってしまったので簡単な手順を残します。 と という2つのフィールドを持つ という単純なリソースを例とします。 アプリケーションの作成 タスクで新規の Phoenix アプリケーションを作成します。このとき、今回は REST API リソースを構築するので、アセットを管理するためのツールである は不要です。したがって オプションをつけて実行します。 これで、Phoenix アプリケーションの雛形が作成されるので、まずは出力された指示にしたがってデータベースの作成をします。 ただ、以下のエラーが出力されて、データベースの作成に失敗することがあります。 これは、Phoenix が利用する というロールが Postgres…

READ MORE >>