0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的な備忘録:Pythonのrequirements.txtとGoのgo.modが似ていると感じたので記事にしてみた

Posted at

はじめに

現在、受講中のITスクールで実施されているハッカソン形式のチーム開発において、バックエンドをGo言語で開発することになりました。

チームメンバーの方と環境構築を進める中で、PythonとGo言語に少し似ている部分があると感じたため、調べてみることにしました。

本記事は、その内容を自分用の備忘録としてまとめたものです。走り書き程度のメモとなりますが、何卒ご容赦ください。

書こうと思ったきっかけ

私自身、今回のGo言語については十分な知識がないまま、同じチームの方々と開発環境を進めることになりました。

その中で、Go言語にはrequirements.txtに相当する依存管理システムとしてGo Modulesが存在することを知り、これを深掘りしてみようと思いました。

Pythonにはある程度馴染みがあるため、Pythonとの関連性も踏まえながら、この記事にまとめてみることにしました。

Pythonのrequirements.txtとは

requirements.txtは、Pythonプロジェクトで必要な外部ライブラリやパッケージを記録したファイルです。

このファイルを使用することで、プロジェクトの依存関係を明確にし、再現性の高い環境構築が可能になります。

特徴

パッケージのリスト化:

  • 必要なパッケージとそのバージョンをリスト形式で記載します。
  • 例:
requirements.txt
Flask==2.0.1
requests>=2.25.1
numpy

環境の再現性:

pip install -r requirements.txtコマンドを使うことで、他の開発者が同じ環境を簡単に再現できます。

管理の容易さ:

プロジェクトの依存関係を一元管理でき、複数の開発者が参加する際やデプロイ時に便利です。

Go言語の依存管理(Go Modules)

Go言語では、requirements.txtに相当する依存管理システムとしてGo Modulesが使われます。

Go Modulesの特徴

go.modファイル:

  • プロジェクトの依存関係を管理するファイルで、Go Modulesの中心です。
  • 例:
go.mod
module myproject

go 1.19

require (
    github.com/gin-gonic/gin v1.8.1
    golang.org/x/crypto v0.10.0
)

go.sumファイル:

依存関係のチェックサムを記録するファイルで、セキュリティや整合性を保つ役割があります。

Go Modulesのコマンドとメリット

Go Modulesを使用すると、簡単に依存関係を管理し、プロジェクトの再現性を高めることができます。

ここまでの簡単な整理

ここまでの知識を自分なりに整理し、一度まとめてみます。

  • Python:

    • requirements.txt を使って手動でパッケージとバージョンを記録・管理。
    • コマンド例:
      pip install -r requirements.txt
      
    • シンプルな構成で依存関係を明示的に管理。
  • Go:

    • go.modgo.sum を使って、依存関係を自動的かつセキュアに管理。
    • 主なコマンド例:
      go mod init
      go get
      go mod tidy
      
    • 自動的な依存管理とGOPATH不要の柔軟性が特徴。

Pythonのrequirements.txtとGo Modulesの比較

ここまでの内容を簡単に表形式で整理しました。参考になれば幸いです。

項目 Python (requirements.txt) Go (go.mod)
目的 外部ライブラリや依存関係の管理 依存関係とバージョンの管理
記載方法 テキスト形式で手動記述 コマンドで自動生成される
依存関係の詳細管理 手動で記載する場合が多い go.sumでチェックサムを管理
環境再現性 pip install -rで再現可能 go mod tidyで再現可能
管理の仕組み 仮想環境(venv, virtualenv)推奨 Go ModulesによりGOPATH非依存で管理

共通点

  • 目的:

    • 両言語ともプロジェクトの依存関係を管理し、再現性の高い環境構築を支援。
  • 重要性:

    • 複数人での開発やCI/CD環境での活用において、再現性と一貫性を保つために欠かせないツール。

どちらの方法も適切に活用することで、開発効率を向上させることができます。

まとめ

最後まで読んでいただき、ありがとうございました。今回の記事では、自分の中でも曖昧だった知識を改めて整理し、言語化する形でまとめてみました。

本記事の内容はインターネット上の文献などを参考に作成していますが、あくまで個人の備忘録としての位置づけです。その点をご了承ください。

これからも分からないことに積極的に向き合い、アウトプットを通じて理解を深めていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?