2023-12-12

obs-backgroundremoval:OBSで背景削除する

 動画作成にOBSをよく使っているんですが、自分のカメラ映像の背景を消すために、今までXSplit Vcamを利用してました。有料なんですが使い勝手が良かったので重宝してました。。。が、MacでSonomaになってから仮想カメラとして認識してくれなくなり、どうもいろいろ設定を変えたらとか書いてあるのですが面倒な雰囲気。アプリのバージョンアップで対応する気配も今のところないので、さてどうしたものかと思ったら、良いOBSのプラグインを見つけました。

インストールするだけでOBSのフィルターに出てきます。OBSユーザはオススメです。

なお、XSplitの不具合はMaだけでWindowsなら問題なしです。



2023-10-24

GAS: Google Classroomの受講生のメールアドレスを取得する

Pythonのサンプルは既に挙げていますが、GAS版も。。やっぱりこちらのほうがコードもスッキリします。



2023-10-16

Python: GoogleのAuth認証の仕組みを理解する

すぐ忘れてしまうのでメモ書き。Googleのサービスにアクセスする際には、次の手順が必要です。なお、本記事は、GoogleClassroomAPI を利用する過程での処理なので、適時読み替えてください。

Google Cloud コンソールの設定と認証ファイルの作成
まずは、Google Cloudコンソールで、GoogleClassroomAPIを使えるようにしないといけません。詳細の手続きは、公式サイトを参照してください。ここで、大切なのは

  • Google Cloudプロジェクトを作成しておく(以下、全てこのプロジェクト内での操作になります)
  • Google Classroom API を有効にする(利用したいAPIをONにしましょう。細かな権限設定もできます)
  • 「APIとサービス」のところで認証情報に移動し、認証ファイルを作成しダウンロード
Google クライアントPythonライブラリのインストール
先程の公式サイトに書いてあるので、pip でインストールしましょう。

サンプルコードの実行
下記は、公式サイトの一部を抜粋したものです。ここで理解しておくべきことは、認証ファイルとトークンファイルについてです。
  • 認証ファイルは上記でダウンロードしたファイルです。コード内のcredentials.jsonに相当します
  • トークンファイルは、このコードを実行することで生成されるファイルです。このコードを実行するとブラウザが立ち上がり、認証を求められます。認証を済ませると、token.jsonファイルが作成されます。このトークンファイルは古くなると使えなくなるので定期的に消して書き換えることになるのだと思います
注意点
トークンファイル(token.json)は、スコープに関係しています。Google Cloud コンソールにてプロジェクトで扱えるスコープを設定したと思いますが、クライアント側(コード内)でも指定しないといけません。それが、コード内でのSCOPES変数に相当します。下記のサンプルでは、1つだけ指定してますが、配列として複数指定することは可能です。ここに書いたSCOPESに対応したトークンファイルが出来上がることになります。ですので、SCOPESを変更するときは、トークンファイルを消して再度生成し直してください。



2023-10-01

GAS:GoogleシートのデータからGoogleフォーム(選択肢問題)を生成する

 講義で選択肢問題を準備する機会が増えてきたので作ってみました。GASです。Googleシートに

  • 問題文
  • 正解選択肢文字
  • 得点
  • 選択肢‥
というならびでシートに作成しておき、下記のGASを動かせば作成できます。注意点は、このサンプルでは、正解選択肢の設定に、正解選択肢文字列との比較を用いていることです。補足すると、このケースでは、選択肢として「アイウエ」という選択肢ラベルのみを用意しています。(アイウエが何を表しているのは問題別紙に書いているということです)

ですので、もし選択肢を単なるアイウエではなく、文字列にしたいなら、2列目は世界選択肢文字ではなく、正解選択肢が何番目なのかを記述して、コードも修正したほうがいいです。(機会があれば、そのバージョンも用意します)



2023-09-30

ColaboratoryにMecabを入れる初期設定

 表題の件。ChatGPTに聞いたら古い回答?(動かない回答)が返ってきたため、メモ書きです。

(参考)
http://int-info.com/index.php/google_collab_mecab/

2023-08-08

Wordでの画像の貼り付ける際の注意事項

表題の件、おちラボルールですが、参考になるかもしれないので掲載します。

図はペイント系では作成しない

  • 後から修正することを考えると、ペイント系は使わず、パワーポイントとかDrow.IOみたいなツールを使うこと。
  • Drow.IOについては、Google Driveとの連動の他に、デスクトップアプリもありオススメです。図の作成に特化したアプリなので、サンプルも豊富のようです。 ただし、Wordへの画像貼り付けが苦手です。PNG等の画像にして貼り付けると確実に画像が劣化します。おすすめは、PDF→emf(拡張メタファイル)と変換してからWordに貼り付けることです。pdfをemfに変換するには Inkscape がオススメです。

図の作成方法

  • 図中の文字は読めるような大きさになるよう工夫する
  • ネットからとってきた他人の画像は利用しない。
  • スライド発表も視野に入れると、オリジナルはカラーで作成しておくのが良い。
  • 原稿(論文)がカラー図がOKかどうかは執筆要綱を確認する。グレースケールの場合、Word上で貼り付ける図をグレースケールに変更する。Word の中で図を右クリック。そこのプロパティで、 図の書式設定 → 図 →色の変更 → グレースケール でOKです。
  • 図のサイズは、原稿(論文)に貼り付けることを想定して、左右に無駄な空白ができないようにサイズは可能な限り横長にする。ただし、グラフなどはその限りではない。
  • 横長にしたいからといって縦や横の比を片方(横方向)だけ変えて、無理やり横長にしない。元の図の作成段階から縦横比を考えること
図の貼り付け
  • キレイに貼り付けることが大前提。
  • Wordにそのまま画像をペーストしない(「形式を選択して貼りつけ」を選択して、 形式をいろいろ試す)。拡張メタファイルが綺麗かもしれない。
  • Wordで原稿を書いている場合は「画像の圧縮」を無効にする. [オプション] [詳細設定] [イメージのサイズと画質] →画像の圧縮を無効にするをクリック
  • ワードに貼りつけた図の大きさを変更する場合、縦横比が変わらないように注意する。
図の挿入位置

  • 図は文章の途中にはできるだけ入れない
  • ページ最下部(最上位)の位置はOK ・章や節の最後につけるのもOK





2023-07-05

Word:図形を挿入した際に文字がズレてしまう問題の解決方法

 表題の通り、Wordの文書中にマルとかの図形を重ねておこうとしたとき、前面に配置したのにも関わらず、図形に合わせて後ろの文字がズレたりすることがあります。これは、

  • レイアウト→その他のレイアウトオプション→「アンカーを段落に固定する」を有効
で、解決します。



2023-07-02

python: unicodeescape' codec can't decode bytes が出た場合の対処法(Windows)

WindowsでPythonで読み込みファイルのパス指定をした時に、表題のエラーがでることがあります。 これは、ファイルのパスを指定する際に、Windowsでディレクトリ名の区切りをしめす「¥(バックスラッシュ)」がエスケープ文字という規定された文字になっているからです。「\」をなぜバックスラッシュと読むのかというと、"¥"は"\"(実際は半角文字)に対応するからです。

解決策

3つあります

  • "/"(スラッシュ)に置き換える
  • "\\"と連続して書く
  • r"バックスラッシュのパス名"と書いてRAW文字扱いする
のどれかですね。ちなみにMacだと"/"(スラッシュ)がOSのパス指定で使われるので問題ありません。






2023-06-29

OBSで映像キャプチャデバイスが設定できない場合の対処法

 表題の通り、設定できないというか真っ白になって固まるという症状が起きたので、その解決メモ書き。結論から書くと、

  • 管理者権限で起動してみる
  • (上記でもだめなら)NVIDIAのドライバが悪さをしているので、522.25 または 517.48までダウングレードする
というのを試してみてください。私は後者で治りました。半年くらい前に同じ理由で固まってしまったのにそれを忘れて、調子に乗ってドライバのアップデートをしたのが敗因でした。つーか、いい加減このバグ直してほしいね。どっちの原因なんだ?




2023-06-27

MacでBluetoothマウスの調子が悪くなった場合の対処法

 表題の通り、MacにBluetooth接続しているマウスの動きが悪くなった場合は、

  • /Library/Preferences/com.apple.Bluetooth.plist を削除し、再起動

で解決することがあります。お試しあれ。



2023-06-19

ChatGPT: 調整さんへ入力する日付を書いてもらう

スケジュール調整に「調整さん」を利用することはよくありますが、日程を入れるのが面倒なときがあります。こういう面倒な作業は、ChatGPTにやらせましょう 

プロンプト例)

6月26日から7月1日の間で、日付(曜日)時間という日時フォーマットで文字列を出力してください。1行に1つの日時とします。時間帯は、17時から19時までの時間で30分ごとに用意してください。曜日は2023年のカレンダーに従ってください。また時間帯の後ろに「~」という文字を追加してください。

出力

6月26日(月曜日)17:00~
6月26日(月曜日)17:30~
6月26日(月曜日)18:00~
6月26日(月曜日)18:30~
6月26日(月曜日)19:00~
6月27日(火曜日)17:00~
6月27日(火曜日)17:30~
6月27日(火曜日)18:00~
6月27日(火曜日)18:30~
6月27日(火曜日)19:00~
6月28日(水曜日)17:00~
6月28日(水曜日)17:30~
  (以下、略)



2023-06-14

GAS: GoogleSheet上の画像にスクリプトを動的に割り当てる(複数の画像を配置した場合)

以下の過去記事に質問コメントがあったのでその回答記事になります。

画像を複数用意した場合に、それぞれに異なるメソッドを割りあてる方法についてです。代替テキストを利用したら良いということを書きましたが、具体例を以下に書きます。

今回のお題

  • 以下のように、シートに2つの画像を用意します
  • それぞれの画像をクリックすると、「モモだよ」「りすだよ」と表示します。







代替テキストを割り当てる

今回はタイトルに書いてみました。それぞれに、「momo」「risu」と書きました。








実装コード

下記のようになります。ポイントとしては、イメージを取ってきて、getAltTextTitleで画像のタイトルを取り出し、確認してメソッドを登録しているところになります。なお、assignScriptsToImages()を実行しないと、メソッドは登録されませんので、このメソッドをいつ呼び出すかについては、AppScriptのトリガーでシートの起動時にこのメソッドを呼び出すようにするのは一つの手でしょう。




2023-06-12

Flaskでウェブサーバーを公開する際の注意点(app.run編)

 Flaskはそのフレームワーク自体がウェブサーバーの機能を持っているので、プログラムを実行するだけで、ウェブアプリとして公開されるという利点があります。しかし、他のマシンからWebアプリとして公開するには、app.runの記述に注意が必要です。

設定すべき項目

下記のように、runメソッドを実行するときに、host='0.0.0.0'を設定する必要があります。この設定をしないと、localhost以外からのアクセスできません。

  • app.run(host='0.0.0.0', port=5050)

なお、上記のように実行時の環境情報をコード内にハードコーディングするのはあまり望ましい形ではありません。Flask-DotEnvというライブラリを利用することで、実行時の環境変数をアプリごとに設定できるようですので、それもありのようです。




2023-06-06

Windowsドメインアカウントで、VS Code Remote DevelopementのSSHログインする方法

表題の件、ちょっとハマったのでメモ書き。

前提条件

おちラボでは、Windowsドメイン(Active Directory)で、ラボのPCアカウント管理をしています。ターミナルなどでこのアカウントを利用してWindowsの計算サーバーにSSHアクセスするには、

  • ochilab¥ユーザ名(例、ochilab¥ochi)

というアカウント名でログインすることになります(まあこれはわかる話)。

ドメイン表記が無視される?

ところがVSCodeのRemote DevelopmentでSSHしようとした時に、SSH ConfigのファイルのUserの項目を上記の書き方をしたら、¥以前のところが無視されることが判明。

具体的にいうと、「ochilab¥ユーザ名」のアカウントでSSHアクセスしたいのに、ドメインのところが消えちゃうので、ログインアカウントが「ユーザ名」だけになり、ローカルユーザでSSHログインを試みてしまうわけです。

¥のところをバックスラッシュにしたり、続けて複数回書いたり、ログイン名をクォーテーションで囲んだり、、といろいろ試行錯誤するもダメ!

で、結論として、ドメイン名をユーザ名の前の書くのではなく、

  • ユーザー名@ドメイン名

のように、ユーザ名の後に@で続けて書くのが正解です。でもこんなことしちゃうと、ログインアクセスが、

  • ユーザ名@ドメイン名@サーバー名

みたいに@が2つになってしまい、大丈夫なのかと思いますが、どうやらOKなようです。



2023-06-04

Windows11でSSHサーバーを立ち上げる方法

Windows11でSSHサーバを立ち上げる方法は、思いのほか簡単です。

  1. 【設定】→【アプリ】→【オプション機能】→【機能を表示】へ移動
  2. OpenSSHサーバーにチェックを入れ、【次へ】→【インストール】

以上です。なお、sshはポート22番を使います。上記の作業を行ったにも関わらずアクセスできない場合は、ファイヤーウォール(Windows Deffender)が悪さをしてます。22番ポート開けるようにWindows Deffenderの設定しましょう。





2023-06-02

Kinect: PykinectAzureで骨格情報を取得する

 近年の画像AI技術が発展により、Kinectとかあまり注目されなくなりましたが、おちラボではデプスカメラとしての性能の良さなどに魅力を感じていることから、懲りずに使ってます。

といっても久しぶりな面もあり、最近流行りのPythonでも利用できることから、数あるライブラリの中で、

というのが使いやすそうです。で、sampleがいくつかあるのですが、骨格情報を取得するsampleがなぜか見当たらなかったので、以下に掲載します。まあ確かにC#やるよりはラクですね。OpenCVに対応するために画像変換もさほど気にしなくて良さそうですし。。



2023-05-24

chatgpt: 12桁の16進数表記で記述されたMacアドレスをコロン区切りに変換する

 表題のような案件があったので、ChatGPTにやらせてみました。下記の命令につづけてデータを渡せばOKです。

  • 以下のデータはMACアドレスを表しています。:で区切りたいので変換してください。
ハイフンで区切りたいことは、:のところを-にすればいいでしょう。



2023-05-22

UIFLow: 'module' object has no attribute 'wlan_sta'が出たときの対処法

UIFLowでm5stack(core2)でWi-Fi接続しようとしたとき、表題の通り

  •  'module' object has no attribute 'wlan_sta'
というエラーがでることがあります。この場合、プログラムには問題はなく、m5stack本体を再起動してみましょう。それで解決します。本体起動後からの実行のタイミングでWireless Lanのモジュールを読みそこねているのだと思います。





2023-05-17

Python:リダイレクトされるURLに対応したhttpリクエスト(urllib.requestを利用)

リダイレクトされるURLにアクセスするためのPythonコード。

  • 標準のhttp.clientでは、リダイレクトに対応できない
  • urllibは標準ライブラリに含まれる


2023-04-27

GAS: GoogleSheetの特定の列のデータを探して、その行のデータを返す

表題の通り、 GoogleSheetの特定の列のデータを探して、その行のデータを返すGASのコードです。やってることは泥臭く、検索対象の列を配列に格納しておいて、それを線形検索して見つけた位置の行をとってきているだけです。この例では、取ってくる列を指定していますが、行ごととってきて配列に入れるというのがスマートかもしれませんね。



2023-04-26

UIFLowを利用されるネットワークポート

 UIFLowを職場のネットワークを介して利用しようとすると、どうもうまくいかない。どうやら、一般的に開放されているのとは異なるポートが使われているようだ。で、いろいろ調べてもらって、

  • アクセス先はm5stack.com
  • ポートは1883

のようです。



2023-03-18

2022年度卒業生を送り出して

 


2022年度の卒業式を迎え、学部生7名(うち大学院内部進学者が1名、外部大学院進学者1名)が巣立ちました。ゼミ生の中で阿南くんが学部長賞が授与されました。おめでとうございます。

長引くコロナ禍の中、電気電子の学生で最後に指導するゼミ生ということで、有終の美を飾りたいところでしたが、正直、指導に苦労した世代だと感じています。対面でのゼミ指導についてはほぼ制約がなくなったということで、私自身、オンライン指導の利便性と対面指導の必要性のバランスについて模索していたというのもありますが、、、

コロナ禍の影響なのかわかりませんが、卒研やゼミにリアリティを感じていなかったのかもしれません。暖簾に腕押し、、というか、心も身体もここ(ラボ)にあらず、、という感じだった気がします。

今後、皆さんは社会に出て、様々な場面で自分たちの能力を発揮していくことになります。人生では、自己判断することが大切だとされていますが、仕事においては必ずしもそうではありません。仕事をしていく中で、うまくいかない事態に直面することは多々あるでしょう。仕事は卒研とは異なり、個人の問題ではありません。その成果のデキは会社全体に関わってきます。だからといって良い結果を出すことだけを求めて、虚偽や不正をしてはいけません。偽りの成果が蔓延る世の中は、皆が不幸な社会になるだけです。

無知であることを認め、否定されることを恐れず、上司や先輩に相談するよう心がけてください。なにより若いうちの自己判断は、間違ったことをしている可能性があることを意識してください。

卒研の経験を活かし、今後の皆さんのこれからの人生が、良い方向に向かうことを祈っています。



2023-01-25

実験群と対照群(統制群)

開発したシステムの有用性を示すために評価実験をする必要がありますが、実験群と対照群(統制群)は、評価において重要な概念です。

  • 実験群は、研究で行う操作や処置を受けるグループ
  • 対照群(統制群)は、研究で行う操作や処置を受けないグループ

実験群と対照群(統制群)を比較することで、研究の対象となっている処置や操作がどの程度の影響を与えるのかを検証することができます。例えば、ある教育システムが学習成績を向上させるかを研究する場合、実験群は教育システムを利用するグループ、対照群(統制群)は利用しないグループとすることで、教育システムが学習成績にどの程度の影響を与えるのかを検証することができます。



2023-01-21

Gmail、Google Driveのコンテンツを別のアカウントへコピー(移行)する

諸事情で新しいWorkspaceのアカウントを使用することになり、今までのアカウントのメールとかデータとかをどうすべきかと思っていたのですが、いつのまにか公式のデータコピー機能が実装されていたようで、今更ながら試してみました。この機能はWorkspaceの管理者がこの機能を有効にしていないと使えませんので注意してください。なお、コピーできるデータは、表題の通りで、
・Gmail
・Google Driveのデータ
だけです。

手順
詳細は、下記の公式のサポートページを見てもらえてばいいんですが、Workspace for Educationのアカウントだと使えるようです。(一般のGmailアカウントでは無理でした)。手順を簡単にいうと、下記の図のような画面がで、
  1. アカウント→コンテンツ移行ページへアクセス
  2. 移行先のGmailアカウントを入力
  3. 移行先のメールにコードが送られてくるのでそれを受け取って入力
  4. コピーするコンテンツを選択して送信
と驚くほど簡単です。


補足と注意点
(1)各メールにはラベルが付きます
移行してきたメールには、元のラベルとともに、移行したというのがわかるようなラベル(移行処理を開始した日付付き)が付きます。ですので、古いアカウントの区別は容易です。
(2)移行には時間がかかる
移行が始まるとメールが届きます。1週間ぐらいかかることがありますという注意書きが書いてます。ですので、移行のタイミングは余裕を持っておきましょう。なお、私の場合はメールについては5年分で1万通ほどありますが、2日もあれば終わる感じです(執筆段階ではまだ移行未完了で、あくまでも予測です)。ただ、ドライブのデータも考慮すると
(3)メール受信通知に注意
iOSの話になりますが、移行を開始してからスマホでメールの新着通知が頻繁にでるようになります。どうやら、メールがコピーされるたびに受信側は新着メールが来たような挙動をするようです。とりあえずスマホでのみこの挙動を確認しており、デスクトップ(Web版)では特に通知はありません。もしかすると、デスクトップでなにかのメールクライアントで受信している場合も通知がでるかもしれません。その場合は厄介ですね。