--- title: 姫路IT勉強会 2023.08 langs: ja-jp --- 姫路IT系勉強会 2023.08 ======================= * 開催日: 2023/08/19 13:15 * 司会: wateさん * 参加人数: 参加者: ???名 (うち学生:0名) * HackMD: <https://hackmd.io/abcdefghijklmn> * connpass: <https://connpass.com/event/292452/> * ハッシュタグ:[#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/) * Red Hat vs Clone * [フリーローダーを歓迎する ―CIQ、Oracle、SUSEがRed Hat対抗の新団体「OpenELA」を設立 | gihyo.jp](https://gihyo.jp/article/2023/08/daily-linux-230815) * [オラクル、SUSE、CIQの新団体「OpenELA」--レッドハットに対抗](https://japan.zdnet.com/article/35207839/) * HashiCorp * [HashiCorp、全製品のライセンスを商用利用に制限があるBSLライセンスに変更すると発表 - Publickey](https://www.publickey1.jp/blog/23/hashicorpbsl.html) * [The future of Terraform must be open](https://blog.gruntwork.io/the-future-of-terraform-must-be-open-ab0b9ba65bca) * [Business Source License 1.1 零細企業経営者視点](https://voluntas.medium.com/business-source-license-1-1-8c83662568cb) * [Business Source License 1.1 メモ](https://zenn.dev/voluntas/scraps/60491c7f97882b) お題 --------------- ここの下にお題(相談したいこと、発表したいことなどなんでも)お書きください。 ※ 記載するお題は参加者一人につき1つだけ記載するようにお願いします。 ※`### <ネタ>+(名前)`の形式でお題を記載してください。 ### ブログサイトを作ってみました。(途中ですけど)(時政) * https://notion-blog-n1c7chg7r-cedrictarou.vercel.app/ * [Next.js](https://nextjs.org/) 12を使って[Notion](https://www.notion.so/ja-jp/teams)からデータを引っ張ってきて表示させるブログ的なサイトを作りました。 * [Udemy](https://www.udemy.com/ja/)というサイトの動画を参考に作りました。 * Udemyは動画などで学習できるサイト * ポートフォリオサイトとして使えたらと思っています。 * 個人作成したサイトやプログラムを載せれるようにしたいです。 * 今の所デザインをいじっているところです。 * 個別ページのアイキャッチ画像をどうやって取ってくるのか悩んでいます。 * そのうちやりたいこと * notionのAPIを使用して画像をとってブログ記事にはりたい * 外部のサービスと連携させていくにはAPIドキュメントを読みましょう。 * こういうAPIなどの仕組みが説明できるようになるといいと思う。 * ポートフォリオならそういう説明があるといい。 * [Python](https://www.python.org/)でテストの採点アプリをつくりたい * とりあえず[Anaconda](https://www.anaconda.com/)をインストールして環境構築しました。 * [Notion API](https://developers.notion.com/) * ポートフォリオ * ポートフォリオなので、異なる仕組みをみせた方がアピールできる。、スキルの幅が広がる。 * 複数のポートフォリオを作成してもいいけど。 * 学習した内容をブログにして公開したらいい。 * ブログに学習内容を貯めていくイメージ。 * 困ったら[Slack](https://join.slack.com/t/histudy/shared_invite/zt-ugowinom-ZG0ORhstkrqQGVyjksr_OA)で相談してください * 相談できる先がないのはつらいので相談してみてください! * 休みの日は勉強会みたいなことをしていますか? * 技術に触れるのが好きなので趣味でやっている。勉強の意識はない。 * 傍からみたら勉強しているように見えるかもしれない。 * 知識の幅が広がっていっている。 * 勉強会のslackには業界の動向などの情報が流れてくるのでそれを把握できるよ。 * ポートフォリオも趣味だとすると続けやすい * Notionを先生間の情報を共有するのに使用するとか * PTAなどに共有するのはどうするのか? * [WordPress.org](https://ja.wordpress.org/) でブログサイトを構築し、授業の教材を載せられていいかも * アフィリエイトで収益化も? * Nextjs以外のフレームワークはある? * Web系だと、以前はPHPがあってPHPにもフレームワークがある。 * [CakePHP](https://cakephp.org/jp) * [Laravel](https://laravel.com/) * JavaScript だと、[React](https://react.dev/), [Vue.js](https://ja.vuejs.org/)なども * Pythonだと、[Django](https://www.djangoproject.com/), [Flask](https://flask.palletsprojects.com/en/2.3.x/) * [Flet](https://flet.dev/) というのもあるらしい。 * もっと前だと [perlでcgi](https://www.tohoho-web.com/perl/cgi.htm)を書くのが主流だった。 * フレームワークははやりすたりがあるので、Github のスターの数でみてみるといいかも。 * OSSのプロジェクトが活発かどうかだったら、openhubというのがあるます。 * [Open Hub, the open source network](https://openhub.net/) * [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) * python製。markdownで作成した内容からドキュメントサイトが作成できる。 * Static Site Generator(静的にHTMLを生成) * [FastAPI](https://fastapi.tiangolo.com/ja/) * APIをさくっと作成できる --- ### Redmineテーマに初挑戦予定(sanak) #### 背景 4月から組織体制変更で[Backlog](https://backlog.com/ja/)を使い始めたものの、Redmineに戻ってきた時に見た目の違いが少し気になる。(特にフォント周り) 昨年度、[redmine.tokyo](https://redmine.tokyo/)の方でTSURUさんという方のStorybookのプレゼンがあったので、利用してみたい。 * https://github.com/redmine-theme/storybook * GitHub Pages: https://redmine-theme.github.io/storybook * テーマの開発に使えないか? * みためのためのテストフレーミングワークでは? * Storybookで問題がなければ、テーマにまとめる。 * 画面遷移や動きもデザイン要素に含まれるので、そのあたりもデザイナにみてもらえた方がいい? * コードを書かずに動きが表現できるのがfigmaかな? * [Figma: コラボレーションインターフェースデザインツール](https://www.figma.com/ja/) * コードを書く前にすりあわせができる。 * 専用のプラグインを書いておけば、サスの変数を吐いてもらうことができる * フィグマで変数を書きだす * 昔の書き方がしたい * 昔の書き方だとわかりにくくなることがる。 * JSの変化が激しくてわからなくなってしまう。 * フロントエンドの人がJSもCSSも全部かける場合でないとうまくいかないツールもある。 * React vs Vue ? * React は純然たるJavaScriptのフレームワークなのでフロントエンドエンジニアがいればまかせたい。 * 特定の分野でもトレンドと、自分のユースケース、メンテナンスできる範囲は違うので。 * 世間的には、React * 技術選定するときは、他の人がひきつげるようにしないといけないと。 * 仕事では全員がつかえるというのが大事。 * モダンがだめではなくて、生存期間を考慮しましょう。 フロントエンド側(HTML/CSS)が苦手なので、トライしつつ、普段ROM専用になっているTwitter(現X)の方でシェアしていきたいというのも。 #### 参考になりそうなテーマの調査 とはいっても、テーマ開発は何から手を付ければ良いか全く良く分かってないので、まずは既存で良く見かけるテーマを参考にしてみる * farend_bleuclair: https://github.com/farend/redmine_theme_farend_bleuclair * よく使われている * SCSS利用でwebpackでCSSにビルド * 会社の方で標準的に利用している * デザイナーさんと協議していけたらいいなぁ。 * デザイナーさんでもテーマ開発できるといいなぁ * 本体に含めずになんとかできないか?? * minimalflat2: https://github.com/akabekobeko/redmine-theme-minimalflat2 * SCSS利用でwebpackでCSSにビルド * [mrliptontea/PurpleMine2: A free Redmine theme for modern browsers](https://github.com/mrliptontea/PurpleMine2) * テーマで一部が閉じられるのがいい。 * 現状ではこれでいいと思う。 * 今のテーマはSCSSでくまれている。 * SCSS の利点? * ネストできる。 * ファイルが分割できて管理できる。 * [Ruby on Rails](https://github.com/rails/rails) 界隈 * なにもかも ruby/rails によせようとする。 * rails の CSS が適用される? * redmineのView側に問題がある。構造化されていない。 * [OpenProject](https://www.openproject.org/) は redmineの問題にあってフォークされたプロジェクト * redmine側にバックポートしてくれないかなぁ * redmine側が理解してくれないかもなぁ #### GitHub Pages上での公開 * 以前は `gh-pages` ブランチにpushするとデプロイできるという認識だったが、最近では他にも `docs` フォルダを利用したり、GitHub Actionsを利用できるようにもなっているよう。 * テーマの方のリポジトリに、Storybookをアタッチ(`git submodule` ?)して、公開することで、実際にRedmineの `public/themes` フォルダにインストールすることなく、トライ&エラーのループを効率化したり、スムーズなフィードバックを受け付けられるようにならないか? ### 休憩 * [Vite | 次世代フロントエンドツール](https://ja.vitejs.dev/) * [CakePHPのMPAにViteを導入して開発を加速させる⚡️](https://tech.fusic.co.jp/posts/2022-03-03-cakephp-vite-mpa/) ### Laravelのマイナーアップデートで実装コードに動かなくなった部分があった(かねだ) * Laravel 8-> 9にアップグレードした。これは動いた。 * 新しい環境でインストールした場合に動かないことがあった。 * Laravel 9.3x (去年の秋にマージされた)変更があった。 * 動かなかったコードはそもそもLaravelに則った書き方してないコードがあった * バリデーション中にパラメータの書き換えするって何事?! * でも `passedValidation()` tぴうドキュメントに載っていない関数で変換すると `$request->validated()` で値とれない… * バリデーション前にパラメータをいじるタイミングとしては `preparefForValidatiom()` という関数がある(こちらもドキュメントにはない) * 実装のスキをついた書き方だったもよう。 * Laravelがそのスキを埋めたので、動かなくなった。 * **お作法に従いましょう!** * どういう状況? * 開発者は、タイムゾーンの、日付と時間の間にはいるTがじゃまだったので消したかったもよう。 * View側で消そうよね。 * レビューとおしちゃダメじゃない? * なんとなく大丈夫でとおすとレビューの意味はないよね。負の遺産になりそうなところはチェックしよう。 * だいたいこういう問題は管理のできていないところで発生する。 * レビューチェックポイント・観点が抜けている。 * 過去の負の遺産 * ひとつのシステムに同じOSSの違うバージョンが含まれていてどちらが呼ばれているかわからない * 変数名が連番 * カラム名が連番 * ドキュメントがあまりない * SQL文がだけが大量にかかれているとか * 情報があまりにも少ないプロジェクト * [Amazon Linux 2](https://aws.amazon.com/jp/amazon-linux-2) [PHP](https://www.php.net/) 8.0 → [AlmaLinux](https://almalinux.org/ja/) php 8.2で構築 * テストを噛まさずにあげるから... * [Node.js](https://nodejs.org/ja)も[Composer](https://getcomposer.org/)もバージョンがあがっている... * [セマンティック バージョニング](https://semver.org/lang/ja/)がはやっているのに Laravel はマイナーでも派手に変えてくる。 * 単純に怖い * エッジを効いていて、最新を追うイメージ * 運用維持にはコストがかかるが、新しく作成する場合は有用らしい。 * CakePHPは変更が少ないので、長期運用には向いているんじゃないかな。 * CakePHPはやや古くさいといわれることがある。 * 教訓 * システム変更、OS、言語バージョンなどを一気にアップグレードしない * お作法には従うこと * テストはありますか? * [PHPUnit](https://phpunit.de/)などのテストフレームワークはある。 * 今回の場合はユニットテストではカバーされていない * 今回の場合は[E2E(エンドツーエンド)テスト](https://circleci.com/ja/blog/what-is-end-to-end-testing/)でカバーされる。テストが必要かどうかも検討が必要。 * E2Eテストは変更によって壊れやすい ### Information-/Content-Centric Networking (ICN/CCN) の紹介 (a-ooka) #### 概要 Information-Centric Networking または Content-Centric Networking (ICN/CCN; 日本語では 情報指向ネットワーク技術 または コンテンツ指向ネットワーク技術) は、現状の [Internet Protocol (IP)](https://ja.wikipedia.org/wiki/IP) の問題を解決するために、 IP とは別のネットワーク層技術の新たな選択肢として考案された革新的技術です。以下のような特徴があります。 * 機器ごとに割り当てられた IP アドレスではなく、コンテンツごとに割り当てられた name を使って通信する。 * ルータが content-aware になることで、キャッシングやマルチキャストを自然に(=[CDN](https://www.ntt.com/bizon/glossary/e-c/cdn.html)や[Peer to Peer](https://ja.wikipedia.org/wiki/Peer_to_Peer)等に特別な基盤に頼らずとも)サポートして、コンテンツを効率的に配布・取得するための仕組みをサポートしている。 * コンテンツ自体にセキュリティが組み込まれている(キャッシュやマルチキャスト等の機能と両立できる)。 #### ユースケース * 大規模ライブストリーミング配信・取得 * 要求集約・キャッシュによってサーバに負荷をかけることなく人気急増にも即対応 * キャッシュ・エニーキャストによってレイテンシ削減 * 十分な数の CCN ルータがあれば個人でも人気動画の Producer として動画を配信できるようになる * モバイル環境でのコンテンツ取得 * ステートレスのためハンドオーバーや障害に強い * コネクションレスのため同時に複数の無線メディアを利用できる * DDoS 攻撃の軽減 * そもそも「特定のノードを攻撃」が成り立たない * 重複 Interest は集約され、要求のない Data も破棄 #### 参考リンク * [ICN 研究会](https://www.ieice.org/~icn/) * 8月22日、23日(週明けですが…)に福岡でワークショップがあります。 * [CCN 通信用ソフトウェア cefore (Github)](https://github.com/cefore/cefore) * [cefore アプリケーション用 Python パッケージ cefpyco](https://github.com/cefore/cefpyco) * [Cefore | 情報指向ネットワーク技術特別研究専門委員会 (ICN研究会)](https://www.ieice.org/~icn/?page_id=1208) * [CI を利用したマルチプラットフォーム・ビルド (GitHub Actions, electron-builder)](https://zenn.dev/sprout2000/books/3691a679478de2/viewer/13600) #### 感想とか * 大規模のライブストリーミングなら[BTS](https://ibighit.com/bts/kor/)のライブに使えると面白いかも * BTSの大量のストリーミングをさばいたぜというAWSと請け負った会社の宣伝 * Kiswe の AWS CloudFront 導入事例: https://aws.amazon.com/jp/solutions/case-studies/Kiswe-Case-Study/ * [HYBE](https://hybecorp.com/eng/main)とタイアップするしか! ### タスク(プロジェクト)管理ツールの運用方法の考察(ワテ) #### 背景 普段からRedmineを使って管理していますが、とにかく使いにくくて困ってます。 また、自前でRedmineを設置しようとしてもサーバー要件などの要件があり、 気軽に使えるというわけでないので、もっとライトに使えるプロジェクト管理ツールがほしいです --- これからタスク管理やプロジェクト管理を始めようとする人がサクッと試せ、 簡単に使い始めることができるものを探している (ストレスなく運用でき、ちゃんと情報を残せる/残しやすいものを探している) ※後で見たときに何も情報が残っていないというプロジェクトに参加するのはもう嫌だ・・ #### 概要 「要件または要求」に記載した要件を満たすOSSを知っていれば教えてほしい #### 要件または要求 求めているものには以下の条件を満たすものが望ましい (記載した要件の順序が優先度を表す) * OSSライセンスでは提供されている * 改変の自由が保証されている * Githubなどにホストされており入手が容易なものが望ましい * セルフホスティングができる * レンタルサーバーなどに設置できるのが理想 * おそらくこの要求を満たそうとするとPHP製といった感じになると思われる * 画面が痛くない * SPA(Single Page Application)といったものでなくても良いが、 運用者に過剰にストレスがかかるI/FはNG * [UIデザイン必携 ユーザーインターフェースの設計と改善を成功させるために](https://www.amazon.co.jp/dp/4798169625) * [ノンデザイナーズ・デザインブック[第4版]](https://www.amazon.co.jp/dp/4839955557) * テンプレート機能がある * 以下のテンプレートを管理する機能がある * チケット * Wiki * プロジェクト * ワークフロー * タスク管理機能に以下の機能がある * カンバン機能 * この機能が無いとこれからタスク管理を始めようという人には訴求しにくい * ガントチャート機能 * ガントチャート画面からタスクの編集ができる様になっている必要あり * Drag&Dropで開始日、期日、進捗率を変更できることが望ましい * 外部連携機能がある * APIが実装されている * 普通のREST APIで可 * 機能が足りなかった場合に他のサービスと連携できるようになっている * Webフックによる更新内容の通知機能といった形でも可能 * ワークフローの設定ができる * あるステータスからどのステータスに変更できるのかを設定できる機能がある * プラグインによる拡張ができる #### 類似ツールのリンク とりあえずセルフホスティングできるプロジェクト管理ツールを抜き出してみた。 * 参考 * awesome-selfhosted/awesome-selfhosted: A list of Free Software network services and web applications which can be hosted on your own servers: <https://github.com/awesome-selfhosted/awesome-selfhosted#software-development---project-management> * Self-Hosted Alternatives to Popular Services: <https://www.reddit.com/r/selfhosted/> 条件にマッチしているかは、ちゃんと見てなくてそれっぽいもの。以下、リスト。 * [ ] OpenProject: <https://www.openproject.org/alternatives/best-redmine-alternative/> * Redmineから派生したプロジェクト。サーバーの要件が厳しい * M1 macOS(arm64 Arch)ではビルドできない? * 日本語化はされている? crowdin ? * https://github.com/opf/openproject/blob/dev/config/locales/crowdin/ja.yml * 本家でのBug管理など: https://community.openproject.org/projects/openproject/ * Redmineからどのあたりをフォークしたのか気になる... * [ ] Taiga: <https://taiga.io/> * [ ] ActiveCollab: <https://activecollab.com/self-hosted-project-management> * [ ] Trac: <https://trac.edgewall.org/> * なつかしい。 * Kanban機能はなさそう。 * [ ] ZenTao: <https://www.zentao.pm/> * [ ] Tuleap: <https://www.tuleap.org/> * [x] Leantime: <https://leantime.io/> * [【2023年版】無料オープンソースのプロジェクト管理システム・ツール10選を徹底比較! - NotePM](https://notepm.jp/blog/20647) * Redmine Developer JPのSlackで呟いたら教えてもらえました * PHP製でよさそう。 * 条件にマッチしていないもの * GitLab の GitLab issue: <https://about.gitlab.com/install/> * 有料なら使い勝手がよくなる? * Kanbanは無料の範囲内ですよ。 * Atlassian の Jira : <https://www.atlassian.com/ja/software/jira> * 有償でちょっとお高いので試すのは... ### [雑談ネタ]OSSに感謝してみよう(fu7mu4) * RedHatとか、HashiCorpとかいろいろあったので、とりあえず、みんながよくつかっている、OSSに感謝してみるコーナーを設けてみた。 * 遊び方、全員でばーっとOSSを3-5個ぐらい書いて、順番に紹介していくみたいな形 #### 感謝・貢献してみよう * fu7mu4 * [Emacs](https://www.gnu.org/software/emacs/) エディタ、学生のころから使っている * [LibreOffice - オフィススイートのルネサンス](https://ja.libreoffice.org/)、一時期 [NeoOffice](https://www.neooffice.org/neojava/en/index.php)に浮気していたが、やっぱりLibreOfficeにもどった * [Firefox](https://www.mozilla.org/ja/firefox/new/) よくつかっている * [ClozureCL](https://ccl.clozure.com/) Common Lispのひとつ。 * [DevSecOps プラットフォーム | GitLab](https://about.gitlab.com/ja-jp/) 飜訳したらマグカップもらえた! * ワテ * [PhpSpreadsheet](https://phpspreadsheet.readthedocs.io/en/latest/) * [CakePHP](https://cakephp.org/jp) * [Ansible](https://github.com/ansible/ansible) * Ansible vs Dockerの話 * Ansible vs Chef ... [Chef](https://www.chef.io/)はもう聞かないな * rubyのコードが書けるのがイヤ * そういえばサーバー自動化では[puppet](https://www.puppet.com/)もあったことを覚えてますか? * かねだ * [NucleusCMS](http://japan.nucleuscms.org/) * 気象庁のXMLに出てくるエリアコードを纏めてくれてたサイト(たしか独立行政法人) * nogajun * [Bludit](https://www.bludit.com/): フラットファイルのCMSです。フットプリントが小さくてPHPerじゃなくても読める大きさ。個人的に[ドキュメントを翻訳](https://docs.bludit.info/)してます。 * [Minetest](https://www.minetest.net/): Minecraftに影響受けているゲームです。MODをLuaで書けるので、これを使ってプログラミング教育のネタにしたい。 * [Elk](https://github.com/elk-zone/elk): MastodonのWebクライアント。これを使うとTwitterのようなUIになります。 * sanak * [GEOS](https://github.com/libgeos/geos): 2次元幾何演算ライブラリ * [PostGIS](https://github.com/postgis/postgis): PostgreSQLの空間拡張機能 * [QGIS](https://github.com/qgis/QGIS): 商用を超えるGISソフトウェア * [Redmine](https://github.com/redmine/redmine): 現在の飯のタネなので :smile: * a-ooka * [Visual Studio Code](https://github.com/microsoft/vscode) * [Cefore](https://github.com/cefore/cefore)/[cefpyco](https://github.com/cefore/cefpyco) * [pytest](https://github.com/pytest-dev/pytest) * [rich](https://github.com/Textualize/rich) ### お手軽なチャットシステムありますか?(nogajun) * 背景 * 大学の後期から始まるPython応用の授業でチャットボットを扱ってみようかと思案中 * 大学で使っている[Google ChatのAPI](https://developers.google.com/chat?hl=ja)は学生に使わせるには荷が重い * 手軽に使えそうな[Let's Chat](https://sdelements.github.io/lets-chat/)というものを見つけたけど2015年で死んでた * こうなったら[KENT-WEB](https://www.kent-web.com/chat/)かIRCしかないのか… * 関係ないけどネタでKENT-WEBを検索したら、まだ活動してた * さて、どうしたものか * 要件 * Pythonで使える * シンプルにメッセージの送受信できる * セキュリティゆるゆるでOK #### 参考資料 * [Creating realtime chat app in Python | Flet](https://flet.dev/docs/tutorials/python-realtime-chat/) * チャット自体の作成をメインとするならFlatを使って自作する? * チャットを作ることが目的じゃないのでこれも違うんよね * チャット自体を作成することも勉強させればよくない? * [discord.py へようこそ。](https://discordpy.readthedocs.io/ja/latest/) * チャットBotの作成をメインにするならチャットはDiscordを使うという手も * 大学なのでdiscordは使いたくないんですよ * [Mattermost](https://mattermost.com/) * Slack互換を歌っているOSS * 設置がしんどいかも? * 設置自体はDockerでやればいいけど、それなら[Rocket Chat](https://www.rocket.chat/)のほうがシンプルかなという気がしてます * [Python Slack SDK — Python Slack SDK](https://slack.dev/python-slack-sdk/) * ボット作成にはSlackが公式に提供しているSDKが利用できると思われる * python で mattermostなら、こういうのがあるらしい [mattermost_bot · PyPI](https://pypi.org/project/mattermost_bot/) #### 感想とか * 結局、Fletでチャット作ったほうがいいかなー 告知 --------------- ### イベント名(開催日時) (イベントの概要をここに書く)