姫路IT系勉強会 2023.08

  • 開催日: 2023/08/19 13:15
  • 司会: wateさん
  • 参加人数: 参加者: ???名 (うち学生:0名)
  • HackMD: https://hackmd.io/abcdefghijklmn
  • connpass: https://connpass.com/event/292452/
  • ハッシュタグ:#histudy
  • 姫路IT系勉強会 Discordへ参加する
    • オンライン開催の場合はDiscordのボイスチャットを利用しています
    • Discordは無料プランに乗れる人数(10人以内)なので使っています。
    • 有料版でも$15/月程度なら払えなくもないですね。
    • Discord以外にも色々ありますので、人数が増えたら検討しましょう。
  • 姫路IT系勉強会 Slackへ参加する
    • 勉強会当日以外での質疑応答やメンバー同士のコミュニケーションに利用しています
    • Slackでの話の流れから、突発的に臨時イベントが企画されされるケースがあります

最近のニュース

お題

ここの下にお題(相談したいこと、発表したいことなどなんでも)お書きください。
※ 記載するお題は参加者一人につき1つだけ記載するようにお願いします。
### <ネタ>+(名前)の形式でお題を記載してください。

ブログサイトを作ってみました。(途中ですけど)(時政)

  • https://notion-blog-n1c7chg7r-cedrictarou.vercel.app/
    • Next.js 12を使ってNotionからデータを引っ張ってきて表示させるブログ的なサイトを作りました。
    • Udemyというサイトの動画を参考に作りました。
      • Udemyは動画などで学習できるサイト
    • ポートフォリオサイトとして使えたらと思っています。
    • 個人作成したサイトやプログラムを載せれるようにしたいです。
    • 今の所デザインをいじっているところです。
    • 個別ページのアイキャッチ画像をどうやって取ってくるのか悩んでいます。
  • そのうちやりたいこと
    • notionのAPIを使用して画像をとってブログ記事にはりたい
      • 外部のサービスと連携させていくにはAPIドキュメントを読みましょう。
      • こういうAPIなどの仕組みが説明できるようになるといいと思う。
      • ポートフォリオならそういう説明があるといい。
    • Pythonでテストの採点アプリをつくりたい
    • とりあえずAnacondaをインストールして環境構築しました。
    • Notion API
  • ポートフォリオ
    • ポートフォリオなので、異なる仕組みをみせた方がアピールできる。、スキルの幅が広がる。
    • 複数のポートフォリオを作成してもいいけど。
    • 学習した内容をブログにして公開したらいい。
    • ブログに学習内容を貯めていくイメージ。
  • 困ったらSlackで相談してください
    • 相談できる先がないのはつらいので相談してみてください!
  • 休みの日は勉強会みたいなことをしていますか?
    • 技術に触れるのが好きなので趣味でやっている。勉強の意識はない。
      • 傍からみたら勉強しているように見えるかもしれない。
    • 知識の幅が広がっていっている。
    • 勉強会のslackには業界の動向などの情報が流れてくるのでそれを把握できるよ。
    • ポートフォリオも趣味だとすると続けやすい
      • Notionを先生間の情報を共有するのに使用するとか
      • PTAなどに共有するのはどうするのか?
      • WordPress.org でブログサイトを構築し、授業の教材を載せられていいかも
      • アフィリエイトで収益化も?
  • Nextjs以外のフレームワークはある?
    • Web系だと、以前はPHPがあってPHPにもフレームワークがある。
    • JavaScriptだと、React, Vue.jsなども
    • Pythonだと、Django, Flask
    • Flet というのもあるらしい。
    • もっと前だと perlでcgiを書くのが主流だった。
    • フレームワークははやりすたりがあるので、Githubのスターの数でみてみるといいかも。
    • Material for MkDocs
      • Python製。Markdownで作成した内容からドキュメントサイトが作成できる。
      • Static Site Generator(静的にHTMLを生成)
    • FastAPI
      • APIをさくっと作成できる

Redmineテーマに初挑戦予定(sanak)

背景

4月から組織体制変更でBacklogを使い始めたものの、Redmineに戻ってきた時に見た目の違いが少し気になる。(特にフォント周り) 昨年度、redmine.tokyoの方でTSURUさんという方のStorybookのプレゼンがあったので、利用してみたい。

  • https://github.com/redmine-theme/storybook
    • GitHub Pages: https://redmine-theme.github.io/storybook
    • テーマの開発に使えないか?
    • みためのためのテストフレーミングワークでは?
    • Storybookで問題がなければ、テーマにまとめる。
    • 画面遷移や動きもデザイン要素に含まれるので、そのあたりもデザイナにみてもらえた方がいい?
    • 昔の書き方がしたい
      • 昔の書き方だとわかりにくくなることがる。
      • 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
    • テーマで一部が閉じられるのがいい。
    • 現状ではこれでいいと思う。
    • 今のテーマはSCSSでくまれている。
  • SCSSの利点?
    • ネストできる。
    • ファイルが分割できて管理できる。
  • Ruby on Rails 界隈
    • なにもかもRuby/Railsによせようとする。
    • RailsのCSSが適用される?
    • RedmineのView側に問題がある。構造化されていない。
    • OpenProject はRedmineの問題にあってフォークされたプロジェクト
      • Redmine側にバックポートしてくれないかなぁ
      • Redmine側が理解してくれないかもなぁ

GitHub Pages上での公開

  • 以前は gh-pages ブランチにpushするとデプロイできるという認識だったが、最近では他にも docs フォルダを利用したり、GitHub Actionsを利用できるようにもなっているよう。
  • テーマの方のリポジトリに、Storybookをアタッチ(git submodule ?)して、公開することで、実際にRedmineの public/themes フォルダにインストールすることなく、トライ&エラーのループを効率化したり、スムーズなフィードバックを受け付けられるようにならないか?

休憩

Laravelのマイナーアップデートで実装コードに動かなくなった部分があった(かねだ)

  • Laravel 8-> 9にアップグレードした。これは動いた。
  • 新しい環境でインストールした場合に動かないことがあった。
  • Laravel 9.3x (去年の秋にマージされた)変更があった。
  • 動かなかったコードはそもそもLaravelに則った書き方してないコードがあった
    • バリデーション中にパラメータの書き換えするって何事?!
    • でも passedValidation() tぴうドキュメントに載っていない関数で変換すると $request->validated() で値とれない…
      • バリデーション前にパラメータをいじるタイミングとしては preparefForValidatiom() という関数がある(こちらもドキュメントにはない)
    • 実装のスキをついた書き方だったもよう。
    • Laravelがそのスキを埋めたので、動かなくなった。
  • お作法に従いましょう!
  • どういう状況?
    • 開発者は、タイムゾーンの、日付と時間の間にはいるTがじゃまだったので消したかったもよう。
    • View側で消そうよね。
    • レビューとおしちゃダメじゃない?
    • なんとなく大丈夫でとおすとレビューの意味はないよね。負の遺産になりそうなところはチェックしよう。
    • だいたいこういう問題は管理のできていないところで発生する。
    • レビューチェックポイント・観点が抜けている。
      • 過去の負の遺産
        • ひとつのシステムに同じOSSの違うバージョンが含まれていてどちらが呼ばれているかわからない
        • 変数名が連番
        • カラム名が連番
        • ドキュメントがあまりない
          • SQL文がだけが大量にかかれているとか
  • 情報があまりにも少ないプロジェクト
  • セマンティック バージョニングがはやっているのにLaravelはマイナーでも派手に変えてくる。
    • 単純に怖い
    • エッジを効いていて、最新を追うイメージ
    • 運用維持にはコストがかかるが、新しく作成する場合は有用らしい。
    • CakePHPは変更が少ないので、長期運用には向いているんじゃないかな。
      • CakePHPはやや古くさいといわれることがある。
  • 教訓
    • システム変更、OS、言語バージョンなどを一気にアップグレードしない
    • お作法には従うこと
  • テストはありますか?
    • PHPUnitなどのテストフレームワークはある。
    • 今回の場合はユニットテストではカバーされていない
    • 今回の場合はE2E(エンドツーエンド)テストでカバーされる。テストが必要かどうかも検討が必要。
      • E2Eテストは変更によって壊れやすい

Information-/Content-Centric Networking (ICN/CCN) の紹介 (a-ooka)

概要

Information-Centric NetworkingまたはContent-Centric Networking (ICN/CCN; 日本語では情報指向ネットワーク技術またはコンテンツ指向ネットワーク技術) は、現状の Internet Protocol (IP) の問題を解決するために、 IPとは別のネットワーク層技術の新たな選択肢として考案された革新的技術です。以下のような特徴があります。

  • 機器ごとに割り当てられたIPアドレスではなく、コンテンツごとに割り当てられたnameを使って通信する。
  • ルータがcontent-awareになることで、キャッシングやマルチキャストを自然に(=CDNPeer to Peer等に特別な基盤に頼らずとも)サポートして、コンテンツを効率的に配布・取得するための仕組みをサポートしている。
  • コンテンツ自体にセキュリティが組み込まれている(キャッシュやマルチキャスト等の機能と両立できる)。

ユースケース

  • 大規模ライブストリーミング配信・取得
    • 要求集約・キャッシュによってサーバーに負荷をかけることなく人気急増にも即対応
    • キャッシュ・エニーキャストによってレイテンシ削減
    • 十分な数のCCNルータがあれば個人でも人気動画のProducerとして動画を配信できるようになる
  • モバイル環境でのコンテンツ取得
    • ステートレスのためハンドオーバーや障害に強い
    • コネクションレスのため同時に複数の無線メディアを利用できる
  • DDoS攻撃の軽減
    • そもそも「特定のノードを攻撃」が成り立たない
    • 重複Interestは集約され、要求のないDataも破棄

参考リンク

感想とか

タスク(プロジェクト)管理ツールの運用方法の考察(ワテ)

背景

普段からRedmineを使って管理していますが、とにかく使いにくくて困ってます。 また、自前でRedmineを設置しようとしてもサーバー要件などの要件があり、 気軽に使えるというわけでないので、もっとライトに使えるプロジェクト管理ツールがほしいです


これからタスク管理やプロジェクト管理を始めようとする人がサクッと試せ、 簡単に使い始めることができるものを探している (ストレスなく運用でき、ちゃんと情報を残せる/残しやすいものを探している)

※後で見たときに何も情報が残っていないというプロジェクトに参加するのはもう嫌だ・・

概要

「要件または要求」に記載した要件を満たすOSSを知っていれば教えてほしい

要件または要求

求めているものには以下の条件を満たすものが望ましい (記載した要件の順序が優先度を表す)

  • OSSライセンスでは提供されている
    • 改変の自由が保証されている
    • Githubなどにホストされており入手が容易なものが望ましい
  • セルフホスティングができる
    • レンタルサーバーなどに設置できるのが理想
      • おそらくこの要求を満たそうとするとPHP製といった感じになると思われる
  • 画面が痛くない
  • テンプレート機能がある
    • 以下のテンプレートを管理する機能がある
      • チケット
      • Wiki
      • プロジェクト
      • ワークフロー
  • タスク管理機能に以下の機能がある
    • カンバン機能
      • この機能が無いとこれからタスク管理を始めようという人には訴求しにくい
    • ガントチャート機能
      • ガントチャート画面からタスクの編集ができる様になっている必要あり
        • Drag&Dropで開始日、期日、進捗率を変更できることが望ましい
  • 外部連携機能がある
    • APIが実装されている
      • 普通のREST APIで可
    • 機能が足りなかった場合に他のサービスと連携できるようになっている
      • Webフックによる更新内容の通知機能といった形でも可能
  • ワークフローの設定ができる
    • あるステータスからどのステータスに変更できるのかを設定できる機能がある
  • プラグインによる拡張ができる

類似ツールのリンク

とりあえずセルフホスティングできるプロジェクト管理ツールを抜き出してみた。

条件にマッチしているかは、ちゃんと見てなくてそれっぽいもの。以下、リスト。

[雑談ネタ]OSSに感謝してみよう(fu7mu4)

  • RedHatとか、HashiCorpとかいろいろあったので、とりあえず、みんながよくつかっている、OSSに感謝してみるコーナーを設けてみた。
  • 遊び方、全員でばーっとOSSを3-5個ぐらい書いて、順番に紹介していくみたいな形

感謝・貢献してみよう

お手軽なチャットシステムありますか?(nogajun)

  • 背景
    • 大学の後期から始まるPython応用の授業でチャットボットを扱ってみようかと思案中
    • 大学で使っているGoogle ChatのAPIは学生に使わせるには荷が重い
    • 手軽に使えそうなLet’s Chatというものを見つけたけど2015年で死んでた
    • こうなったらKENT-WEBかIRCしかないのか…
      • 関係ないけどネタでKENT-WEBを検索したら、まだ活動してた
    • さて、どうしたものか
  • 要件
    • Pythonで使える
    • シンプルにメッセージの送受信できる
    • セキュリティゆるゆるでOK

参考資料

  • Creating realtime chat app in Python | Flet
    • チャット自体の作成をメインとするならFlatを使って自作する?
      • チャットを作ることが目的じゃないのでこれも違うんよね
    • チャット自体を作成することも勉強させればよくない?
  • discord.py へようこそ。
    • チャットBotの作成をメインにするならチャットはDiscordを使うという手も
      • 大学なのでdiscordは使いたくないんですよ
  • Mattermost
    • Slack互換を歌っているOSS
      • 設置がしんどいかも?
        • 設置自体はDockerでやればいいけど、それならRocket Chatのほうがシンプルかなという気がしてます
    • Python Slack SDK — Python Slack SDK
      • ボット作成にはSlackが公式に提供しているSDKが利用できると思われる
    • Pythonでmattermostなら、こういうのがあるらしい mattermost_bot · PyPI

感想とか

  • 結局、Fletでチャット作ったほうがいいかなー

告知

イベント名(開催日時)

(イベントの概要をここに書く)