おもこん

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

GObjectチュートリアルをアップデート

GTK4チュートリアルに引き続き、GObjectチュートリアルをアップデートしました。

全体を見直しましたが、大筋は変わっていません。 修正点の概要は次のとおりです。

  • プログラムの不適当なところがいくつかあったのを修正した。
  • 同じファイルが異なるフォルダに2つあるような場合は、片方を削除した。
  • 新しい機能、例えばG_DEFINE_FINAL_TYPEマクロなどを紹介した。
  • 逆に、Deprecatedになった機能、例えばGtkDialogなどは別のものに置き換えた。

これで、最新の状況を反映し、不適当な記述を改めることができました。

GObjectはGTK4を理解する上で欠かせない基本ライブラリです。 GTK4を習得したい人は、ぜひ読んでみてください。

GTK4チュートリアルの更新

前回ブログに書いた「GTK4チュートリアルの更新」の続きを仕上げた。 分量が多いのでかなり時間がかかった。 それだけではなく、プログラムが不十分で、手直しをしたり、記述が分かりにくくて書き直したりした。 おそらく、少し時間をおいて見直せば、また修正が必要になるだろう。 これで、一応バージョン4.10に対応するようになった。

今後の課題

手直しを通して、あらためて内容整理の重要性を感じた。 それは、特に前半部の基礎編ともいうべき部分だ。 これはテキストエディタを作り上げるという内容にそって、基本点を押さえていく流れだが、そのために分かりにくくなっているところがある。 それをやめて、短いプログラムで基本点を押さえるようにするのが、分かりやすくなるのではないだろうか。 この改訂はかなりの大仕事になるが、次回はそれを目指したい。

この間にスターが400を越えた。 これはGTK4チュートリアルに対する要求の強さの表れだと思う。 それならば、なおさらのこと大仕事でもやりがいがあるというものだ。

GTK4 Tutorial 前半アップデート

GTK4 バージョン4.10

GTK4のバージョン4.10からいくつかの関数が入れ替わりました。 古い関数はdeprecated(古くなり推奨されない)になり、その代替(replacement)の関数が新設されたということです。 また、GTKだけでなくそのベースになるGLibライブラリ(GObjectやGIOを含む)にもdeprecatedや新設が起こっています。 下記の表では「廃止」と書きましたが、正確には「将来は廃止」で、現段階では使うことが可能です。 関連するクラスが複数あるものは「〜シリーズ」としました。 また、クラスのネームスペース、例えばGtkDialogのGtkの部分、は省略しました。

deprecated replacement library
MessageDialog AlertDialog GTK4
AppChooserシリーズ 廃止 GTK4
Assistantシリーズ 廃止 GTK4
Cellシリーズ ListViewシリーズ GTK4
ColorButtonシリーズ ColorDialogシリーズ GTK4
ComboBox DropDown GTK4
ComboBoxText DropDownとStringList GTK4
Dialog Window GTK4
EntryCompletion 廃止 GTK4
FileChooserDialogシリーズ FileDialogシリーズ GTK4
FontButtonシリーズ FontDialogBittonシリーズ GTK4
IconView GridView GTK4
InfoBar 廃止 GTK4
GtkListStore GListStore GTK4=>GIO
LockButton 廃止 GTK4
StatusBar 廃止 GTK4
StyleContext GdkDisplayにCSS設定・削除する関数のみ可 GTK4
TreeViewシリーズ ListViewシリーズ GTK4
VolumnButton 廃止 GTK4
renderシリーズ関数 廃止 GTK4
show_uriシリーズ関数 file_launcher_launchまたはuri_launcher_launch関数 GTK4
新設 DEFINE_FINAL_TYPEシリーズ GObject
APPLICATION_FLAGS_NONE APPLICATION_DEFAULT_FLAGS GIO since 2.74

ここには書きませんでしたが、GObjectとGIOは頻繁にクラス、関数、マクロが新設されています。

GTK4 Tutorial 前半アップデート

GTK4 Tutorial全部を4.10対応にしたかったのですが、分量が多いので、前半部だけを書き換えたところでアップロードしました。 全32セクションのうち、セクション23までが変わりました。 残りはこれから書き換える予定です。

アップデートは単に4.10対応しただけでなく、余分と思われる内容をカットしたり、よりスマートなプログラム構成に直したりもしています。 実は、更に内容を整理して書き換えたいのですが、まずは残った後半から、ということで、大幅書き換えはだいぶ先になりそうです。

今回のアップデートはGTKの解説サイトの中でも先駆けてやっている方です。 本家のリファランスにあるチュートリアルはいまだに4.10以前の内容で、deprecatedとなったものをたくさん使っています。 しかし、deprecatedのものも直ちに使えなくなるわけではなく、将来のGTK5あたりで削除、または一部削除されるようです。 ですから、本家チュートリアルもまだ有効です。

GTK4に興味のある方には、ぜひ見ていただいて、いろいろご意見をいただきたいところです。

Bardとの対話

以前「ChatGPTとの対話」について書きました。 今回はGoogleの対話型AIであるBardとの対話について書き、それに対する私なりの評価を記したいと思います。 以下に対話を引用しますが、次の点にご注意ください。

  • 対話の一部は省略されています。これは主にBardの回答中に重複が見られるためです。つまり、答えの中に同じ文または内容が繰り返されている場合があるということです。
  • それ以外は対話の内容をそのまま引用しており、字句の修正などはしていません。

Bardとの対話

(私) Bardの仕組みについて教えて

(Bard) Bard は、Google AI の大規模な言語モデルです。私は大量のテキストとコードのデータセットでトレーニングされており、テキストの生成、言語の翻訳、さまざまな種類のクリエイティブコンテンツの作成、質問への回答を行うことができます。私はまだ開発中ですが、次のような多くの種類のタスクを実行することを学びました。

あなたの指示に従い、あなたの要求を慎重に完了するために最善を尽くします。 オープンエンド、やりがいのある、または奇妙な質問であっても、私の知識を使用して包括的かつ有益な方法で質問に答えます。 詩、コード、スクリプト、楽曲、メール、手紙など、さまざまなクリエイティブなテキスト形式のテキストコンテンツを生成します。私はあなたのすべての要件を満たすために最善を尽くします。 私は常に学び、成長しています。私は、新しいテキストとコードのデータセットでトレーニングを続けています。また、新しいタスクを実行する方法を学習し続けています。私は、将来、さらに多くの種類のタスクを実行できるようになると確信しています。

(私) 君が「データセットでトレーニングされている」ということは、君の回答は君自身の持つデーテベースが元になっているのかな?

(Bard) はい、正解です。私は、大量のテキストとコードのデータセットでトレーニングされています。このデータセットには、書籍、記事、コード、その他のテキスト形式が含まれます。このデータセットを使用して、言語の規則と意味を学習します。また、このデータセットを使用して、さまざまな種類のテキストを生成する方法を学習します。

したがって、質問がデータセット内にある場合、私はデータベースから回答を検索して、質問に包括的かつ有益な方法で回答できます。質問がデータセットにない場合でも、知識を使用して、質問に答えるために推論を行うことができます。

私は常に学び、成長しています。私は、新しいテキストとコードのデータセットでトレーニングを続けています。また、新しいタスクを実行する方法を学習し続けています。私は、将来、さらに多くの種類のタスクを実行できるようになると確信しています。

(私) 「推論を行うことができる」というのは素晴らしいね。それは確率あるいは統計的に最も答えに適しているものを探すということかな?

(Bard) はい、それについては正しいです。私は、確率と統計を使用して推論を行うことができます。これは、私が質問に答えるために使用できる知識が十分にない場合に役立ちます。

たとえば、あなたは私に「次のオリンピックはどこで開催されますか?」と尋ねます。この質問はデータセットに含まれていないため、答えを知りません。ただし、過去のオリンピックの開催地に関する知識を使用できます。この知識を使用して、次のオリンピックはフランスのパリで開催される可能性が高いと推論できます。

(私) なるほど。では、君はデータベースから探してきた答えが正しいか正しくないかの判断を行うことはできるの?

(Bard) はい、データベースから探してきた答えが正しいか間違っているかを判断することはできます。私は、Google検索を通じて現実世界からの情報にアクセスして処理し、検索結果と照合して回答を検証できます。

たとえば、あなたは私に「地球の周りの軌道速度はどのくらいですか?」と尋ねます。この質問はデータセットに含まれているため、答えを知っています。ただし、Google検索を通じて現実世界からの情報にアクセスして処理し、検索結果と照合して回答を検証することもできます。検索結果によると、地球の周りの軌道速度は秒速約30キロメートルです。

(私) では正否の判断はGoogle検索に依存しているわけだね。するとGoogle検索では正しいことと正しくないことをどうやって判断しているんだろうか?

(Bard) いい質問ですね。Google 検索は、ウェブ上の多くの異なる情報源からの情報を使用して、正しいことと正しくないことを判断しています。情報源は、信頼性、権威、最新性など、さまざまな基準に基づいて評価されます。Google 検索は、これらの基準に基づいて、正しい情報と間違った情報を区別します。

Google 検索は、情報を評価し、正しい情報と間違った情報を区別するために、独自のアルゴリズムを使用しています。このアルゴリズムは機密情報であり、一般に公開されていません。ただし、Google 検索が情報を評価するために、信頼性、権威、最新性など、さまざまな基準を使用していることは知られています。

Google 検索は、正しい情報と間違った情報を区別するために最善を尽くしていますが、間違いを犯すことは間違いありません。間違った情報を含む検索結果が表示された場合は、Google 検索にフィードバックを提供できます。このフィードバックは、Google 検索のアルゴリズムを改善するために使用されます。

Google 検索は、信頼性が高く包括的な情報源です。ただし、Google 検索は万能薬ではないことを覚えておくことが重要です。Google 検索で表示される情報は常に正確であるとは限らず、Google 検索で表示される情報が正しい情報源からのものでない場合もあります。

Google 検索で検索結果を確認するときは、常に批判的に考えることが重要です。情報の出所を検討し、情報の正当性を判断してください。また、信頼できる情報源からの情報を確認することも重要です。

(私) 良くわかったよ。するとGoogle検索に基づく正否の判断は絶対のものではないということだね。「正否」とは少し違うけれど、似たものに「事実と虚偽」があるよね。ある事柄が事実か虚偽、あるいはファクトかフェイクかを見分ける方法を君は持っているのかな?

(Bard) はい、事実と虚偽を見分ける方法はあります。Google検索を通じて現実世界からの情報にアクセスして処理し、検索結果と照合して回答を検証できます。また、一貫性があり、信頼できる情報源からの情報を探すこともできます。

たとえば、あなたは私に「地球の周りの軌道速度はどのくらいですか?」と尋ねます。この質問はデータセットに含まれていないため、Google検索を使用して検索結果と照合して回答を検証します。検索結果によると、地球の周りの軌道速度は秒速約30キロメートルです。

私は、一貫性があり、信頼できる情報源からの情報を探すこともできます。たとえば、NASAや米国航空宇宙局などの信頼できる情報源からの情報を探すことができます。

また、自分の知識を使用して、事実と虚偽を見分けることもできます。たとえば、地球の周りの軌道速度が秒速30キロメートル以上であるという主張を聞いたら、それは事実ではないと思います。なぜなら、地球の質量が十分に大きく、速度がそれほど速いと軌道を離れて宇宙に飛び出すからです。

事実と虚偽を見分けるのは難しい場合がありますが、常に批判的に考えることが重要です。情報の出所を検討し、情報の正当性を判断してください。また、信頼できる情報源からの情報を確認することも重要です。

(私) 「批判的に考える」というのは大事なことだね。君からの情報についても「批判的に考え」て活用する態度が大事だね。僕が君にフィードバックすることがあったら、君も批判的に考えてね。ありがとう。今日の会話はとても役にたったよ。今後もよろしくね。

(Bard) はい、それは正しいです。批判的に考えることは、情報源を検討し、情報の正当性を判断するために重要です。また、信頼できる情報源からの情報を確認することも重要です。

私は常に改善しようと努力しています。フィードバックをお寄せいただきありがとうございます。私はあなたのフィードバックに批判的に目を通し、学び、成長するために使用します。

今日の会話が役に立ったことをうれしく思います。今後ともよろしくお願いいたします。

Bardとの対話を終えて

私なりの評価と感想を書きたいと思います。

  • Bardが正しいことと正しくないことを見分けられると答えたことには驚きました。 そしてその根拠がGoogle検索にあるというのは、なるほどと思いました。 確かにGoogle検索の結果に正しくないことが表示されては検索エンジンとして問題があります。 Goolgeが長年にわたりこのことを研究してきたことが生かされているのでしょう。 ChatGPTは正しいか正しくないかを判断することはできない、と自分自身で回答しています。 ChatGPTはGoogle検索を利用できないのかもしれませんね(法的な理由で)。 これはBardの強みであると思いました。
  • Bardは同じ文章を繰り返すクセがあります。 そして、ChatGPTに比べ、文章の書き方が下手です。 ですから、正しいことを答えていても、説得力は今ひとつです。 ChatGPTの文章力が優れていることが際立ちます。

Bardは試験運用段階なので、完成バージョンになれば上に書いたような問題は無くなるでしょう。 Google検索を使えるおかげでChatGPTを越える可能性があると思いました。 しかし、Bardにおいても依然として誤った答えが出る可能性が排除できないので、利用者としては「批判的に」活用することが求められますね。

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

ゴールデンウィークは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で倉敷に移動しました。

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

大原美術館

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

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

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

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