Git-Hub について

GitHubとは

GitHub(ギットハブ) サービス提供元:米 GitHub社(保守対応も含め) ※2018年 マイクロソフトの傘下。

ソフトウェア開発のプラットフォーム。コードのバージョン管理システムにはGitを使用する。 複数人のエンジニアがリモートリポジトリとして活用する他、チーム開発を行うための機能を提供するWEBサービス。 リポジトリとしての機能を持つ他にも、コードレビュー機能やWikiなどのコミュニケーションツールとしての機能を持ち、組織規模を問わず、多くの企業・団体がソフトウェア開発で利用する。

GitHubにソースコードをホスティングすることで複数人のソフトウエア開発者と協働してコードをレビューしたり、プロジェクトを管理しつつ開発を行うことができる。

(サイト引用)GitHubの基本機能

(サイト引用)GitHubの導入からブランチ作成

(サイト引用)GitHub一連の処理の動き

[用語]

Issue課題、修正点
Pull Request
Files ChangedPull Requestで表示されるファイルの変更数
リバートバージョニングを一つ一つ戻ること
ブランチ特定の変更点から分岐点までのこと
featture機能開発
リポジトリバージョン管理によって管理されるファイルと履歴情報を保管する領域

バージョン管理基礎(バージョン管理システム)

〇Git(現場での使用率:高)【各端末へ分散型】 バージョン管理システムは大きく「集中型」と「分散型」に分けられる。

●分散型

  • Git Hubと連携されているため、サーバーの構築は不要
  • ファイルの追加や変更の履歴情報を管理することで、過去の変更箇所を確認する、特定時点の内容に戻す、などの「バージョン管理」という作業が可能となる
  • 「分散型」のバージョン管理システムでは個々人のマシン上にリポジトリを作成して開発を行うことができ、現在のチーム開発における主流となっている。
  • 分散型のバージョン管理システムであるGitでは、まず個々人のマシン上にあるリポジトリ上で作業を実施後、作業内容をネットワーク先のサーバー上などにあるリポジトリに集約する流れで開発を進めていく。 この個々人のリポジトリを「ローカルリポジトリ」、集約先となるリポジトリを「リモートリポジトリ」と呼ぶ。

・基本的な流れ
①ローカルリポジトリにリモートデータの取得
②ローカルリポジトリでファイル更新を履歴に反映
③リモートリポジトリでローカルのデータを反映

[補足]

  • コメント、承認:レビューの申請と承認 → レビューで承認がないと統合されない
  • 複数の各々のブランチを統合(マージ)するのが主流
  • ブランチを作成すると、そのコードはブランチを作成する前のコードから分析し、「別の時間を生きる」こととなる。
  • 別の時間を生きたコードは自分だけの経験(変更)を蓄える。
  • 上記プロセスに問題がなければ、親(分岐元)は「マージ(記憶を統合)を要求」する
  • マージは基本リモートリポジトリで実施する

●集中型 SVN【中央集権型】 ※管理するサーバーは自分で立てる

  • バージョンを管理するリポジトリは単一。
  • リポジトリが壊れても、スナップショットで復旧が可能。
  • Gitに比べて容易であり、学習コストが低い。
  • 特定の場所にあるリポジトリへの接続が必須となる。

(サイト引用)リポジトリ作成方法

機能

  • ブランチ保護:GitHubは直接コミット禁止によるブランチの保護(保護されたブランチ/protected branches)を提供する。
  • GitHubにホストされたリモートレポジトリはgit pushにより更新できる。 →これを許容すると意図しないバグによりpushを受けたブランチが壊れるリスクがある。
  • GitHubは「指定ブランチへの直接コミット禁止 + チェック通過Pull Requestを介したmerge/rebase許可」という機能を提供することで、ブランチに問題のあるコミットが混入しないことを可能にしている。

コマンド

git rm -rf {レポジトリ名} git clone 削除
git rm -rf .gitgit 削除
git ls-files –stageインデックスの中身を見ることができる。
git checkout「ブランチ名」ブランチへの移動
git branchブランチ一覧表示
git branch 「ブランチ名」ブランチ追加
git branch -d 「ブランチ名」ブランチ削除
git branch -D 「ブランチ名」ブランチ強制削除
git cloneリモートリポジトリのクローンを生成
git pullgitリポジトリにある最新のソースコードを取得
git addインデックスにファイル等を認識させる
git reset HEADgit add の取り消し
git commitリモートリポジトリにファイル更新の差異を登録する
git pushリモートリポジトリへ差異を連携する

[ローカルで削除した結果を反映させる方法]
git add -u # update option
git commit -m “deleted some files”
git push

add → commit → push
git push リポジトリ名(※origin) ローカルブランチ名:リモートブランチ名

Q&A

[GitHub ReadMe とは]
リポジトリに訪れた人に “このプロジェクトが何なのか” をわかりやすく伝えるための説明書のようなもの。

[ユーザー設定確認方法]
次のサイトを参考。(参考サイト

[Git Cloneの意味]
リポジトリのクローンを作成して、コンピュータ上にローカルコピーを作成し、これらの2つの場所で同期することができる。 GitHub.comにリポジトリを作成した場合、それはリモートリポジトリとなる。 リモートリポジトリをそのまま自分のローカル環境(自分のPC上)へ複製(コピー)する機能。

GitHub.com からローカルコンピューターにリポジトリのクローンを作成して、マージの競合の修正、ファイルの追加または削除、より大きなコミットのプッシュを簡単に行うことができる。 リポジトリのクローンを作成する場合は、リポジトリを GitHub.com からローカルマシンにコピーする。

リポジトリをクローンすると、その時点で GitHub.com にあるすべてのリポジトリデータの完全なコピーがプルダウンされる。 これには、プロジェクトのすべてのファイルとフォルダのすべてのバージョンも含まれる。

[インデックスがなぜ必要か]
インデックスとは、リポジトリに保存されている情報とワークツリー(作業している場所)との差(変更箇所)を記録する場所。 その差(変更箇所)だけをリポジトリに保存していく仕組み

1年前の GitHub を掘り起こしてみた件

・端末を変更していたため、Gut用のディレクトリなどはない
→つまりローカルリポジトリから作製が必要になった。

※リポジトリへの接続設定がないか、念のため確認
git remote -v:他のリポジトリへのリモート接続の一覧を表示するコマンド
→ローカルの情報?

★ローカルのリポジトリ名変更方法
https://qiita.com/youth_case/items/78ac95c62ee4ceec628f

git clone
→リモートリポジトリの環境をローカルにもってくる
git reset HEAD:git add の取り消し
→念のため、git addの取り消しを実施
git add
→変更した内容を加える

*** Please tell me who you are.

Run

git config –global user.email “you@example.com”
git config –global user.name “Your Name”

to set your account’s default identity.
Omit –global to set the identity only in this repository.

→初回扱いであり、必要な情報を以下のように登録していく

git config –global user.email “magata.mnm47@outlook.jp”
git config –global user.name “SMYT”

git commit -a
→Commit処理

【エラー】Aborting commit due to empty commit message.
→初回のコミット時にメッセージがないため

git commit –allow-empty-message -m ”

git push origin mian:main

→成功

$ git checkout -b lecture02
Switched to a new branch ‘lecture02’
→ブランチ lecture02 を作成

$ git branch -a

  • lecture02
    main
    remotes/origin/HEAD -> origin/main
    remotes/origin/main

$ git branch -vv
lecture02 c2c147a

  • main c2c147a [origin/main]

→作成されていることを確認

作成したディレクトリがGitHubに反映されない
→ファイルを中に作成しないと反映されないみたい

24/06/27 JAWS名古屋:「× Media-JAWS@中京テレビ」参加記録

前置き

先日参加したJAWS名古屋の活動、「Media-JAWS@中京テレビ」技術交流会の参加記録です。

仕事の環境が変わり、今からでも積極的に情報網を広げてフットワーク軽く成長したいと思い始まった本年度。初めてのJAWS名古屋参加でした。

発表内容

下記にて発表内容の概要記載します。

①ゼロからのデータ分析基盤立ち上げ1年間の歩み

まずは中京テレビとAWSのなりそめを下記のように紹介いただく。

★中京テレビではAWSを使用している

2016年素材のクラウド上PVシステムでAWSを利用ベンダー
2018年8月頃インターネット関連部署の担当者がアカウントを作りテスト開始内製
自社HP基盤のCDNをAWSに切り替えるグループ会社
2019年3月頃自社HP基盤をすべてAWSに切り替えるグループ会社
2020年4月頃在名4名共同配信PFでAWSを利用グループ会社
21年~事業開発にて外部でAWSのサービス制作(運用後の管理のみ依頼)グループ会社
配信関連のデータやりとりでAWS S3を利用するなどのニーズに対応。配信視聴結果データ、各基幹システムデータなどの集約の検討が始まる。内製

これら取り組みの一環で第一の課題となったのはアカウント管理(IAM)とコストパフォーマンスでした。
クレジットカード情報の残留や支払い元が退職予定の社員だった場合などと、初歩的ながら忘れがちなこと。散見するアカウントの管理、テスト設定が残っていたために課金が発生したなどと。。。

簡単ながら課題と対策を展開いただいた。この知識は有難く得た知識として別個記載することにします。

様々な問題を経て、ベンダーのサポートを受けながらも数年で内製化。
ETL(複数データの抽出・変換・書き出し)監視の環境を確立された。放送されたものはもちろん、Youtubeなどの動画コンテンツサービスやSNSを対象として、統合ダッシュボードに表示できるようになったとのことです。
※以前までは各サービスごとのダッシュボードを個別に確認されていたようです

クラウド導入の一例を簡単に知ることができたこと。また、TV局という仕事上では関りの少ない業界の取り組み、システムを知ることができたのはとても有益でした。

②固定費用0円の完全サーバーレス(AWS)なRAG構成と業務効率化事例紹介

続いても放送業界に関する内容。AWS Summitでも話題沸騰だった BedRockを利用した取り組みでした。

※BedRockの概要
・各種生成AIのモデルをAWSが提供するAPIを通して利用できるマネージドサービス。
・他のAWSサービスとの統合が簡単、多様なモデルをAWSマネージドコンソールで試せる

一例として挙げられたのは、北海道テレビ放送で放映されたコンテンツの情報をブログに自動的に書き起こすというもの。

流れとしては以下のよう。

動画のキャプチャを撮って生地の内容と関連するように指定する方法
①動画ファイルをS3に入力
②Transcordeにて、オーディオから文字を起こす
③OpenCVで記事に使用するキャプチャをとる
④キャプチャした画像を記事の段落ごとに指定するように、Lambdaで処理する
⑤キャプチャをテキストに変換・保存
⑥キャプチャを活用して記事生成
※記事作成時は文字お越しのスクリプトから記事を作成し、各段落に合うイメージをテキスト情報として読み込み

※OpenCVは、プログラミング初心者でも気軽に画像処理・画像解析を行うことができる

ただ文章や画像を並べるだけでなく、文章・トピックの間隔、最良の画像を選出、設定するようなシステム構成になっており、人間が手動で執り行ったものと同等の完成度と感じました。

AI技術が日々進化していることを実感せざるを得ない、そんな講演でした。

③自社サービスをお客様が簡単に利用出来る為にやったこと

トラフィック・シム社 で展開しているサービスとAWSを掛け合わせた内容でした。

コンテンツは「営業を介さずサービスを提供」「顧客のニーズに素早く対応」と感じました。
上記実現のために利用したAWSサービスは以下2つ。

【1】AWS Market Place

厳選されたデジタルカタログ
ユーザーはサードパーティーのソフトウェア、データ、サービスを検索、購入、デプロイ、管理してソリューションを構築し、ビジネスを運営できる。企業側は手軽に出品することができる。
また、ユーザーに発生する料金はAWS内で一元管理される。

【2】ECR Public Gallery

Amazon ECR パブリック リポジトリでホストされているコンテナイメージを検索して共有するための公開 Web サイト。
Docker Hubの代替として利用できるコンテナレジストリ。AmazonによりDocker Hubのイメージが複製され公開されている。

「ECR Public Gallery」はこの時初めて知ったサービスでした。これを活用してトラフィック・シム社は自社サービス「MediaHarbor」を以下のように展開されているとのこと。

①サービス提供元に登録し、APIキーを入手➡ライセンス管理
②EC2を立ち上げ、提供された手順書にならいコマンドを実行
③ECR Public GalleryからMediahaborをインストールすることができる?

結果として・・・

・コンテナやインストーラーは無料配布
・インストーラーですぐ構築(オンプレ/クラウド)
・利用時間でのポイント消費型であるため、使用分だけ課金される
・ユーザーの思い付きに対応して提供できる
➡数クリックで提供が早く、営業の代替ともなる

④AWSアーキテクチャ図をスマートに描く方法を試してみた

普段業務上で使用するであろう(?)インフラ構成描画ツールの比較を以下のように所感や経験を交えて説明いただきました。

・draw.io
手軽に作図できる。アイコンも豊富。割と新しい。

PlantUML
UML図作成用のテキストベースツール。アイコンは割と新しいが、思ったように配置できない

Mermaid
テキストベースの作図ツール。AWSアイコンセットがないため、色と形で工夫が必要

Diagrams
Pythonコード図で生成。アイコンセットが古い。

EraserAI
生成AIを使って自然言語(プロンプト)での作図もできるツール。図をCode化できる。

私もたまに使用するため、こんなに種類があるのだと驚きました。
普段、Cacooというものを使って……Cacooがない。。。。

所感としては状況応じて使用することが有効かなと感じました。
大衆の中で概要を説明するのであれば数メートル離れていても理解できる配色、図解を用いれるツール。AWSサービスに詳しくない人に説明する人にも同様。
詳しい方にはしっかり目で追う必要のある描画図。

これらはどのように描くかということも大事ですが、如何に説明し理解を得るかが重要なポイントだと常日頃感じています。それを実現するための「やり方」を本講演は教えてくれたと感じました。

⑤プレゼント応募システム費を97%削減した話

東海テレビ と外部ベンダーとのお付き合いでクラウド化に成功した事例。
タイトル通り、プレゼントの応募システムへのアクセス集中に耐えれるようにしたとのことです。

お話いただいたことを以下にまとめます。

【困りごと】
・全国のネットスポーツ中継
・ドラマで出演者が某事業所
・プレゼントを番組で煽りまくった(キャッシュなど)

【達成要件】
・毎分10,000は華麗にさばきたい
・ユーザーフォームは無制限
・とにかく安いやつ

【旧構成】
LB(日立ArraysOS)の背後にWebSV(Apache)×2をフロント、バックエンドにDB(Postgresql)

→セキュリティのポイント:自分で作らない
→WAF:たまに誤検知が発生することが少し悩み

【コンセプト】
・特別な設定なしで大量アクセスOK
・コストカット
・セキュリティにも気を遣いたい

【流れ】
簡単な下図を書いた後に、TOKAIコミュニケーションズ社に依頼。

●背景
・ハードウェアのサポート期限が迫っている
・メンテナンスにかかる費用負担分とコスト削減などのクラウドストサービスによるメリットを享受したい。
・サーバーに接続する信頼性の高い回線を冗長構成で実現したい。

●導入サービス
・AWS接続サービス
・AWS運用管理

●効果
・本社とAWSを結ぶ接続回線を冗長化しセキュア且つ信頼性の高い接続環境を実現
・業務システム群のAWS意向を見据えたAWS環境を構築
・専用サポートプランの採用でVPC間の通信が容易になった

【結果】
・毎分32,000件裁けるように
・ユーザー・フォーム数は無制限に
・利用費が97%安くなった(人件費を入れたらもっと!)

出来上がった本システムは5万円で運用できているらしいです。
クラウドを導入するための第一歩の動きとして、とても参考になります。

ただ、ベンダーにすべて任せては知識が付かない、という考えもあるため、ここからどのように内製に繋げたかとても気になるところです。

私も懇親会(講演の後のお食事会)に参加すればよかったでしょうか・・・

⑥terraform-provider-aws にプルリクしてマージされるまで

開発者サイドの苦労、葛藤をお話いただきました。開発側の動きは認識があまいため、やんわりとしたイメージしか持てませんでした。

概要としては、Terraform上でのプルリクエスト(略称:PR)~マージまでの苦労と葛藤です。

Terraform とは書き上げたコードからクラウド環境を構築ができるという優れものです。
AWSには同等のサービスとして、CloudFormationがありますが、、、確か汎用性や機能性の面でTerraformが推進されています。

このTerraformにAWSが 「Terraform provider aws」 というプロバイダー(ライブラリのようなもの)を提供しているようです。これにより、Terraform上での開発、展開、技術促進が捗る?ということでしょうか。見聞きしていたところ、GitHubと同じような位置づけと感じました。

以下、登壇いただいた方からのコメントです。

【プルリクするまではスムーズ】
・プルリクで従うべき手順がドキュメントに書いている
・ざっくりいえばAWS SDKを使ってリソースを探したり、変更するだけ。普段SDKでアプリ開発しているのと同じ
・どのAWSも設計がほぼ一緒であるため、既存コードを参考にすぐ書けるものもあった。
・受入テスト(実際のAWSにデプロイして実行)もコード化されてっるので、動作確認も簡単だった。

➡ただ、プルリクがマージされるまでに時間がかかる。

terraform providerにPR(プルリクエスト)を出したが、管理元に中々マージしてもらえない・・・そんな内容でしょうか。

⑦Amazon IVS: 新しいインタラクティブメディア体験を実現する

AWSご所属の Hao Chen氏に登壇いただきました。
カナダ支部(?)所属の方でご多忙の中、お時間をいただけました。

AWSで音声配信サービスを展開されており、その取り組みについて発表いただきました。
その音声配信サービスとは「Twitch」です。

※Twitch:Twitch Interactive(Amazon.com子会社)が提供するライブストリーミング配信プラットフォーム

このサービスを実現させるAWSサービス、それは「Amazon IVS」。これまた初耳です。

  • Amazon IVS
    世界中の視聴者が低レイテンシーまたはリアルタイムの動画を利用できるようにするマネージド型ライブストリーミングソリューション。これにより、魅力的なライブ体験を実現できる。
    ・Twitchを支えるネットワークとインフラ
    ・累計一年間1.35兆分ものライブ動画再生
    ・低遅延(2~5秒)のHLSストリーミング
    ・超低遅延(300ms)のWebRTCのストリーミング
    ・ストリームチャット(WebSocket)

まだアソシエイトレベルの知識しかありませんが、ライブストリーミングサービスを配信したいから・・・なんて問題は出てきていません。

今後のことを視野に学ばせていただきました。

⑧AWS上で構築する生成AI実行環境(Dify のローカル環境構築)

アクセンチュア社から今流行りの生成AIについて発表いただいた。

生成AIということで発表いただいたサービス、「Dify」。続けて初耳のサービスです。
AWSでAMIとしても提供されており、超簡単に生成AIのプライベート環境の構築ができるそうです。

  • Dify
    オープンソースのLLM(大規模言語モデル)アプリ開発プラットフォーム。RAGエンジンを使用して、エージェントから複雑なAIワークフローまでLLMアプリを編成できる。

    ・GUI画面操作で複雑なタスクを実行するAIエージェントを簡単に作成できる
    ・複数モデル(ChatGPT、Bedrock、Llamaなど)を包括的に利用可能
    ・作成したエージェントをAPIとして公開し、既存のアプリケーションに組み込むことができる
    ・LLMOps 機能が組み込まれている

かつてはチャットボットを便利だ、人件費削減だと歓喜していましたが今や簡単に作れてしまうサービスになってしまったと感じます。

本講演ではDifyを実際に使用したチャットボットの作成を実演いただきました。
GUI操作でとても見やすいですが、設定なり操作感が少し難しそうでした。

⑨完全未経験から民放連盟賞を受賞したシステムを開発するまで

最後はアイスブレイクのようなご講演でした。

HTB北海道テレビ放送(株)にご所属されている方で、どのようにAWSを社内システムにクラウドリフトされたかご講演いただきました。

フランクで明るい巧みな話術で終始リラックスして拝聴しておりました。

クラウド化する際に、雑多なインフラ構成図で外部ベンダーに持ち込んだエピソードはとても印象的であり、始めるためのアクションというのは様々なものだと改めて感じました。

おわりに

初めての名古屋JAWS、総合的に見てもまだエンジニア的観点・思考が不足していると痛感しました。
業務では得られない知見や思考、アイディアは積極的に足を運び吸収すべきだと改めて感じました。

エンジニア業界、様々な方が在籍されていますが、とても親しみやすそうな方ばかりでした。
こういった柔軟性、協調性、探求心に重きをおけるよう方々から今後いろいろ学ばせていただき、成長の糧にしていけるように活動していきたいものです。

そのため、上記でも話のありました懇親会。。。参加したかったのですが、実務経験のなさ故に弱腰になってしまいました。

次は否が応でも、弱さを引きずってでも参加しようと思います。

AWS MFA認証 を解除した件

経緯

スミスです。

断捨離がクセになってしまい、時々スマートフォンのアプリも断捨離してしまうことがたまにあります。
その際、たま~に「もう使わないだろうな」と考えずにアンインストールしてしまうことがあります。

そんなわけで、半年ほど前に「Google Authenticator」を消してしまいました。
再インストールしても、情報は残っていません。。。
二度目というのは内緒です。

対応記録

余計な対応を挟んでしまっていますが、生暖かい目で流してあげてください。

①サインインのトラブルシューティング

ルートアカウントにMFA認証をかけていました。
そのため、IDとパスワードを入力すると当然MFA認証を求められます。
画面のように下部に「MFAのトラブルシューティング」とありますので、こちらを左クリック。

画面が遷移されると、

・ステップ1:Eメールアドレスを検証する

・ステップ2:電話番号の確認

・ステップ3:サインイン

と書かれた画面に記載されています。ここの画像を取り忘れていました。ご容赦願います。

ここで問題なく処理されればいいのですが、「ステップ2:電話番号の確認」で失敗してしまいます。
着信がかかってきませんでした。

ステップ2:電話番号の確認」が失敗すると、「AWSサポートにお問い合わせください」と対応ページの提案を受けます。

早速、左クリック!

②AWSの問い合わせフォームに移動

「①」の対応にて、下記画像のサイトに遷移します。

ここで私はひとつミスをしました。「Sign-in to AWS~」という方を選択してしまいました。

ログインできないのにコンソール画面に移動するってどういうこと???
そう疑問に悩んだ挙句、安パイで 「AWS問い合わせフォーム」から問い合わせしました。
返信として、上記画像のサイトへと案内されてしまいました。そりゃそうですよね。。。

間違えないように赤枠に記載されている箇所を左クリックで選択しましょう。
すると、画面下部に入力フォームが表示されるようになります。

必要な情報を入力し送信すると、「平日の9時頃に電話がくる」旨、表示されます。
サインインして確認するようなパソコンが必須になる対応はありません。
土日に申請をしている場合は、基本的に月曜日に対応いただけます。
最高過ぎます。

③平日、電話対応

平日の9時にAWSサポートから電話を受領しました。

氏名」「登録のメールアドレス」を口頭確認した後に、MFA認証をリセットしてもらえました。

以降、AWSのルートアカウントには、「ID , パスワード」のみでサインインできるようになります。
つまり、初期登録の状態にもどることになります。

最後に

AWSサポートの方、私の断捨離がご迷惑をおかけしました。。。