こんにちは。クリアコードで組込み機器向けのサイネージシステムの開発やRubyでのmilter1開発などを担当している沖元です。プライベートでは、るりまプロジェクトなどで活動しています。
先日このブログで紹介したインターンシップ制度では、クリアコードのメンバーが開発したいと考えているフリーソフトウェアの中から「これは」というものをインターンが選択します。本エントリで紹介する開発したいフリーソフトウェアはBitClust2です。BitClustに以下の機能を追加してるりまをより便利にしたいと考えています。
- RDocへのリンクを表示する機能
- サンプルコードの実行結果をデータベース生成時に埋め込む機能
各機能の開発内容の詳細を述べます。
RDocへのリンクを表示する機能
概要
Ruby-Doc.orgへのリンクを表示できるようにします。RDocの各クラスやメソッドへのリンクは機械的に計算することができるはずなので、そんなに難しくないと考えています。
この機能を追加するのは、るりまの内容とRDocの内容をウェブブラウザ上で簡単に比較できるようにするためです。また、次のような効果も期待しています。
- るりまのページからRDocの内容をすばやく確認できると正しい情報に到達しやすくなる。
- るりまの内容とRDocの内容を簡単に比較できるようになるので、RDocに不足がある場合でもRDocへのフィードバックがしやすくなる。
開発の流れ(現時点での想定)
-
チケットを読む。
-
RDocの各クラスやメソッドへのリンクの作成方法を検討する。(RDocのソースコードを読む必要があるかもしれません。)
-
クラス名やメソッド名からRDocへのリンクを生成するヘルパーメソッドをBitClustに追加する。
-
上で追加したヘルパーメソッドを使ってRDocへのリンクを表示する。
開発に必要な要素技術や知識分野
- Ruby一般の知識
- HTML一般の知識
挑戦ポイント
特に挑戦ポイントはありません。RDocへのリンクを正しく生成する方法さえ見つけることができれば、あとは簡単です。
サンプルコードの実行結果をデータベース生成時に埋め込む機能
概要
現在、るりまプロジェクトではサンプルコードの埋め込みは手で実行した結果をコピー&ペーストしています。しかし、すべてのサンプルコードの実行結果が正しいことを確認できていないので、ときどき、プロジェクトのITS3に「サンプルコードが動きません」や「サンプルコードが間違っています」のような報告があります。また、Rubyのバージョンアップによって挙動が変化したものへの追従も手動で行なっているため、完全に追従できているわけではありません。
人力ですべてのサンプルコードをRubyのバージョンごとに実行し結果をコピー&ペーストするのは、現実的ではありません。我々はプログラマなので、自動化できるところは自動化したいと考えています。
そこで、インターンシップの期間を用いて以下の機能を開発したいと考えています。
- サンプルコード専用の記法を導入し、コードブロックを実行したり別ファイルに書かれたサンプルコードをインクルードしつつ実行し、結果を埋め込む機能。
- 読む人の使っているRubyとサンプルコードを実行したRubyはバージョンが同じでもプラットフォームやパッチレベルが違う可能性があるのでそのサンプルコードを実行したときの
ruby -v
も埋め込む機能。
この機能を開発することにより、以下のことを期待しています。
- すべてのサンプルコードが自動的に実行されるため公開されているドキュメントに間違いが入りづらくなる。
- サンプルコードの実行結果も自動で埋め込まれるのでドキュメントを書くコストが下がる。
- Rubyの新しいバージョンがリリースされたときでもドキュメントを再生成するだけなのでメンテナンスコストが下がる。
開発の流れ(現時点での想定)
-
チケットを読む。
-
サンプルコード用の記法の仕様を検討する。
-
上で検討した結果を元にしてBitClustを変更する。
-
作成した記法をいくつかのドキュメントに導入して動作を確認する。
開発に必要な要素技術や知識分野
- Ruby一般の知識
- HTML一般の知識
挑戦ポイント
BitClustはほとんど外部ライブラリを使用せずに開発されているのでブラックボックスになっている部分がありません4。そのため外部ライブラリをあまり使用せずにRubyを用いてアプリケーションを開発するときの参考になるでしょう。機能を実現するのに既存のツールを使用するか自前で実装するのか決める必要があります。
BitClustの既存の記法と衝突しないように設計する必要があります。また、その記法が本当にそれでいいのかコミュニティと合意を形成する必要があります。
まとめ
インターンシップで開発したいるりまをより便利にする機能を2つ挙げました。これ以外にも色々と開発したい機能はあるのですが、それについてはまた別の機会に書きます。この中に「挑戦してみたい!」と思える機能があれば、インターン募集ページから是非ともご応募下さい。
-
milter managerを使うとRubyでmilterを開発することができます。 ↩
-
るりまプロジェクトで使っているドキュメント生成や検索機能を提供するツール。 ↩
-
Issue Tracking System ↩
-
ウェブアプリケーション部分の実装でRackを使っているくらいです。 ↩