GitとGithub

前書き

個人的にGithubについて学習している際に便利と思ったり、感心したりした内容だけを抜粋して書いていきます。

おおまかな概念やどういった利便性があるのかを伝えられたらなと考えています。

Gitとは

Gitとはソフトウェアバージョン管理ツールの一つです。

Gitを使うことで、複数人で開発する時に「誰が、いつ、どのような目的でコードを修正したのか」を残せるというメリットがあります。

例えば「2023/06/12に田中さんが〇〇機能のバグ修正」を行なったとします。

これらの情報を残さない場合、以下のような場合チームメンバー全員に確認する手間と時間が増えるため効率的ではありません。

いつ修正したのか、誰が修正したのか、何のためにソースを修正したのか。

Gitはこういった情報を一括で履歴を保管してくれます。


GitHubとは

バージョン管理ツール「Git」によりチーム開発に適した機能を付け加えたサービスがGitHubです。

プロジェクトのバグ管理に使えるIssuesや、コードレビューを効率化するPull Requestsなどのチーム開発に役立つ機能が、Web上から使えるようになります。

他にもPull Requests時にレビュワーがレビューOKと判断した場合にメインブランチへ修正を結合するといったこともできます。

※メインブランチという言葉が出ましたが、これは後ほど詳しく説明するため「一旦そういうのがあるんだな〜」くらいに考えてください。


GitHub_機能説明

リポジトリとは

作成したファイルやディレクトリの状態を保存・記録しておく 「場所」 のことです。

修正を行う作業場所とイメージすると分かりやすいと思います。

Githubには大きく分類してリモートリポジトリローカルリポジトリの2つの作業場所があります。

リモートリポジトリ

ネット上にあるチームメンバー全員で共有されている作業場所です。

ここにアップされたソースはチームメンバー全員が見ることができ、かつ修正を加えることが可能です。

ローカルリポジトリ

名前の通り自分のPC上にあるチームメンバーに共有されない作業場所です。

自分自身しか使えない作業場所なので、誰にも影響を与えずに修正を行うことが可能です。

ブランチとは

Gitにはブランチという概念があります。

このブランチ機能を上手く活用すると、例えば新規機能開発とバグ修正といった複数の作業を、並行して進められるようになります。

例えばこのようにターミナルで git branchと入力するとmainが表示されます。

これはローカルリポジトリ内のブランチはmainだけありますよという結果を教えてくれています。

「*」が今いるブランチという意味で、今の作業場所はmainだよといった意味になります。

試しに新しく「test01」というブランチの作成を行います。

改めてブランチ一覧を表示してみると以下のようになります。

以下二つのブランチがありますよと結果が返ってきます。

  • main
  • test01

mainブランチが大元として存在している状態で、「バグ修正」を行いたいとなった場合に新しくブランチを作成します。

ブランチ=作業ディレクトリの複製

ただ複製するだけでなく、最終的に複製前のブランチに変更点をマージできます。

mainブランチとは別の作業場所でバグ修正を行い、レビュー、テストまで完了して問題ないと判断されれば大元のmainブランチへマージを行います。

この一連の作業後、mainブランチでも動作に問題ないと判断すればリモートリポジトリへPush(アップロード)し、最終的にはリリースといった流れになります。

ブランチ機能のないバージョン管理システムだと、一度新規機能の実装を始めてしまうと簡単なバグでも修正することが難しくなってしまいます。

新規機能の実装分がコードに反映されているため、バグを修正したとしても中途半端な状態となり、リリースができなくなります。

ヘッダーメニュー

ヘッダーのキャプチャと紐付けながら説明します。

Search or jump to…

検索ボックスです。ぱっと見で分かると思いますが、こちらに何か知りたいキーワードを入力することでキーワードにヒットした内容が表示されます。

例:Githubに公開されているOSSなどの検索が可能です。

Pull Requests

ローカルリポジトリをリモートリポジトリへアップロードするために、レビュワーへレビュー依頼を行う機能です。レビュー依頼を出し、OKが出ればリモートリポジトリのmainブランチへマージされます。

Issues

Issuesはプロジェクトやソースコードの課題を管理するための機能です。

例えばバグが見つかった場合に「〇〇機能_バグ修正」といった内容でIssuesを作成することで、そのIssuesにAssigneesするメンバーや、バグやドキュメント修正などのタグを割り当てることができます。

基本的にはIssues一つに対して1つのブランチが紐づくようにして作業を行なっていきます。

Codespaces

GitHubが提供するクラウドホステッド開発環境のこと(有料)

GitHubのWebサイトから起動することが可能で、ブラウザさえ使えればパソコンからでもタブレットからでも利用でき、WebベースのIDEとして用いることが可能。

公式から引用した有料料金も載せておきます。

Maeketplace

開発者に各種開発ツールを提供するオンラインストアのこと。

一般のユーザや企業などが開発したツールが有料で提供されています。

Explore

超いけてるトレンドのリポジトリの一覧などを確認することができます。

気に入ったものはwatchに追加することで、Issuesが作成されたことを通知してくれたりします。watchはSNSでいうフォローと同じかなと思ってます。

気になるリポジトリを見つけた場合は読んでみるのもいいかもしれませんね。

Github Apps

Githubへの拡張機能のようなものです。GoogleChromeの拡張機能や、VSCodeの拡張機能のGithub版だと思ってください。

今回は個人的に便利だと思った2つを紹介します。

GitHub Apps:Create Issue Branch

issues を作成した際に、リモートブランチ を自動で作成することが可能になる機能です。

ブランチ 名は予め設定した内容になり、一人一人がブランチを作成する手間を削減することができます。

GitHub Apps:Delete merged Branch

Pull Requests が マージ された際に、紐づいている リモートブランチ を自動で削除してくれる機能です。ブランチ が整理されていくので、レポジトリ をシンプルに保つことができます。

ざっくりですが、私が便利だと思った機能の紹介でした。

2023年度新入社員 研修レポート

 こんにちは、4月にエイブリッジに入社しました田場と内間です。無事に新人研修を終えましたので今回は研修内容と感想をお伝えします!

研修で学んだこと

  • 社会人マナー(仕事に取り組む姿勢、社会人としての心得、情報セキュリティ、傾聴力、メール作成、Slack)
  • office研修(PowerPoint、Excel)
  • プログラミング基礎研修(HTML、CSS、Java、JavaScript、
  • spring boot)

研修での感想

田場

 「二ヶ月の研修を終え、私は自分自身が大きく成長していると感じました。私は入社以前IT業界とは全く別の業界におり、ITに関して右も左もわからない状態でした。しかし、専属講師のもとで研修をこなし、また同期や先輩社員の方々にサポートしていただくことで着実にITのスキルや知識を身に付けることができました。
その他にも社会人マナー研修では社会人としての心得や傾聴力を学習し、今後仕事をしていくうえで大切なスキルを身に付けることができました。」

内間

 「研修で難しかったことはプログラミング研修のJavaについてです。私は長い間プログラミングについて学習してきましたが、Javaについては初めて学習しました。Javaはこれまで習ったC言語ととても似ていましたが、記述の方法が多少異なっていたためつられてしまうことが多く、理解するまで時間がかかりました。」

Q&A

Q:社内の雰囲気について

A:内間「明るく気軽に質問できる会社で、質問に対してもしっかり答えていただきました!」

Q:プログラミングを実際に学習して感じたことは?

A:田場「専門用語を1から覚えていかなければならず、また論理的思考力が必要であるため、かなり苦戦しました。しかし、それと同時にプログラムを実際に動かす楽しさも感じることができました!」

Q:今後の目標は何ですか?

A:田場「まずは一人前のエンジニアを目指していこうと考えており、その後ITコンサルタントを目指そうと考えています!」

A:内間「フルスタックエンジニアを目指します。そして 目標達成のため一年に一つの資格取得を目指します。!」
 *フルスタックエンジニアとは、複数のスキルを持ち、マルチに活躍できるエンジニアのこと

意気込み

田場「研修を終えこれから業務に取り組んでいくため、研修で学んだことをしっかりと活かしていきたいです!」

内間「IT業界は常に新しくなり続けているので、日々学習を続け置いていかれず、他者に教えられるようになります!」

 

 

ChatGPTを開発した会社

今や聞いたことがない人の方が、少ない「Chat-GPT」ですが開発元OpenAIの事はご存知でしょうか。
本記事では、OpenAIがどんな所かを簡易に説明できればと思います。

OpenAIについて
OpenAIですが、正式名称 OpenAI Inc.といい2015年にサンフランシスコで設立されました。
設立メンバーには数々の著名人が名を連ねています。
なんと、設立時には合計で10億ドルがOpenAIに提供されました。(日本円だと1000億円ぐらい)

最高責任者について
OpenAIの最高責任者であるサム・アルトマンという方はプログラムーであり起業家・投資家です。OpenAIの設立の際は30歳になります。
サム・アルトマンさんの経歴を簡単に紹介させていただくと19歳の時にスマホアプリの会社立ち上げ・会社を買収->Yコンビネータ社にパートナー契約し・代表に就任という凄い経歴です。

今・今後のOpenAI
その後OpenAI社は2022年11月にChatGPTを発表し、2023年の2月にChatGPT Plusを開始しています。
ChatGPTはGPT-3.5がベースモデルになりますが、最近GPT4が追加されました。

今後ChatGPTがどのように進化していくかは想像もつかないですが公開されて半年ほどで社会現象を起こすコンテンツを開発したOpenAI社がどのような会社になっていくか楽しみです。

Log4jの脆弱性について

「Log4j」とは、Javaベースでシステムやアプリを開発する際によく使われる「API」の一つです。

Log4jはJavaアプリケーションの標準的なロギングライブラリであり、処理スピードの速さや、
その多機能性から、多くの人たちから利用されいます。

機能一部
・Java開発では欠かせないデバック情報、エラー情報を出力できる機能。
・出力先が、コンソール、指定したファイル、ログサーバ等、幅広い。

Log4jの脆弱性
といった風にとても便利なLog4jですが、2021年にとある事件が起こりました。
Log4jに発見された脆弱性「Log4Shell」というものであり。
この脆弱性を利用すれば、任意のコードをリモートで実行する、
RCE(Remote Code Execution:リモートコード実行)が可能です。
原因としては、Log4jの「JNDI Lookup」という機能が問題で、攻撃者が送信した文字列を、
Log4jがログとして記録してしまうと、その文字列に記述された通信先やサーバー内部のファイルからjava classファイルを読み込んでしまい、
実行してしまうというものです。
この「Log4jShell」は容易に悪用できる点や。様々なコードをリモートで実行できる点から、
危険度の高い脆弱性といえ、Apacheソフトウェア財団からも、CVSSレートを最高段階の「10」に指定しています。

CVSSはCommon Vulnerability Scoring Systemの略で、共通脆弱性評価システムと訳されています。
脆弱性の深刻度を0から10までの数値でレーティングしています。数値が大きくなるほど深刻度が高くなり、10は深刻な脆弱性であることを示しています。

回避方法
・Log4jのバージョンをApache Log4j 2.15.0よりあとのバージョンにすることで回避可能です。
  色々な事情によりバージョンアップが難しい場合は、JndiLookupクラスをクラスパスから削除をしてください。

まとめ
便利なソフトやシステムを使っていても、バージョンが古かったりすると、
システムのセキュリティは大幅に落ちてしまいます。
こまめなバージョン確認や、使うシステムの脆弱性について調べることが、とても大切だと思います。

テスト駆動開発について

今回は、テスト駆動開発についてご紹介します。

テスト駆動開発について
テスト駆動開発とは、プログラムコードを実装する際に処理を先に書くのではなく先にテストコードを書いてから処理を実装していくような開発方法になります。

テスト駆動開発のメリットですが、「テストコードを確実に書く」という事です。

テストコードを確実に書くことにより受ける恩恵としては、以下があります。
・テストコードがベースにあるので、リファクタリングやコードの修正をおこなった時の影響がすぐにわかる -> 不具合が発生しにくい

・後半のフェーズ(統合テスト)などで致命的な問題が発生しにくい
->テストファーストで実装しているので致命的な問題が起きにくい

また、テスト駆動開発を行うと単純に後半のフェーズが楽になります。
テスト駆動開発は単体テストの自動化を想定しているので、統合テストなどのフェーズの負担が軽くなります。

以下、図を見ていただければわかりやすいかと思います。

こんな複雑な開発手法は、モダンな環境でしか行われていないのでは?とおおもいでしょうが、現在ではスタンダードに近い手法になっています。
また、この手法は開発者の精神的な負担も下げると思いますのでご自身のためにテスト駆動開発を取り入れてはいかがでしょうか。

年末年始休業のお知らせ

平素は格別のご高配を賜り、誠にありがとうございます。
株式会社エイブリッジでは誠に勝手ながら、年末年始休業日を下記のとおりとさせていただきます。

【年末年始休業日】
2021年12月28日(火)~2022年1月3日(月)
※2022年1月4日(火)より、通常営業を開始致します。
※休暇中のお問い合わせにつきましては、2022年1月4日(火)以降に対応させていただきます。

ご不便をおかけいたしますが、何卒ご了承いただきますようお願い申し上げます。

未経験からプログラマを目指すCode Bridge受講生募集中!

エイブリッジで開催している、ITエンジニア育成研修Code Bridgeは、20代~40代まで幅広い世代の方に受講いただいております!

未経験からエンジニアとしての就職や、スキルアップなど受講生各個人は目標をもって、日々学習を続けております。

社内研修として開催しておりましたが、社内外問わず、世界中どこにいても受講できるよう、環境を整備しました。

プログラミングスクールとは違いIT企業の研修を受講できるので、実践に必要な知識を習得できます。

・進化するプログラミング教材
・世界中どこにいても受講可能なオンライン教材
・求人数が多いJava言語に特化
・現役エンジニアサポート
・プログラマ未経験から転職実績あり

限定3名まで!
無料オンラインカウンセリングを常時開催中ですので、ご希望の方は特設サイトよりご連絡ください。

https://abridge-co.jp/codebridge/

年末年始のお知らせ

平素は格別のご高配を賜り、誠にありがとうございます。
株式会社エイブリッジでは誠に勝手ながら、年末年始休業日を下記のとおりとさせていただきます。

【年末年始休業日】
2020年12月28日(月)~2021年1月3日(日)
※2021年1月4日(月)より、通常営業を開始致します。
※休暇中のお問い合わせにつきましては、2021年1月4日(月)以降に対応させていただきます。

ご不便をおかけいたしますが、何卒ご了承いただきますようお願い申し上げます。
また、本日より新オフィスに移転しております。

▼新住所
〒541-0056 大阪市中央区久太郎町3丁目1-6 伊藤佑ビル大阪本町6階D-4
最寄り駅:Osaka Metro 御堂筋線 本町駅
12番出口より徒歩3分/堺筋本町駅11番出口より徒歩4分

▼連絡先
TEL:06-6147-9272
FAX:06-6147-9273
※連絡先は変わりありません

今後共、何卒宜しくお願い申し上げます。

大阪オフィス移転のお知らせ

平素は格別のご厚情を賜り、厚く御礼申し上げます。

さて、このたび弊社は12月21日より大阪オフィスを下記住所へ移転する運びとなりましたのでお知らせ申し上げます。

これを機に、社員一同気持ちを新たに益々業務に精励する所存でございますので、今後とも変わらぬご愛顧を賜りますよう、何卒宜しくお願い申し上げます。

▼新住所
〒541-0056 大阪市中央区久太郎町3丁目1-6 伊藤佑ビル大阪本町6階D-4
最寄り駅:Osaka Metro 御堂筋線 本町駅
12番出口より徒歩3分/堺筋本町駅11番出口より徒歩4分

▼連絡先
TEL:06-6147-9272
FAX:06-6147-9273
※連絡先は変わりありません

▼新オフィス業務開始日
2020年12月21日(月)

Japanマーケティングweekに出展しています

2020//9(水)~11(金)にインデックス大阪にて開催される
Japanマーケティングweekに出展しております。

商品としては、先日公開しました「アグリヘルスマネージャー」と
「リモートブリッジ」を展示しております。

ぜひご来場いただきますようお願い致します。