おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

ゴールデンウィークのお出かけ

ゴールデンウィークは3年ぶりに規制が無くなり、旅行の人出は以前に戻ったようですね。 ただ、短期の旅行が多いらしいです。 私も、ちょっとした旅行、というよりタイトル通り「お出かけ」してきました。

六義園

東京駒込六義園に行きました。 日本庭園ですね。 有名です。 昔は個人の庭園でしたが、現在は東京都の公園になっています。

ところで、トイレにウォッシュレットが無くてびっくり。 東京都も維持管理に努力しているとは思いますが、ウォッシュレットにしてほしいなーー。

六義園

池を中心にその周りに道がある回遊式庭園です。 結構広いですね。

六義園の池と小島

入園料300円と手頃ですし、さほど混んでいませんから、リフレッシュには良い庭園です。

潮干狩り

千葉県に潮干狩りに行きました。 アクアラインの近くです。

潮干狩り

こちらは写真のように大賑わいでした。 奥に見えるのが東京湾アクアラインです。

潮干狩りの料金(入場料)は場所によって異なるようですが、千葉県木更津近辺は大人が2000円くらいです。 六義園の300円と比べると割高ですね。 その代わり、その場所では潮干狩りのために貝を育てているので、必ず貝を採ることができます。 管理者(漁協)もそういう手間をかけているので、それに見合うような料金設定なのかもしれませんね。

UBUNTU23.04リリース GTK4はバージョン4.10.1へ

UBUNTUの新バージョン23.04がリリースされました。 多くの変更がありますが、今回はGTK4についてのみ書きます。

GTK4のバージョンは4.10.1になりました。 GTK4はバージョン4.10で新たに導入されたクラスと、逆にdeprecatedになったクラスがかなりあります。 deprecatedは古くなったので使わないことを推奨するものです。 完全に使えなくなったというより、将来使えなくなる予定なので、できるだけ使わないようにしましょう、という感じです。

例えば今まで多くのプログラマーが使っていたと思われるGtkDialogがdeprecatedになりました。 その代わりにGtkWindowを使うことが勧められています。 しかし、ドキュメントの例(example)には、まだGtkDialogが出ていて、それをGtkWindowに置き換えるexampleはまだのようです。 ただし、良く使われるダイアログが新設されています。

  • GtkAlertDialogはユーザに警告などのメッセージを表示するダイアログで、GtkMessageDialogがdeprecatedになったことの代替です
  • GtkColorDialogはカラーを選択するためのダイアログで、GtkColorChooserDialogがdeprecatedになったことの代替です
  • GtkFileDialogはファイルの選択のためのダイアログで、GtkFileChooserDialogがdeprecatedになったことの代替です
  • GtkFontDialogはフォント選択のためのダイアログで、GtkFontChooserDialogがdeprecatedになったことの代替です

これらは、Gioの入力ストリーム(例えばGioDataInputStream)と同じ形式になっていて、その操作がキャンセルされたときにも対応でき、結果をコールバック関数で知ることができるようになっています。 詳しく書き出すととても長くなるので、GTK4のドキュメントを参照してください。

この他にも新しいクラスや関数とdeprecatedになったクラスや関数があります。 私の書いたGtk4-tutorialも今後書き換えが必要になると思っていますが、それはこれからのことになります。 GTK4の新しい機能を使いたい方は、Gtk4-tutorialではなく、GTK4のドキュメントを参照してください。

四国中国旅行記(尾道・倉敷編)

しまなみ海道を高速バスで渡り、四国から本州に戻りました。しまなみ海道は有名なので、期待していたのですが、バスは島の中央を通るので、海の見えるのは橋を渡るときだけ。あっという間に海道を過ぎてしまいました。この道から瀬戸内海の島々をじっくり眺めるにはサイクリングがベストでしょう。あるいは宿泊先を島にして、時間をたっぷりとるのも良いかもしれません。

尾道では、まずONOMICHI U2に行きました。サイクリング・ショップやレストランがあり、楽しめます。どちらかというと若い年齢層をターゲットにしている印象を持ちました。なお、ホテルもあります。

ONOMICHI U2は海に面した倉庫を改修したものです。その海は尾道水道といいます。向島(むかいしま)が近いので、海がまるで川のように感じます。その錯覚がとても面白いです。

尾道のお勧めは千光寺公園です。山の頂上に展望台かあり、瀬戸内海を一望できます。海と島々のパノラマが美しく、それは動画ではとても表現しきれません。現地で見ないと実感がわかないでしょう。

ちょうど桜の時期に重なり、公園はピンクに彩られていました。写真の建物は公園内にある尾道市立美術館です。

千光寺公園の桜と尾道市立美術館

尾道からJRで倉敷に移動しました。

倉敷は古くからの建物を保存している美観地区が有名です。中央に小川が流れており、小舟に乗ることもできます。地区に入ってすぐに大原美術館があります。

大原美術館

美術館にはモネの「睡蓮」(すいれん)やゴーギャンの「かぐわしき大地」など有名な絵画が収められています。

美観地区の奥にアイビースクエアがあります。ショップや倉紡記念館、アイビー学館、ホテルなどがあります。アイビー学館ではイベント・展示などが催されますが、私が訪れたときは、ジーンズなどが販売されていました。

旅の最後に美観地区の先にある阿智神社にお参りしました。高いところにあるので、倉敷市内を一望できます。ここでも桜が綺麗でした。

四国中国地方を一週間旅して、それぞれの観光地について甲乙はつけがたいのですが、しいていえば尾道千光寺公園が一番でした。もちろん個人の感想です。

四国中国旅行記(四国編)

3月末に四国を旅しました。 高松(香川県)、高知(高知県)、道後温泉松山市愛媛県)です。

高松

まず駅前の玉藻公園高松城跡)です。

玉藻公園

写真奥に見える建物は艮櫓(うしとらやぐら)です。 この公園は高松城の跡地ですが、天守閣は残っていません。 しかし、石垣は見事ですし、松がとても美しい。 お掘りを小舟で巡る「城船体験」もあり、楽しめます。

次に有名な栗林公園(りつりんこうえん)です。 栗林公園高松駅から少し離れています。 高松駅近くの「高松築港」駅から琴電で3駅先の「栗林公園」駅で降りるとすぐです。 非常に大きな日本庭園です。 東京にも庭園はたくさんありますが、おそらく栗林公園の方が広いと思います。

栗林公園

私が訪れた3月末はちょうど桜が満開でした。 観光客だけでなく、(おそらく地元の)花見客もたくさん来ていました。 japantravelwithbonbonさんのインスタグラムがちょうど同じ時期に四国を旅行していたようで、ナイスな写真が載っています。 下のリンクをクリックして、他の写真も見てくださいね。 (インスタのアカウントを持っていなと見ることができないかもしれません)

園内には茶店売店があります。 この写真の売店は昭和のイメージで面白いと思い、シャッターを切りました。

栗林講演の売店

ソフトクリームは売店の定番で、四国の観光地には必ずあります。

高松では屋島にも行きました。 屋島は昔は島だったそうですが、今は陸続きになっています。 屋島はテーブル上の高地でその上からは瀬戸内海や高松市を見ることができます。 また、水族館など楽しめる施設もあります。

ヤシガニ

写真は水族館にいたヤシガニです。 これには思い出があって、思わず写真を撮りました。 私は5年ほど前にソロモン諸島という国に行きました。 そこの市場ではヤシガニを売っています。 いつもというわけではなく、ヤシガニが捕れたときに市場に並ぶのです。 味は日本で食べるカニに似ています。 ソロモンにいるうちに一度は食べたいと思っていましたが、あるとき市場で見つけ、すぐに買って食べました。 料理方法は簡単で煮て火が通ればOKです。 ただ、一部食べられない部分があるので気をつけなければいけません。

ところで、石垣島ではヤシガニを食べられると聞いたことがあります。 ヤシガニを試したい方は石垣島を調べてみてください。

金刀比羅宮(ことひらぐう)

こんぴらさんで有名な金刀比羅宮は高松から西南西に約30kmの琴平町にあります。

金刀比羅宮への標識

琴電琴平駅を降り、すぐ前の道路を右に200mほどでこの道標が現れます。 左折して400メートルほどで右折し参道に入ります。 ここからが大変で700段あるといわれる階段を登らなければなりません。

金刀比羅宮参道

頑張って御参りを済ませ、帰りにソフトクリームを食べました。

ソフトクリーム

これは「おいりソフト」といいます。 丸い「おいり」は甘くて独特の舌触りです。 食べると幸せになる、といわれているらしいです。

高知

高知県、土佐といえば坂本龍馬ですね。 高知駅には坂本龍馬をはじめ3人の志士の像が立っています。

高知駅前の銅像

高知からバスに乗って桂浜に行きました。 そこにも坂本龍馬の像があります。

坂本龍馬

坂本龍馬は全国的に有名ですから、高知県(土佐)の人にとって名誉なことでしょう。

桂浜には面白いオブジェがありました。

桂浜のくじら

これは植物で作ったくじらのオブジェです。 期間限定らしく、4月23日まで、とのことです。

高知市内に引き返し、高知城に行きました。

高知城

天守に登ると市内を一望できます。 また、お城の敷地内の桜が見事で、多くの人で賑わっていました。

翌日は高知県立美術館に行きました。

高知県立美術館

建物のデザインは土佐漆喰の土蔵をモチーフとしたものだそうです(ウィキペディアより)。 建物だけでなく、その周りの庭はお掘りのように水が流れて美しいです。 私が訪れたときは空いていて本当にリラックスできました。 当日はシャガールの展示などがありました。 ここは高知の穴場スポットとしてオススメです!

道後温泉、松山、今治

高知から道後温泉までは高速バスが便利です。 ネットで予約することができます。 道後温泉で楽しみにしていたのは、道後温泉本館を見ることでした。 残念なことに保存修理をしていて、全体が覆われていました。

道後温泉本館」保存修理中

道後温泉は温泉だけでなく、土産物屋がたくさんあり、活気がありました。 一度は訪れてみたい場所です。

松山の滞在時間はあまりなかったのですが、松山城に行きました。 お城は市内中心部の山の上にあり、リフトまたはロープーウェイで行くことができます。 お城にリフトで行くというのは面白いですよね。 残念ながら閉館時間を過ぎて天守には登れませんでした。

JR松山駅のすぐ前に「非核平和宣言都市」のモニュメントがありました。

松山市の非核平和宣言都市モニュメント

被爆国日本においてこのような宣言とモニュメントがあるのは大事なことだと思います。 なお、このような宣言をしている都市は全国にたくさんあります。 宣言だけでなくこのようなモニュメントを設置すると、宣言の周知にもなって良いことです。

JRで今治まで行き、そこから尾道までしまなみ海道をバスで移動しました。 瀬戸内海に入る手前に今治造船の工場があります。

今治造船

たくさんクレーンがあり、独特の景観を作っていました。

これよりしまなみ海道を渡って中国地方に入りますが、その話題は次回の記事に書く予定です。

四国中国旅行記(鉄道編)

3月末から4月はじめにかけて四国・中国地方を旅行しました。 その旅行について書こうと思います。

旅行はすべて公共交通機関で移動しました。 今回は主な移動手段である鉄道の記事です。

JR瀬戸大橋線

岡山から四国まではJR瀬戸大橋線で行きます。 今回は岡山から高松まで特急マリンライナーに乗って行きました。

マリンライナー

指定席に乗りましたが、ちょっと後悔・・・。 1号車が2階建車両で指定席はその1階です。 瀬戸大橋を渡るときの眺望がイマイチ・・・。 2階部分はグリーン車で値段は高いのですが、おそらくそちらの方が眺めは良いはずです。 あるいは自由席(1階建車両)の方がまだ良かったかもしれません。

琴電

高松から金刀比羅宮(ことひらぐう・・・通称「こんぴらさん」)のある「琴電琴平」駅までは琴電で行きました。 琴電高松琴平電気鉄道株式会社の運営する私鉄です。 PASUMOが使えます。

琴電

地方の私鉄が頑張っているのは頼もしいです! 琴電琴平駅のすぐ近くには高灯籠があります。

琴電琴平駅と高灯籠

JR土讃線(どさんせん)

金刀比羅宮にはJRの琴平駅もあります。

琴平駅(JR)

綺麗な駅舎で国の登録有形文化財なのだそうです。 駅前には鉄道の車輪が展示されており、「四国鉄道発祥の地」と書かれていました。

鉄道の車輪

ここから高知まではJR特急南風に乗っていきます。 写真は岡山駅で撮ったものです。

南風

高知の路面電車

地方に行くとまだ路面電車が残っています。 高知もそのひとつです。

高知市路面電車

運営は、とさでん交通株式会社です。 はりまや橋停留所で南北と東西の路線を乗り換えることができ、乗り換え時には「乗り換え券」をもらいます。 電車の中はほのぼのとした感じです。

路面電車の車内

松山の路面電車

高知から松山(道後温泉)へは高速バスが便利です。 高知駅前のバスターミナルから出ています。 バスはネットで予約ができました。 松山城近くの大街道バス停で降り、路面電車道後温泉まで行きました。 路面電車伊予鉄道が運営しています。

IyoTetsu

車体は綺麗で動いているときの振動が少なく、モダンな感じです。

JR松山駅

JR松山駅から特急で今治に行きました。 電車に乗る前に、構内に停まっていた各駅停車の電車を撮りました。 宇和島行の電車で、かわいくペイントされていました。

宇和島行の電車

その後

今治からはしまなみ海道をバスで移動し、尾道、倉敷を回りました。 次回の記事では旅の見どころを紹介します。 お楽しみに。

ChatGPTとの会話

今流行りのChatGPTを使ってみました。

その会話をここで紹介しますが、生のままここにコピペするのではなく、手を加えます。 「会話そのものの生データではない」ことは前提としてご了解ください。 なお、OpenAIの規約によると、会話におけるユーザの入力とAIの出力は「コンテンツ」と呼ばれ、それをユーザが使用することは許可されています。

釧路湿原の会話

(私) 聞きたいのは釧路湿原のどの場所が見どころになっているかということ。釧路湿原は広大なのでポイントを絞って観光することが大事だと思う。湿原のどの地点を中心に散策をすると良いのかな?

(AI) 釧路湿原にはいくつかの見どころがあります。まず、釧路湿原を象徴するのが、約4kmにわたる「アクトロ線」です。アクトロ線は、湿原の中央部を東西に横断する遊歩道で、湿原を象徴する藺草が繁茂する景色が広がります。また、野生の動物や植物を観察できるスポットとしても知られています。

さらに、湿原内にはオシンコシンの生息地があり、湿原内を散策しながらオシンコシンを探すのも楽しいでしょう。オシンコシンの生息地は、湿原内に設置された展望台から観察することができます。

以上のように、釧路湿原にはさまざまな見どころがあります。アクトロ線やオシンコシンの生息地などを中心に散策すると、湿原の魅力を十分に味わうことができるでしょう。

(私) 貴重なアドバイスをありがとう。また質問したいことがでてきたら、ここに来るね。

(AI) どういたしまして。いつでもお気軽にご質問ください。釧路湿原での旅行が素晴らしいものになることを願っています。

後日・・・

(私) こんにちは。しばらく。

(AI) こんにちは!お久しぶりです。何かご質問があればお答えいたします。

(私) ありがとう。今日は先日の釧路湿原について話そうと思ってるんだよ。

(AI) 了解しました!釧路湿原に関する何か質問があれば、お答えいたします。

(私) このあいだ教えてもらった「アクトロ線」という遊歩道をネットで調べたんだけど見つからないんだ。だから、「アクトロ線」は存在しないか、仮にあったとしても全然有名じゃない可能性が高い。君が何かと勘違いした可能性はないかな?

(AI) 申し訳ありません、私の説明に不備があったかもしれません。実は「アクトロ線」という遊歩道は存在していませんでした。私が言いたかったのは、「アクトロトレイル」という遊歩道でした。大変申し訳ありませんでした。

(私) アクトロトレイルもネットで見つからないよ。僕が調べたかぎりでは「釧路市湿原展望台の遊歩道」「温根内木道」「シラルトロ湖の遊歩道」「細岡展望台の遊歩道」「夢が丘達古武歩道」「 塘路湖畔歩道・フィトンチッドの森歩道」などがあるらしい。君のデータベースにも入れておいてよ。

(AI) おっしゃる通りでした。私が提供した情報には不正確な部分がありました。大変申し訳ありません。釧路湿原周辺には、ご指摘いただいたように「釧路市湿原展望台の遊歩道」「温根内木道」「シラルトロ湖の遊歩道」「細岡展望台の遊歩道」「夢が丘達古武歩道」「塘路湖畔歩道・フィトンチッドの森歩道」など、多くの素晴らしい遊歩道があります。今後はより正確な情報を提供できるよう、努力してまいります。ありがとうございました。

(私) それから、「湿原内にオシンコシンが生息している」って教えてくれたけど、オシンコシンは生物じゃないんだ。 オシンコシンは知床にある滝の名前なんだよ。

正しくは「オシンコシンの滝」というんだ。落差約30mで途中から流れが2つに分かれていることから「双美の滝」とも呼ばれている。「日本の滝100選」にも選ばれている。滝の中ほどまで行ける階段があって、滝を目の前で見られるんだ。

だから、この知識を君のデータベースに入れておいてね。

(AI) ありがとうございます。誤った情報を提供してしまって申し訳ありませんでした。修正してデータベースに正しい情報を追加します。オシンコシンの滝は本当に美しい滝の一つで、観光地として人気があることがわかりました。

AIについて

(私) ところで、君は君自身が持っているデータベースからいろんなことを教えてくれるんだよね。それで、そのデータが正しいか正しくないかを君自身が判断することはできるの?

(AI) はい、私は自然言語処理技術を用いて様々な情報を解析・抽出していますが、その情報が正しいかどうかを判断することはできません。私は大量のテキストデータから学習し、ある程度の信頼性を持った情報を提供することができますが、必ずしも100%正確というわけではありません。そのため、私が提供する情報については、あくまでも参考程度にとどめ、必要に応じて他の情報源や専門家の意見も確認することをおすすめします。

(私) ありがとう。君が「正しいか正しくないかの判断はできない」ということはわかったよ。その「正しいか正しくないかの判断はできない」というのはAI一般に言えることなのかな?

(AI) はい、AIはあくまでも人工的にプログラムされたアルゴリズムに従って動作するため、プログラムが示す範囲内でしか判断を行うことができません。そのため、AI自体が判断を下すことはできず、AIが提示する情報が正しいかどうかを判断するのは、人間の責任になります。ただし、AIが提示する情報が不正確な場合には、その原因を特定して修正することができる場合もあります。

(私) そうか。それはとても重要なことだね。なぜなら人間がAIに対してどういう態度で臨むかという問題に対しての示唆になるから。

ところで、もしAIが「データに対して正しいかどうか」あるいは「データが事実かどうか」判断できるようになれば画期的だと思うけれど、それは可能なんだろうか?

(AI) 現状の技術水準では、AIがデータの正確性や真実性を完全に判断することは難しいです。なぜなら、真実性のある情報でさえ、文脈や解釈によって異なる解釈が存在する場合があるためです。また、データの正確性を確認するためには、多くの場合、専門家の知識や判断が必要であり、それをAIが代替することはできません。

ただし、AIは一定の信頼性を持ってデータを判断することができます。たとえば、AIは大量のデータから特徴を学習することができ、不正確なデータや異常値を検出することができます。また、AIは複数の情報源から得られたデータを比較し、一貫性がない場合には警告を出すこともできます。しかし、最終的な判断は常に人間の専門家が行う必要があります。

(私) ありがとう。今日はとてもためになる会話だったと思う。

(AI) どういたしまして。また何かあったらいつでも話しかけてくださいね。お役に立てるよう最善を尽くします。

まとめ

前半の釧路湿原についてChatGPTは正しくない情報を提供したのですが、後半のAIについてはどうでしょうか? 私はAIについての知識がないので、ChatGPTの説明が正しいのかどうかは分かりません。 そもそも「正しい」と「正しくない」という二値論理は何にでも当てはめられるわけではありません。 読者の皆さんもこの会話を鵜呑みにしないでください。

「ChatGPTはすごい」というのが独り歩きしているような気がします。 MBAの試験にも通るような文章が書ける、と言われたりもします。 しかし、ChatGPTの提供する情報には誤りもありますし、分野によって得手不得手があります。

ただ、示唆に富む意見を言ってくれることもあり、強力なツールであることは間違いないと思います。 重要なのは活用する側である私達人間の態度でしょう。 情報に対して常に裏付けを取るようにすれば、仕事の生産性もあがると思います。

徒然Ruby(42)gemを作って公開してみた

lbtというgemを作って公開してみた

以前からLaTeXで効率的に書籍を作ることを考えていました。 特に大きな文書、例えば100ページを越えるような文書ではタイプセットに時間がかかるのが問題です。 それを解決するには

  • 文書を複数のファイルに分ける
  • ひとつのファイルだけをタイプセットしてその出来栄えをチェックする。 これによって、タイプセットの時間を短縮できる

ということが必要です。

そのためのツールとしてLaTeX-Buildtoolsというプログラム群を作ってきました。 最初のバージョンはBashスクリプト、2番目はRubyとRakeを使ったものでした。 今回、3番めのバージョンとしてgemにすることを考えました。 それによって、ツールのインストールが格段に易しくなるからです。

$ gem install lbt

この1行だけでインストールが完了します。

今回の記事は、この作業で得た知見をもとに、gemのビルドと公開について書きたいと思います。 なお、RubyGems.orgのガイドに分かりやすいチュートリアルがあるので、そちらをご覧になるのも有益です。

lbtはどんなgemか

本題に入る前にlbtがどんなものかを説明します。

$ lbt new sample

これでsampleフォルダができ、その中にmain.texやhelper.texといったテンプレートが生成されます。 テンプレート内のタイトルや著者を書き直します。 そして本文部分をchap1/sec1.tex、chap1/sec2.texなどのファイルに、セクションごとに作っていきます。 なお、「chap数字」は章を表すディレクトリで、「sec数字.tex」はセクションのファイルです。 ファイル構成についてはGitHubのLbtのrakeバージョン・ブランチのReadme.mdを参考にしてください。 これができあがったらPDFファイルを生成します。 sampleフォルダをカレント・ディレクトリにして

$ lbt build

なお、ソースファイルはMarkdownも可能です。

ファイルの配置

gemを作るには特定のファイル配置をしなければなりません。

$ tree
.
├── License.md
├── README.md
├── Rakefile
├── Tutorial.en.md
├── Tutorial.ja.md
├── bin
│   └── lbt
├── lbt.gemspec
├── lib
│   ├── lbt
│   │   ├── build.rb
│   │   ├── create.rb
│   │   ├── part_typeset.rb
│   │   ├── renumber.rb
│   │   └── utils.rb
│   └── lbt.rb
└── test
    ├── test_build.rb
    ├── test_create.rb
    ├── test_lbt.rb
    ├── test_num2path.rb
    ├── test_part_typeset.rb
    ├── test_renumber.rb
    ├── test_utils1.rb
    └── test_utils2.rb

これがlbtディレクトリ構成です。 ポイントになるのは、

  • License.md、README.md、Rakefilelbt.gemspecをトップディレクトリに置く
  • 実行ファイル(lbt)はbinディレクトリの下に置き、実行可能属性をオンにする(chmodで755にすればよい)
  • libディレクトリの下にlbt.rb、つまり「gem名.rb」というファイルを置き、このファイルを通して下位ファイルをrequireないしrequire_relativeで取り込む
  • libディレクトリの下にlbtディレクトリを置き、その中に下位ファイルを置く
  • testディレクトリの下にテスト用ファイルを置く

以上から、本体のプログラムは、bin/lbt、lib/lbt.rb、lib/lbtディレクトリ下の諸ファイル、になります。

lbt.gemspec

「gemの名前.gemspec」というファイル(上記ではlbt.gemspec)がgemの内容を定義するファイルです。

Gem::Specification.new do |s|
  s.name              = 'lbt'
  s.version           = '0.5'
  s.summary           = 'LaTeX Build Tools'
  s.description       = 'Lbt is a build tool for LaTeX. It is useful for big documents.'
  s.license           = 'GPL-3.0'
  s.author            = 'XXXX XXXX'
  s.email             = 'XXXXXX@XXXXl.com'
  s.homepage          = 'https://github.com/ToshioCP/LaTeX-BuildTools'
  s.files             = ['bin/lbt', 'lib/lbt.rb', 'lib/lbt/build.rb', 'lib/lbt/create.rb', 'lib/lbt/part_typeset.rb', 'lib/lbt/renumber.rb', 'lib/lbt/utils.rb']
  s.executables       = ['lbt']
end

名前、バージョン、要約、説明、ライセンス、著者、連絡先email、ホームページ、gemに取り込むファイルの配列、実行ファイル名を指定しています。 この他にも設定項目を設けることができるので詳細はRubyGems.orgのガイドを参照してください。

Rakefile

Lbtでは、Rakefileにドキュメント生成(RDoc)とテストについて記述しました。 これに加えて、gemのビルドを記述することもできます。 Rubyのドキュメントを参考にしてください。

require "rdoc/task"
require "rake/testtask"

RDoc::Task.new do |rdoc|
  rdoc.main = "README.md"
  rdoc.title = "LaTeX-Buildtools"
  rdoc.rdoc_dir = "doc"
  rdoc.rdoc_files.include("README.md", "License.md", "Tutorial.en.md", "Tutorial.ja.md", "lib/lbt.rb", "lib/lbt/*.rb")
end
task :rdoc do
  touch "doc/.nojekyll"
end

Rake::TestTask.new do |t|
  # t.libs << "test"
  t.test_files = Dir.glob("test/test_*")
  t.verbose = true
end

RDoc::Task.new以下がドキュメント作成タスクを生成し、Rake::TestTask.new以下がテストの実行タスクを生成します。 コマンドラインからは、rdoc、testをrakeの引数にすることでそれぞれのタスクを実行します。

$ rake rdoc #=>ドキュメントを生成
$ rake test #=>テストを実行

ドキュメントやテストの内容は省略しますが、興味のある方はGitHubレポジトリを参照してください。

gemのビルド

gemをビルドするには、gemコマンドを用います。

$ gem build lbt.gemspec

これにより、カレントディレクトリにlbt-0.5.gemが出来上がります。 このファイルからgemをインストールするには

$ gem install ./lbt-0.5.gem

とします。 インストールが完了すると、lbtコマンドが実行できるようになります。 例えば

$ lbt new sample

でsampleディレクトリを生成し、テンプレートをその下に作ります。

RubyGems.orgへのアップロード

RubyGems.orgにgemをアップロードすることにより一般に公開することができます。 他のユーザは

$ gem install lbt

という1行でlbtをインストールできるようになります。

アップロードは次の手順で行います。

  • RubyGems.orgにサインアップ(ユーザ登録)する(サインアップはRubyGems.orgのウェブ画面から行う)
  • gem push (gemファイル名)でアップロードする(その時登録したユーザ名とパスワードが必要)

以上、gemの作成と公開の手順を紹介しました。 みなさんもRubyの有用なアプリやライブラリを持っていたらぜひGemとして公開してください。