姫路IT系勉強会 2022.10

最近のニュース

自己紹介

  • LibreOfficeの新しいのがリリースされたので10/13に試したら、Bug 151511 - Libreoffice 7.4.2 MacOSX Language pack does not recognize on intel mac バグを踏んだので報告して10/14に直してもらった、そんな毎日のfu7mu4

    • この話も毎回出てるよね。てか、毎回誰もリリース前にMacを試さないからリリースされてから登録される(の)
  • 2日でJekyllわかんないのに調べながらデザインとコーディングして死にそうになってました(の)

お題

ここの下にお題(相談したいこと、発表したいことなどなんでも)お書きください。
### <ネタ>+(名前)の形式でお題を記載してください。

Gitてへペロ(fu7mu4)

  • Impresssスライド(odp)あり
    • 8ぺーじくらい
    • Libreoffice 7.4.2製です。
      • Impressスライドの日本語が明朝体になってる…。これずっとあるバグなんですよ。直したけどテスト書いてないからってリジェクトされてます(の)
  • OSSのライブラリを追加したかった
    • が、tar玉どーんと入れてしまった
      • どうしようもないので、orphan branchで対処、するしかなかった…
    • てか、git submoduleにしたほうがいいんじゃね?
    • 修正をいれないならgit subtreeやsubmoduleがいい?
      • submoduleは運用が難しいから
      • .submoduleファイルにリモートリポジトリのファイル情報を書いている。
      • submoduleを更新する操作が必要になる。
      • subtreeはソースをもっているが、履歴の整合が崩れてこわれることがあっていや。
      • 直す技術がない状況ではちょっと使えないかな。
      • git submodule updateで外側を更新しているのか内部を更新しているのかを間違う恐れがある。
      • git submodule はトモダチ!怖くないよ! (チートシート付き)

キーボード

  • 長いキーボード
    • Googleの長いキーボードの話
    • もりやさんみたいな話
    • 過去にやってた
  • ポスターサイズのキーボード

エンダーーのWeb版を作りました(もりや)

  • エンダーを一応公開してます。
  • Python版のAIがそのままでは動かいない
    • 学習後の重みデータが約1GBあり、実行時には最低8GB程必要に
    • EnterかEnter以外か、を判別するのにスペック要求が高すぎる
    • TensorFlowLite形式のデータに変換し、データを軽量化
  • 公開してますが、うまく動きません
    • Python単体でRaspberryPIで動かしているものは、引くほど正確に判定しました
    • 確認された環境MacOS : Google Chrome Latest
  • 波形処理は魔界
    • ブラウザで録音する場合、AudioContextを使用
      • AudioContextインスタンスにノードと呼ばれる処理ユニットを繋ぐことで波形処理が出来るブラウザAPIです。
      • これのおかげで、音を鳴らしたいタイミングを厳密に指定して音を出せます。
    • エンダーーを判別しているAIがCNNベースのため波形の画像化が必要
    • MFCCという音の特徴量を画像化する手法をとります
    • これが、PythonとAudioContextで結果が全く異なる。
      • PythonはLibrosa、JavacsriptはMeydaAnalizerを使用
      • MeydaAnalizer側は結果が異なる話は出ているが、そんな訳はない。で止まっている
      • 波形を分析するパラメーターの指定が、両者で若干異なっている
    • AudioContextで録音→MFCCに変換→サーバーにアップ→PythonでAI用テンソルに変換→推論→失敗
      • この方式の場合、MFCC変換後の画像データの特徴の出方が大幅に異なる
      • ”特徴”で見ると、おそらくAudioContext側が正しいはず?
      • 全てEnter以外になる
    • AudioContextで録音→Waveに変換してアップ→PythonでMFCCに変換→AI用テンソルに変換し推論→失敗
      • この方式だと、MFCC変換後の画像データは似た特徴を出力できている
      • 正答率は10%無い
      • 録音後のデータをWaveに変換して、ファイルの状態でアップロードするのは地味に面倒
      • 打鍵判別と、録音が別プロセルで動いているため、判別時点と取得データに時間のズレがある
    • 打鍵の判別と録音のプロセスタイミングを同期させる
    • AudioContextで録音した内容でAIを再学習させる
    • どちらかで多分解決しそう

AWS SDK for PHPモックすんのメンドクサイ(かねだ)

  • Mock
  • 仕事でテストを書いていた、WEBアプリのカバレッジ見てたら、AWS SNS呼び出してるとこが真っ赤だったのさ
    • 通常の直接Mockはできなくて、上のmock-handlerでないとダメ
    • つかLaravel Notificationがなんで対応してないの?
    • LaravelはSESが呼びだせるけど、SMSが呼び出せない。
      • ここだけ直接書くしかない。
  • テスト戦略次第ですかね
    • 例えばドライバレベルはドライバを切り替えるように実装しておき、テストから除外するみたいなこともありえる。
  • CakePHPの場合のダミードライバ
    • Mailerはconfigで何をつかうかを変更できる。
    • テストするなら、テスト用のドライバのMailTrapまでをテストする。
    • 操作が簡単なので手動でしてしまってカバレッジの目標達成をあきらめてもいい。
    • SDKが送信するかどうかはSDKに任せてもいい。
    • 開発用のサービスがあるとテストは便利
    • ユニットテストも含めてテスト戦略をたてる必要がある。
      • ユニットテストでMailTrapに正しい文面が送られているかだけをチェックする。

Jekyllなんもわからん(のがた)

  • State of the Map Japan 2022が12月なのに10月に入ってもサイトが仮状態
    • 2020年のサイトをコピーしたリポジトリ用意したという連絡あったけど、前のサイトがJekyllで作ってたのでそれを引き継ぐことに…
    • とりあえず、bootstrapでモックを作ってJekyllに落とし始めたけど、公式も含めてだけど日本語の情報、すごく古いまま止まってなくね?
      • 仕方ないのでテーマをダウンロードして、それを解析しながら作る状態に…
    • てか、元々用意されたところがbundlerで全部入れるようになってたけど、どういう風にセットアップするのか書いてないし、Rubyなんもわからん状態でgemとか設定して「Ruby嫌い」というお気持ちになりました
      • debianのパッケージでもってきても動かなかった…
    • テンプレにあてはめようとしても、情報がなかった。今の情報が入手できない。
  • Ruby界隈めんどくさい
    • 作成する予定のに似たJekyllのテンプレをさがして試してなんとかした。
    • 情報も古いのしか残っていない…
    • サイトも更新されていないような気がする
  • ホントはHugoでやりたかった
    • 時間がなくて今からは代えられなかったので、Jekyllで
  • MkDocsに寄せるのがいいかも
    • ドキュメントはこれでいい!
    • Material for mkdocs
      • リポジトリにテンプレがあって、オーバーライドかければいい
    • ブログ形式ではないペライチのものも作れる
      • Mkdocsだとナビゲーションなんかもできる
        • Jekyllも自動生成できるみたいだけど、よくわからん
    • Markdownではちょっと厳しいようなときもmkdocsはいいかんじに拡張してくれている
    • devcontainerのdocsフォルダからmkdocsを生成するようにしている
    • 有料版のインサイダーまではいらないかも
    • サイト作成用にあれば嬉しいパーツが充実しているようだ。
    • スタティックサイトジェネレータとしても有用になっている
  • MkDocsのサイトを見るとドキュメント生成用にしかみえないがmaterial for mkdocsはいいよ。
  • Jekyllはモダンなサイトにはちょっと…
    • Jekyllでモダンなサイトを作るのは無理じゃないけど、時間もなく情報の探し方もわからない状態では、かなりしんどかった
  • VSCodeに drow.io を連携させておくとすごく便利
  • これでgithub pages作っている人いる!!
    • Github Actionsを組みあわせてもいいかも

Redmineに限界を感じてきている、今日この頃…(ワテ)

  • いろいろ調べていくうちに限界を感じ始めてきました…
  • モジュール化プラグイン化する?
  • OSSコミュニティにいる人は情報を増やすことをしない、ドキュメントの重要性を理解していない問題
    • 情報が増えると人が入りやすくなる。→コミュニティのため
    • ソフトの全体像がわからないと、設計にかかわってくる
  • 競合ソフトや他社をみない…?
  • OSSでは車輪の再発明を嫌うが、これは車輪の再発明ではない
    • いいところを取り込むために試すようなこと
    • 車輪を作り直して改良している
  • Redmine的なものをPHPで再実装したら、レンタルサーバーでもおける?
    • MariaDBなどをDBのメインにする
    • SQLiteは ?
      • SQLiteにしたところで堅牢性はないのでそこは利用者ががんばってね
      • SQLiteはWASMになったのでクライアントではいい
        • PostgreSQLもミドルウェア全部のせられる?
  • Rust ? Elixer ?
    • 計算ライブラリの場合はRustでいけたのですが、サービスはちょっと厳しいかもしれない。
    • ArduinoのIDEがRustに対応したら、Rustに移行しようと考えている。
    • GoでいけることがRustでできるようになったので、Rustで
    • Goは..テンプレート記法にうまくなじめなかったので、Goは読めるだけでいいかなと思っている。
    • PHPは厳しい?
    • WASIはコンテナでやっていたものが全部できるから言語インタプリタがなくても大丈夫になるかもしれない。
    • 覚える言語シンタックスは減らしたい。
    • WEBアッセンブリー化したときRustが一番サイズが小さいというのがある。
    • PWA上でWEB Assemblyをくみこめるしフルの機能が使える。
      • GoogleのMediaPipeのAIサンプルがだいたいiPhone、AndroidでWASM実装できる状態になっているので、PWA化してもネイティブと変わらない速度で動くのが実際に確認できます。
    • 動作確認もPlaygroundができて便利
    • 1回ダウンロードするというのが唯一の欠点か
  • WebGPU
    • 計算用のライブラリなので非常に早い

ざつだん?

  • Redmineを再構築すると、いいものできるかも
  • 別言語で実装するかも?
  • 昔、gitリポジトリを管理するgitoliteというのがありました
  • OSSのプロジェクトの運用もちょっと難しいところがある。
    • どこかに文書化したい
  • 古い開発状況のあれがのこっていてきつい。
    • 当時とはディスプレイの解像度がちがう
    • 老眼? もある。
    • Ruby界隈はRubyに寄せようとしすぎ。
      • Rubyで書きやすいようにする主義だから?
    • Pythonはマシ(のような気がする)。ノリでパッとやるイメージ
    • Jekyllさわっていても古さを感じたので、Ruby界隈の雰囲気かなー

distrobox

  • slackからの転載
  • そんなあなたにdistrobox。Linuxでしか使えないけどdokerとローカル環境をシームレスにつないでくれる便利なヤツです
    • いわゆるDevContainerのVSCodeのガワがない版
    • GUIのアプリが動く(Xがつかえる)
  • VirtualBox 7がリリースされたがどうか
    • Apple Silicon対応は本格的に使えるか?
      • まだ実験的実装なので使えない
    • ほかの人はDevContainerでいけるよねで
  • DevContainerを使うとき、(ライセンス的に)Docker Desktopが問題になるけど、WSLにDocker CLIをインストールしても使えた
    • Docker Desktopは、いい感じに設定してくれるけど、WSLにDocker CLIできるならDocker Desktopがなくても問題ないのでは?

文書のかきかたのポイント

  • 文字だらけにしないでスクショを貼りまくる
  • 構成に注意する
  • わかりやすくしないとよんでくれない
    • 最初にQuickStart、その後に設定変更の構成
  • チーム開発だと背景の違う技術スタックの異なる人がくる
  • 問題を考えると最終的に日本語の読解力にいきつくことがあるので、最初は短かく
  • 略語対策はMkDocsの拡張のtooltipsで
    • Markdownテキストでもそれっぽく表示される。
    • 略語はtooltip pluginで説明するといい
    • 基本的に略語はできるだけ使わない方がいい
    • 社内用語も通じなくなるから使わない方がいい

告知

State of the Map(12/3)

KOF 2022(11/11, 11/12)

  • 関西オープンフォーラムの KOF 2022があります。