Blog ~ no title just vibes ~

聖書、聖句関連の他、開発周りの事も書いていこうかと思います。有益な情報(リンク中心!)もたまにはあるかも。

・Theme 「開発」を表示

Androidアプリ開発

お久しぶりです。
ちょっとAndroidアプリの開発に集中してしまっていました。アプリ自体は二本目なので、大まかな開発の流れは分かっているつもりです。
とは言っても、使っているツールはMIT APP INVENTOR2というもので、
小学生がプログラミング学習に使うようなブロックを組み合わせて開発するスタイルです。
でも、侮るなかれ。拡張機能を使う事で各種センサーやBluetoothでの接続とか、私も今回使ったSQLiteというRDBの操作なんかも可能です。
そもそも、なんでこれを選んだかというと、初めてアプリを作る必要が出た時、納期が2週間弱で、新規に色々と覚える時間が無かった事。どういう訳か、私の環境では
AndroidStudioがインストールは出来ても、いろいろと不具合が発生して開発が滞ってしまうため。でした。
今回作成したアプリは、お気に入り聖句を覚えさせて何時でも閲覧できる事を目的としています。
大した機能ではないように思われるかもしれませんが、聖書個所の指定・内容の確認・保存・削除が必要となります。そのため、SQLiteを使用しました。
聖書(口語訳ですが)を全文、SQLiteに保管して、CRUD(専門用語です。Cがインサート(追加)、Rがリード(検索)、Uがアップデート(更新)、Dがデリート(削除) の意味) を実現しています。いろいろとトラブルがあり(MIT APP INVENTOR特有?)苦戦しましたが、大まかな動作は確認できました。一部で公開した後、機能追加とバグフィックス
を行っています。
もし、ご興味があればメニュー「このサイトについて」の一番下にアプリのコーナーを設けていますので、そこから画像をクリックしてダウンロード・インストールしてください。

RCJ M.M. ふくいんのなみ -2-

RCJ M.M. ふくいんのなみ勝手に過去データリンクを削除しました。
公式から怒られたとかではなく、単純に役目を終えたからです。
という事で、実は過去データへのリンクは別ページとして作成していますが、ここからはリンクを貼らないというだけです。

新旧聖書引用箇所

本日はペンテコステです。厳かに過ごしましょう。
「聖書を読む」の口語訳・旧約、新約およびASVについて、旧約から引用先情報の表示と、新約から引用元情報の表示機能を追加しました。
口語訳・旧約または口語訳・新約またはASV(英語版)を「聖書を読む」から開きます。
それぞれ引用箇所(元・先)がある場合、対象節の後ろに赤い枠のボタンが出ます。連続する複数節が対象の場合は、先頭の節の後ろになります。
このボタンを押下すると、ポップアップで対象の節と、引用(先・元)の書名・章・節が表示されます。
引用情報は多分、英語版の別聖書を元にしていると思うのですが、私の浅い知識ではなんとなくあってそうなので、まずはこの情報で実装してみました。
間違いとかありましたら、ご指摘お願いします。DBに引用情報を持たせているので(当然ですが、聖書本文とは別テーブルです。)なので修正は割と簡単にできます。
口語訳、ASVの引用情報はこれだ!っていうのがあれば、知りたいです。よろしくお願いします。

RCJ M.M. ふくいんのなみ

RCJ Media Ministry [ふくいんのなみ」とは?
RCJ Media Ministryは、日本キリスト改革派教会大会メディア伝道局の活動ブランド名です。(※RCJ Media Ministry Youtubeチャンネルから引用)「ふくいんのなみ」は日本キリスト改革派教会により運営されているWebサイトで、キリスト教の宣教活動の一環としてラジオ番組などが提供されています。
この、「ふくいんのなみ」。過去放送分がテキストと音声(またはそのどちらか)で公開されています。
先日の聖書クラス祈祷会の後、牧師からこの過去分のデータをAIで感情毎に分類・検索をしたいような話がある(みたいな)事を聞きました。そこで、今の環境で似たような事ができないかちょっとトライしてみる事にしました。
まず、今のAI(一般的に使用できるのは生成AIと言われている)はChatGPT、Google Bard、Microsoft Bing(chat機能)こんなところだと思います。これらは、基本対話形式なので、1話分の分析には使えますが10734話ある過去データをこれらで処理することは現実的ではありません。また、これらの(感情判定AIのようなものも含めて)では、感情はアクティブかネガティブかを判定することは(概ね)出来ますが、「愛情に溢れた」とか「苦しんでいる」「苦悩している」とかまでは読み取ってはくれないようです。ただ、質問の仕方、例えば「次の文章から”愛””悩み””苦しみ””楽しさ”を10段階で評価して。<評価対象の文章>」とかだと、それなりの回答は出してくれます。
ですので、対話式でなくプログラムやExcelのようなものから操作できるなら”ある程度”は使えそうです。もう一つの方法として、自前でAIを構築という方法もあるにはあります。すでに、オープンソースでAIを構築するためのツールはいくつか存在します。ChatGPTよりも効率よく使用できると謳っているものもあります。ですが、これらを判定するだけのデータ(AIの知識に相当)を用意するのは並大抵ではできません。昨日のニュースで、「富岳」(スーパーコンピュータ)で、生成AI用の大規模言語モデルを作ろうかというのがありましたが、それくらい大がかりな作業が必要です。
そこで、もっと原始的な方法で(感情ではありませんが)分類・検索できるようにしようと思います。
具体的には、まずWebにある「ふくいんのなみ」過去データをすべてダウンロードする。この時、後工程が楽になるようにちょっとだけ編集しておきます。
それを特定の語句で分類するのですが、この語句の選定にChatGPTを使いました。それと、その語句を連想する別の語句もChatGPTを使って選定しました。
今回は試験的な作業なので、前者を30語、後者を前者に対して20語づつ用意し、それがタイトルと文章に含まれる割合で評価しています。(おおざっぱですが)
結果の評価は使った方にお任せしましが、もう少し語句を増やすことで多少は使えるものになるのかなと思います。後は、Google BardがGoogleスプレッドシートで使えるようになるまでガマンかな。プロジェクト自体はあるようなので、期待です。

読み上げ機能

明日から「聖書を読む」にて表示中の章を読み上げる機能を追加しました。
各言語(口語訳・日本語、英語、ギリシャ語、ヘブライ語)で、音声が流れるように組んでみました。が、これは環境(OS等)やブラウザによって動作が異なるようです。
因みに、Edge(私のメインブラウザ。最近乗り換えました。)では日本語(ちょっと変)と英語(割と流暢)とヘブライ語(一応ちゃんと喋っているよう)はOK。ギリシャ語はダメ。
Chromeでは日本語、英語のみ。iPhoneは、全言語一応発声してくれます。
日本語、英語は自分でも確認できました。ヘブライ語はPCから出力された音声をiPhoneのグーグル翻訳で広い、日本語に翻訳することで確認しました。それっぽい訳になっていたので概ねOKかなと思います。
ギリシャ語に関しては、iPhoneでしか発声できてないので確認できていません。分かる人いたら教えてください。なんか「オミクロン、オミクロン・・・」とかって言ってるようで不安。
技術的にはまったく何にも難しい事は無くて、JavascriptのSpeechSynthesisUtteranceクラスを使っているだけです。
参考までに、今回使った言語コードは、日本語:ja-JP、英語:en-US、ギリシャ語:el-GR、ヘブライ語:he-IL です。探せば出てくるのですが、ちょっと面倒だったのでここに載せておきます。
それと、各国語毎に声が違うのはそれぞれの標準音声をそのまま使っているからです。日本語だけやけに機械っぽいのは、それだけマイナー扱いだって事だと思います。

文字の大きさ

「聖書検索/比較」や「聖書を読む」の文字が小さい(特にスマホ)ので、自分でも見辛いと思っていました。
ただ、文字を大きくすると収まりが悪いのと見通しが効かないので、見える人には使いづらい。
で、文字を大きさを変えられる機能を追加しようかと思ったのですが、ブラウザの方が上手に出来るので、その仕方をここに書いてお茶を濁そうと思います。

1.Windowsの場合(ChromeとEdgeで確認。最近、ChromeからEdgeに乗り換えました。)
  Ctrlキーを押しながら、マウスのホイールをぐりぐりする。
  これで拡大・縮小が出来ます。
2.Safari(iPhoneの標準ブラウザ)(Macは持っていないので・・・)
  画面下のURLが表示されている左。あを押すと、設定画面が表示されます。
  「 100% あ」(%表示の所は実際の倍率で変わります)の左右の「あ」を押下することで拡大・縮小できます。
3.Chrome(iPhone版、たぶんAndroidでも同じような感じだと思います)
  画面下の「・・・」を押下します。表示されたメニューの「テキストを拡大...」を押下します。すると、画面の上部に「リセット  ー +  完了」が表示されるので、そこの「ー+」で拡大・縮小が行えます。
  ただし、Chromeの場合は今の表示内容に対してだけ有効なので、例えば表示ボタンを押したりすると100%(等倍)に戻ります。

こんな感じです。スマホとかだとピンチ(二本の指でぴろーんて開くやつ)操作でも拡大・縮小できますが、その場合画面イメージが拡大されるのでスクロールしないと全体が見えません。上記の方法の場合、文字だけが大きくなるので画面の端でちゃんと折り返されるため、見やすいと思います。
  

日本キリスト教改革派坂戸教会のイベント

日本キリスト教改革派坂戸教会のイベントページを追加しました。
ついでに、坂戸教会の最新Youtube動画のリンクも、「祈りについて」から「日本キリスト教改革派坂戸教会」に移動しました。
イベントリストは、Googleカレンダーに登録したものをそのまま(Googleカレンダーのまま)張り付けた格好になります。
これで良いかはしばらく運用してみて判断しようと思いますが、基本的に見られてないので問題なしと思っています。

ChatGPT

ChatGPTを遅ればせながら使ってみました。下が使用例となります。

問.聖書で友達が必要だと記載されている箇所を教えて
回答.聖書には、友達が必要であるという考え方が記されている箇所がいくつかあります。以下に、その一例を挙げます。

「ひとりでいる者は、落ち込んでいる時に、誰が自分を励ますことができようか」(聖書, コヘレトの言葉 4:10)
この箇所では、ひとりでいることの孤独や寂しさを語り、友達の大切さを強調しています。

「良き友は、生命を潤し、あやまちを許す者は、油を注ぐ者のようだ。」(聖書, 箴言 9:9)
この箇所では、良い友達が生命を潤す存在であり、時には相手を許すことで、人生において必要な支援を与える存在であることを表現しています。

「互いに担い合い、こうして、キリストの律法を実行しなさい。」(聖書, ガラテヤの信徒への手紙 6:2)
この箇所では、互いに支え合うことが、キリストの律法を実行するために必要であると述べられています。

これらの箇所から、聖書において友達の存在が大切であると考えられていることがうかがえます。


こんな感じで答えが返ってきます。この機能を、このサイトにも取り込もうと思いChatGPTに「RubyOnRailsからChatGPTを呼び出すにどうしたらいいか教えて」と質問したところ、これも結構まともな回答が帰ってきます。100%正解ではありませんが概ね正解で、多少間違っている所でもそれをヒントに簡単に調べられました。結果、機能は取り込みませんでした。
何故かというと、この機能を取り込んで使用する場合は有料になるから(無料枠もありますが)です。残念。という事で、オープンソースのChatGPT互換プログラムに期待です。ただし、ChatGPTのサイトから普通に使用する分には無料ですので、聖書の事とか調べるには良いツールだと思います。裏どりは自己責任にはなりますが。

これ以前の日付のBlog

3月2日付のBlog記事にも書いていますが、どうもDB関連でトラブルが発生したためBlogの内容
がすべてなくなってしまいました。幸い、一部の記事は下書きがテキストファイルに残っていたので、これを
元に3月2日以前の記事を復元しています。ですので、一部内容が異なったり、無くなっている記事もあ
ります。(覚えている範囲では、レントについての記事が無い)
Blogの記事はPostgresqlというフリーのRDBシステムにBlog記事用のテーブルを作成して、そこに追加
することで画面に表示されるようにしています。
これをする事のメリットとしては、「一々Blog記事の為にプログラムの修正をしなくて済む」です。
テーブルへの新規追加画面(非公開)で、Blog記事を書いて登録すれば登録した時の日付、Theme
で索引を作成、記事内容と共に画面表示できるようになっています。
このあたりの処理は、3月2日の記事にあるように主にcontrol側でDB内容から索引情報の取り出し、
表示記事の取込み等を行い、view側でそれを表示するように定義しているだけです。
初めてBlog的なアプリというかページを作ってみて、Rails(というよりBootstrap?)いいなぁと思っております。
簡単に出来るなぁと。Javascriptの不要だし。
という事で、私は大した仕事をしていないのに出来ちゃった感じです。興味のある方はBootstrap Blogサンプル
を見てください。ブラウザ(ChromeとかEdgeとか)で、ソースを表示させればview側の対応は大体わかると思います。

fly.io Ruby On Rails

3/1に突然Postgresqlへの接続に失敗するようになりました。どうやっても復旧できず、結局このアプリ(アプリ本体・DBそれぞれ)を削除。
再構成することで何とかアプリは復元出来ました。が、DB(Postgresql)に登録しているブログの内容を喪失することになりました
因みに、このアプリでは口語訳・英語・ギリシャ語・ヘブル語の聖書と翻訳文をDBに登録しています。これを rake db:seed というコマンドで一気に登録するとプロセスがKillされます。なので、seed.rbを2分割から3分割してデプロイして、その度に rake db:seed を行いました。DBを多重化するなどの対応が必要かもしれません。

db:seedの実行方法
デプロイした先にログインするためには、fly.ioが提供してくれているコマンドを使う必要があります。
 flyctl auth login <--- fly.io自体へのログイン。
 flyctl launch <--- fly.ioへデプロイするための準備を行う。
 fly deploy <--- fly.ioへデプロイする。
 fly ssh console <--- fly.ioのコンソール(Windowsのコマンドプロンプトみないな感じ)の呼出し。これでVM(仮想環境)に入って rake db:seed 等を行う。
VMはLinuxなので、コンソールに入ったらlsやfind等を使ってアプリの登録先を見つけて、そこに移動。私の場合、2つのアプリをfly.ioで運用しているのですが、片方が appフォルダ もう片方が railsフォルダ に登録されていました。
 find . -name rake -print
これで、rakeが登録されているフォルダが分かります(自分の場合だと、app/bin/rake とか rails/bin/rake。登録先は app や rails と判明する。例では app とする)。
 cd app
 bin/rake db:seed
で、DBへの初期データの登録が行えます。

About

このブログもRuby On Railsで作っています。装丁はBootstrapのTemplateをほぼそのまま使わせていただきました。