メモ

技術寄りの事を書く

Dockerfile作る途中,apt-get install -y redis だとRedisは最新バージョンはインストールされない(かもしれない)

表題の通りです.ちょっと注意しましょう. redisをローカルで使ってて,配布の環境を作る際にDockerfile作る途中でちょっと(詰まった程でもないけど)ん?ってなりました. 少なくともpython 3.9.16 slim buster だと5.0.xがインストールされるっぽいです.(3.11系とか最新のだと違うのかな.あんま無責任なことは言えませんが)

対処法としてはシンプルにredisのホームページから最新版を引っ張ってきてインストールする(2023年3月7日現在7.0.9が最新版).

RUN apt-get update \
    && apt-get install -y curl build-essential  \
    && curl -O http://download.redis.io/releases/redis-7.0.9.tar.gz \
    && tar xvzf redis-7.0.9.tar.gz \
    && cd redis-7.0.9 \
    && make \
    && make install \
    && cd .. \
    && rm -rf redis-7.0.9 redis-7.0.9.tar.gz

はい.

論文誌,出た

情報処理学会の論文誌出ました.ニヤリ.
卒研として行った研究が1本国際学会のショートペーパーにアクセプトされてたんですが(フルぺには日程間に合わず,,,挑戦しときたかったと今も悔やんでいる),
それでは説明しきれなかった追加実験とか予備実験の詳細について追記したものです.1年間通して(実質稼働は3ヶ月?くらい?だけど)やってきたものなので嬉しい反面,卒研の指導教員の先生や先輩との共同作業が終わるのは寂しい気持ちもあります.

ipsj.ixsq.nii.ac.jp

Azure SDK for Python / Azure Docsにプルリクとイシューを出した

Azure SDKを使って開発する機会がありました.ベータ版でしか出ておらず,ソースコードをいじりながらAzure APIを叩く機会があり,SDKの中身が徐々にわかったのと,Azure SDKオープンソースで開発されているのとでせっかくならと気づいた改善点やちょっとした修正をプルリクしてみました.過去にはhuggingface利用してた時にM1chip対応じゃないライブラリにイシュー出したりしたくらいで,自分で何かがっつりコード提供しようとしたのは初です.まあ,面白かったかも.マージされればアツイ.

1つ目のプルリクはこれ

github.com

こちらはAzure SDKの中でもText Analyticsというクライアント側用のライブラリになっていて,いくつかの機能についてサンプルコードが書かれています.5.2.0から5.3.0-beta.1になるに従い何個か機能が追加されたりするようで,まだ全部が全部動くコードではないっぽいです(2023年2月現在はSummarization系のサンプルコードに載ってるbegin_abstract_summaryやbegin_extract_summaryメソッドはない.)
個々の機能についてのサンプルコードは5.3.0-beta.1に向けて整備されているようなのですが,それらの機能のラッパー関数のMultiple Analysisなる機能についてのサンプルコードが無かったので書きました.Web上のSDKの仕様(クラス定義やメンバ関数など)をみながらコードを書くのはそこまで難しくはないのですが,デバッグのためにAzureでProject→データ→モデルの学習→デプロイを行うのが億劫でした.データに文字化けした文字が入ってたりしてたので,それをMicrosoftに報告したりとかデータクリーニングしたりとかに時間を食われた気がします.後から見たらAzure SDK for PythonオープンソースだけどMicrosoftの社員さん以外あんまりプルリクはしてなさそうなので,大丈夫かな.頑張って書いたし通ればいいな〜.レビューとか返事は絶対欲しい...!!!

2つ目のプルリクはこれ

github.com

こっちは単純にREADME.mdの表記揺れが気になったのでついでに修正したのみです.

イシューはこれ

github.com

で,ドキュメント上のサンプルコードに不備があるよーとか指摘したものです.

(2023/02/09追記) 2個目のプルリクがマージされました!

2個目のプルリクMergeされた〜

あと,味を占めてAzure Docsにも気づいたイシュー投げときました(こっちは開発が盛んじゃなさそうだから反映はされなさそうな気がするが...)

github.com

Unityで手動でC#用のパッケージ更新を行う(例:NuGetForUnityでベータ版のパッケージをインストールしたい時)

Unityで手動でパッケージ更新を行う方法について書きます. この動画を参考にしてます.

www.youtube.com

基本はUnityでC#スクリプト用のPackageを管理するときはNuGetForUnityを使えばいいのですが,こいつ,Stable版の最新バージョンしかDLしたりupdateしてくれません(2023年2月現在).beta版にしかない機能を使いたいのに...という時に手動でパッケージ更新する方法を記します.

NuGetforUnityで対象のパッケージのバージョンを確認.updateタブの欄を見てもベータ版の情報は出てこない(自動的にStableなバージョンの最新版しか管理しないっぽい)

まずはNuGet Galleryを訪ねます.

NuGetのWebページ

希望のアプデ先パッケージをDLします.

左のバージョンクリックでバージョン切り替え,右のDownload Packageでパッケージダウンロード

次に,DLしたファイルに着目.
.nupkg拡張子をzip拡張子に変えます.

.nupkg(上)を.zip(下)のようにに変える

zipファイルを展開します.するとまあ不思議,dllとxmlが入っているではありませんか(当たり前)

zipファイルを展開すると,lib/netstandard2.0の中にdllとxmlが入っている.WebからパッケージをDLした場合余計なファイルもあるけど,まああっても動くのでOK(?)

よって,このディレクトリをPackage以下に配置すればOK.

パッケージ直下に置く(metaファイルはUnityエディタをそのあといじってると勝手に生成される)

確認してみる.

うん,5.3.0-beta.1にアップデートされている

その後,おそらく依存関係のエラーが発生してるので,それをよしなに解決していく.

他のパッケージとの競合が起こった場合はNuGetForUnityのパッケージをアプデしたりして解決する

UnityでNuGetパッケージのインストールをしてもCannot resolve symbolsになる時

だいぶ初歩的なところですが普通に詰まってました.
敗因:Unityのビルドの仕組みがあまり分かってなかった.

状況としては,Unityプロジェクトでオブジェクトの属性としてC#のプログラムをつけてプログラムをいじってた時.Unity+Riderで開発していたのですが,Rider上のNuGetでパッケージをインストールしてもパッケージがResolveされない問題が起こりました(下図参照)

NetMQパッケージをインストールしたはずなのにresolveされてない??

原因としては単純で,Unity Editorでビルドする時にはRiderの設定で指定してるパッケージディレクトリのパッケージは読まれない(考えてみれば当然.UnityもRiderも初心者だから問題の細分化がしずらく手間取ってしまった) UnityでC#をいじる時にRiderを読み出しても,あくまでRiderのエディタ部分のみ使うということです.ビルドツールとしては考えない.

なので,解決策としてはUnity用のパッケージマネージャ(NuGetForUnity)を入れてそこからパッケージをインストールする.

NetMQ,Riderでインストールしたはずなのに入ってない扱いになってる

上手くいくとPackage以下にパッケージが入っているはず

Rider上でもPackage solvedになっている

Assets/Package以下にdllが入ってる

<感想>
Unityのどのディレクトリにどういうファイルが入るか,ビルドした時にどう動くかなど,もっと知りたい(入門書読んでもXYZ軸がどうとか大したこと書いてないのが多い...困ってる).

<余談>
自分が一番最初に想像してたイメージとしては,以下の図の下2つのような感じ.Unity EditorからRider読み出してるから,良しなにパッケージ管理のパスもUnityのビルド用に変更してくれてたりとか,C#のビルドまではRiderの方でやってたりとかするのかなと思ってた. 上の正解のイメージ(NuGetで入れたパッケージのパスをUnityビルド時には参照してない)なのかなと思った後も,NuGet公式にはサードパーティ製のNuGetForUnityの情報など載ってないので,NuGetで入れたパッケージからdllを取り出してUnityプロジェクトの色んなディレクトリに入れてみたりしていた(Unityのビルド時にリンクしてくれるディレクトリを探したりしてた).

上が正解のイメージ.下2つが想像してたイメージ.

CHI2023 LBWの査読しました

LBWの査読した感想を書きます.

  • ACの力が強い.4人を納得させるゲームではなくてAC(そこそこ詳しい人)にストレスなく論文を読ませ,納得させるのが第一目標.
    • CHIフルペーパーの時も,R2, 3あんま読んでなくない…?ってなってたけど,確かに.ACからの機縁でR2, 3に査読依頼が来るからダイレクトにACMから来てない分R2, 3は責任感が薄い可能性があるしPassing Knowledgeになりやすそう.
    • あと彼らの意見は普段会うACに左右されている事もありうる.
  • まず前提として読むのがだるい→アブストやイントロや図や表をまず見る.アブストイントロでどういう研究か分かる+右肩上がりの折れ線グラフとか,たくさん手法比較したのが分かる表とか,実験人数と結果を見て大体Overall決定する→実験が変じゃないかとか見る
    • イントロはパラグラフリーディングされてるかもなので,大枠はテンプレの流れごとの段落にする
      • 次書くときに参考にする
  • CHIの査読,こんな末端研究者にも話が回ってくる時点で質としてはいいのか...?と思った. LBWだからいいか.
  • レビューの書き方は大体以下かなと思う:
This system presents....

Overall, ~~~ (全体の感想)

However, the paper also has the following shortcomings (or unclear points):
1.
2.
...

Overall, ~~~ (大体褒めてから,上記の理由で自分の決定をこうしましたって書く)

普段論文読む時の順番とかで薄々論文どう評価されるかは分かってはいたけど,実感持てたりしたのが良かった.どうレビュワーが決まるかは知らなかったので知れてよかった.

(追記)レビュワーの全体のコメントを確認したら,Reviewer 2人ともPassing Knowledgeで査読してました.なんか...質として終わってない...?って思っちゃった.LBWだから?最近のCHIの規模の爆発に質の担保が耐えられてない気がします.

海外奨学金まとめ

自分がまとめた海外奨学金のアプライ時期順の情報です.

基本的にここから情報を得る

4月

5月

6月

6月

7月

8月

9月

10月

11月

12月

その他奨学金(国内など,一応メモ...)