---
# System prepended metadata

title: 姫路IT勉強会 2022.10
tags: [histudy]

---

---
title: 姫路IT勉強会 2022.10
langs: ja-jp
---
姫路IT系勉強会 2022.10
=======================

* 開催日: 2022/10/15 13:15
* 司会: wateさん
* 参加人数: 参加者: 5名 (うち学生 0名)
* HackMD: <https://hackmd.io/4kivuBtBRTKHChfP7qQoqg>
* connpass: <https://histudy.connpass.com/event/262167/>
* ハッシュタグ：[#histudy](https://twitter.com/search?q=%23histudy&src=typd)
* [姫路IT系勉強会 Discordへ参加する](https://discord.gg/rZCeScB)
    * **オンライン開催の場合はDiscordのボイスチャットを利用しています**
    * Discordは無料プランに乗れる人数(10人以内)なので使っています。
    * 有料版でも$15/月程度なら払えなくもないですね。
    * Discord以外にも色々ありますので、人数が増えたら検討しましょう。
* [姫路IT系勉強会 Slackへ参加する](https://join.slack.com/t/histudy/shared_invite/zt-ugowinom-ZG0ORhstkrqQGVyjksr_OA)
    * 勉強会当日以外での質疑応答やメンバー同士のコミュニケーションに利用しています
    * Slackでの話の流れから、突発的に臨時イベントが企画されされるケースがあります

最近のニュース
-----------------

* [姫路IT系勉強会](https://histudy.jp/) 
* [Google、棒型キーボードを発表――自作できる設計図を公開](https://k-tai.watch.impress.co.jp/docs/news/1444002.html)
    * [google/mozc-devices](https://github.com/google/mozc-devices/tree/master/mozc-bar)
* [Linux、バージョン6.1でRustを導入へ--トーバルズ氏が明言](https://japan.zdnet.com/article/35193491/)
    * [Kernel 6.0 released [Posted October 3, 2022 by corbet]](https://lwn.net/Articles/910087/)
* [Redmine導入で「林業」に革命！ ITツールが変えた伝統産業](https://news.careerconnection.jp/career/144163/)
* [無償の仮想PCソフト「VirtualBox 7.0」が公開 ～約4年ぶりのメジャーアップデート](https://forest.watch.impress.co.jp/docs/news/1446404.html)

自己紹介
---------------

* LibreOffice の新しいのがリリースされたので 10/13 に試したら、[Bug 151511 - Libreoffice 7.4.2 MacOSX Language pack does not recognize on intel mac](https://bugs.documentfoundation.org/show_bug.cgi?id=151511) バグを踏んだので報告して 10/14 に直してもらった、そんな毎日のfu7mu4
    * この話も毎回出てるよね。てか、毎回誰もリリース前にMacを試さないからリリースされてから登録される（の）

* 2日でJekyllわかんないのに調べながらデザインとコーディングして死にそうになってました（の）
    * State of the Map Japan 2022 in Kakogawa: https://stateofthemap.jp/2022/

お題
---------------

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

### Gitてへペロ(fu7mu4)

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

### キーボード

* 長いキーボード
    * Googleの長いキーボードの話
    * もりやさんみたいな話
    * 過去にやってた
* ポスターサイズのキーボード 
    * 料亭に予約システムを入れたときに、入店時にテーブルの空き状況を更新したいと言われる
    * キーボードの指定のキーを押すと空き状況が更新される物がほしいと言われ、作る
    * キーボードが小さいとゴネられる
    * デカけりゃインだろ？ということで、ポスターサイズのキーボードを作る

### エンダーーのWeb版を作りました（もりや）
* [エンダー](https://ender.yasukosan.net/)を一応公開してます。
* 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を再学習させる
    * どちらかで多分解決しそう

<!-- リンク参照: https://spec.commonmark.org/0.30/#link-reference-definitions -->
[AudioContext]: https://developer.mozilla.org/ja/docs/Web/API/AudioContext
[MFCC]: https://fast-d.hmcom.co.jp/techblog/melspectrum-mfcc/

### AWS SDK for PHPモックすんのメンドクサイ（かねだ）
* Mock
    * PHPUnitのMockは別にある
    * Laravelは[Mockery](https://github.com/mockery/mockery)がバンドルされてる
    * AWS SDK for PHPの[mock-handler](https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/guide_handlers-and-middleware.html#mock-handler)
    * https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code
* 仕事でテストを書いていた、WEBアプリのカバレッジ見てたら、AWS SNS呼び出してるとこが真っ赤だったのさ
    * 通常の直接 Mock はできなくて、上の mock-handler でないとダメ
    * つかLaravel Notification がなんで対応してないの？

    * Laravel はSESは呼びだせるけど、SNSが呼び出せない。
        * ここだけ直接書くしかない。
        * 公式が[サードパーティ製](https://laravel.com/docs/6.x/notifications#specifying-delivery-channels)勧めてる模様* テスト戦略次第ですかね
    * 例えばドライバレベルはドライバを切り替えるように実装しておき、テストから除外するみたいなこともありえる。 
* [CakePHP](https://cakephp.org/jp)の場合のダミードライバ
    * Mailerはconfigで何をつかうかを変更できる。
    * テストするなら、テスト用のドライバの MailTrap までをテストする。
    * 操作が簡単なので手動でしてしまってカバレッジの目標達成をあきらめてもいい。
    * SDKが送信するかどうかはSDKに任せてもいい。
    * 開発用のサービスがあるとテストは便利
    * ユニットテストも含めてテスト戦略をたてる必要がある。
        * ユニットテストでMailTrap に正しい文面が送られているかだけをチェックする。
 
### Jekyllなんもわからん(のがた)

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

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

* いろいろ調べていくうちに限界を感じ始めてきました…
  * データベース構造とか
    * https://github.com/wate/redmine_db_schema/
  * コードとか…
* モジュール化プラグイン化する?
* OSSコミュニティにいる人は情報を増やすことをしない、ドキュメントの重要性を理解していない問題
    * 情報が増えると人が入りやすくなる。→コミュニティのため
    * ソフトの全体像がわからないと、設計にかかわってくる
* 競合ソフトや他社をみない...?
    * LibreOffice は MS Officeの良い部分をとりこまない
    * ほかには、Baseも古いけど、[AirTable](https://www.airtable.com/home/built-for-you)のようなものを全然見てない
        * AirTableはスプレッドシートとDatabaseの間ぐらいのような感じのサービス
            * [AirTable：直感的にデータベースを使えて業務システムに最適](https://note.com/a_n_do/n/n525324e06344)
            * こういうのも触りました: [NocoDB](https://www.nocodb.com/)
                * [NASでも動く！　Excel感覚で使えるウェブデータベース「Baserow」と「NocoDB」【イニシャルB】 - INTERNET Watch](https://internet.watch.impress.co.jp/docs/column/shimizu/1430366.html)
    * Redmine は NOTIONのいいところをとりこまない
* OSSでは車輪の再発明を嫌うが、これは車輪の再発明ではない
    * いいところを取り込むために試すようなこと
    * 車輪を作り直して改良している
* Redmine的なものをPHPで再実装したら、レンタルサーバーでもおける?
    * [MariaDB](https://mariadb.org/)などを DBのメインにする
    * SQLiteは ?
        * SQLiteにしたところで堅牢性はないのでそこは利用者ががんばってね
        * SQLite は WASMになったのでクライアントではいい
            * PostgreSQLもミドルウェア全部のせられる?
* Rust ? Elixer ?
    * 計算ライブラリの場合は [rust](https://www.rust-lang.org/ja) でいけたのですが、サービスはちょっと厳しいかもしれない。
    * [ArduinoのIDE](https://www.arduino.cc/en/software)が rustに対応したら、Rustに移行しようと考えている。
    * Go でいけることが Rust でできるようになったので、Rustで
    * Go は..テンプレート記法にうまくなじめなかったので、Goは読めるだけでいいかなと思っている。
    * PHP は厳しい?
    * [WASI](https://wasi.dev/) は コンテナでやっていたものが全部できるから言語インタプリタがなくても大丈夫になるかもしれない。
    * 覚える言語シンタックスは減らしたい。
    * [WEB Assembly](https://developer.mozilla.org/ja/docs/WebAssembly)化したとき Rust が一番サイズが小さいというのがある。
    * PWA上で WEB Assembly をくみこめるしフルの機能が使える。
        * Googleの[MediaPipe](https://mediapipe.dev/)のAIサンプルがだいたいiPhone、AndroidでWASM実装できる状態になっているので、PWA化してもネイティブと変わらない速度で動くのが実際に確認できます。
    * 動作確認も Playground ができて便利
    * 一回ダウンロードするというのが唯一の欠点か
* [WebGPU](https://www.w3.org/TR/webgpu/)
    * 計算用のライブラリなので非常に早い 


### ざつだん?

* redmineを再構築すると、いいものできるかも
* 別言語で実装するかも?
* 昔、gitリポジトリを管理する[gitolite](https://gitolite.com/gitolite/index.html)というのがありました
  * それとredmineを連携するシステム作ってた
    * [Flat ODFとRedmine, Git(Gitolite, SparkleShare)で文書共有システムを作ってみた(構築編) | Days of speed:](https://www.nofuture.tv/20131217)
    * これ、発表の日付が2013年。10年前だわ
* OSSのプロジェクトの運用もちょっと難しいところがある。
    * どこかに文書化したい
* 古い開発状況のあれがのこっていてきつい。
    * 当時とはディスプレイの解像度がちがう
    * 老眼? もある。
    * ruby界隈はrubyに寄せようとしすぎ。
        * rubyで書きやすいようにする主義だから?
    * python はマシ（のような気がする）。ノリでパッとやるイメージ
    * Jekyllさわっていても古さを感じたので、ruby界隈の雰囲気かなー

#### distrobox

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

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

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

告知
---------------

### State of the Map(12/3)

* 12月3日、加古川商工会議所でState of the Mapあります。
  * [State of the Map Japan 2022 in Kakogawa:]( https://stateofthemap.jp/2022/)

### KOF 2022(11/11, 11/12)

* 関西オープンフォーラム の [KOF 2022](https://www.k-of.jp/2022/)があります。

