質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

6178閲覧

Linuxをどこまで学習すれば良いか?またオススメの教材。

takuyaKK

総合スコア37

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

6クリップ

投稿2021/05/20 09:44

現在プログラミング歴半年ほどで、バックエンドエンジニアを目指している者です。

技術書等で、一通りCPUの仕組みだったり、OSの仕組みだったりといったことを勉強してきました。

ですがLinuxという特定の技術について掘り下げた勉強はまだしていません。

そこで質問なのですが、バックエンドエンジニアとして働く上でLINUXののコマンドとファイル構造ってどこまで知っているべきでしょうか?

現状のレベルは今日初めてchownコマンドとadduserコマンドを知りました。またファイル構造とかも例えばなぜphpをインストールすると/usr/local/etc/php以下にダウンロードされることになっているのか知りません。

大体どの程度までLinuxの知識を持っておいた方が良いのかと、そのレベルの知識を身につけるのにおすすめの書籍等がありましたら教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2021/05/20 10:29

バックエンドエンジニア とは具体的にどのような範囲の業務をするものという想定ですか?
takuyaKK

2021/05/20 11:03

バックエンドエンジニアがどこまでの業務を指すのか自分でもまだはっきりしていないですが、一般的な企業でいわゆるバックエンドエンジニア(laravel,railsなど)として求人が出されている際に、求められている業務をイメージしていただければと思います。(インフラエンジニアとは区別して頂ければと思います。)
tanat

2021/05/20 13:22

なるほど、webアプリケーションのバックエンドアプリケーションエンジニアという事ですね。 把握しました。
m.ts10806

2021/05/20 13:50

掘り下げないと無理じゃないですかね。 開発だけなら言語、フレームワークの知識だけでできます。 WebサーバーもLinuxにしなければ必要ないです。
m.ts10806

2021/05/20 15:34

それに踏み入れようとしている領域はバックエンドではなく、インフラです。
takuyaKK

2021/05/20 23:43

一般的に凄いと見なされているエンジニアの皆さんはどの領域も最低限の知識を持っていると考えているので、質問させて頂きました!
m.ts10806

2021/05/20 23:46 編集

「一般的」「凄い」「最低限」 どちらも抽象的すぎます。 アプリケーションに特化してインフラは全然な人もいます。 広く浅くが良いか狭く深くが良いかは人生設計次第です。結局自分で決めて、自分が求められる場所を探すしかありません。
takuyaKK

2021/05/20 23:51

抽象的な質問をしてしまし申し訳ありません????‍♂️自分で決めていけるようになります。
guest

回答3

0

ベストアンサー

そこで質問なのですが、バックエンドエンジニアとして働く上でLINUXののコマンドとファイル構造ってどこまで知っているべきでしょうか?

ごく短期的(というかローカルで開発するだけなら)に言うと、Dockerと実際に構築するアプリケーションで使う範囲のコマンドだけ知ってれば何とかなります。

webアプリケーションにおけるバックエンドアプリケーションエンジニアに最も必要な能力はアプリケーション構築能力なので、それさえ出来ればOSや環境の知見は後からでも追いつきます。(もちろんOSの基礎が出来ている方が良いのは確実なのですが)

ただ、

技術書等で、一通りCPUの仕組みだったり、OSの仕組みだったりといったことを勉強してきました。
ですがLinuxという特定の技術について掘り下げた勉強はまだしていません。

という事ですから、基礎的なところからしっかり学習したいのだと思います。
その場合、コマンドとファイル構造というよりは、それらを含めたLinuxの動作原理や定石を把握するのが良いかと思いますよ。
具体的には以下の様な事が思いつきます。
(基礎的な事から順にやるのが得意であれば上から順に、具体的な事を切り口にして基礎を深めるのが得意なら下から順にやってみるといいでしょう)

  • LPICを一通り勉強する

体系的にLinuxの操作や仕組みを学習することが出来ますので、一通りやっておくと環境構築やアプリケーションのデプロイ時、トラブルシューティング時にとても役に立ちます
どこまでやるかは難しいところですが、実運用無しで完全に理解するのも難しいので、スムーズに学習が進むところまでやってみて、後述の環境構築等をしてみたり、戻ってきたりで範囲を広げていくと良いです。
教材は豊富にあるので、新しいものをいくつか買ってみるなり、大きめの書店で読んでみるなりしてご自身に合いそうなものを選んでください。

  • TCP/IPについて一通り学習する

バックエンドと言うからには、ネットワーク環境を前提としたアプリケーションの構築を想定されていると思います。であれば、TCP/IPについては一通り学習しておいて損はありません。
最低限だと基本情報処理技術者試験の範囲くらいは把握しておくと良いです。
Linuxのネットワーク設定項目の各単語と役割、設定値の持つ意味辺りは理解しましょう。
書籍だと定番のマスタリングTCP/IPの入門編を理解するだけでも大分違います

  • webアプリケーションにおいて必要なサービス(Apache,Nginx,MariaDB等々)のインストールや設定、パッケージ管理について理解する

  • 一通りやったところで、Linux(メジャーなディストリビューションを選択)上にwebアプリケーションを構築してみる


この辺りを把握したら、
(最近のLinuxによるバックエンド環境は仮想環境と切っても切り離せない状態になっているので、)
仮想環境上でLinuxを扱う練習をしてみるのも良いです。

  • VMWareやVirtualBoxと言った古典的なホスト型仮想環境構築
  • それらのフロントエンドとなるVagrantによる仮想環境
  • DockerやLXCと言ったコンテナ型の仮想環境の構築

あたりを試したり学習してみると良いかなと思います。(最近のアプリケーションの開発環境はDockerで構築するのが一番楽なケースが多いです)


実運用においては、
これらの基礎の上で動く各種アプリケーションや設定、セキュリティ関係等を適切に設定する必要がある訳ですが、
教師も実務経験も無しに学習するのは中々ハードルが高いので、
まずは上記のような基礎的なところを進めてみてはいかがでしょうか?

投稿2021/05/20 10:19

編集2021/05/20 13:33
tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuyaKK

2021/05/20 23:49

ご丁寧な回答ありがとうございました! Linuxに関する名著か、lpicの参考書を一冊買ってinputしていきつつ、lpicの過去問を解いて知識の確認をしていく感じで勉強していこうかなと思います。 ありがとうございました!
guest

0

オススメの教材についてですが

バックエンドエンジニアということなので、サーバーサイドのプログラミングが主になると思いますので、Linuxの知識は、開発環境を自分で操作できる程度で大丈夫だと思います。

そういった意味だと、LPIの「Linux標準教科書」をおすすめします。
https://linuc.org/textbooks/linux/

他にもサーバー構築とかセキュリティなどの教材があります。
無料の教材なのでとりあえずコレを読むって感じでいいかなと思います。

投稿2021/06/19 05:13

take88

総合スコア1351

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuyaKK

2021/06/19 05:29

ご回答ありがとうございます。 質問日以降awsのec2で遊んでみたりして、linuxはまあ自分で開発環境とかを作る際に公式ドキュメントやキータに書いてある内容が分かる程度になっておけば十分なのかなという気になってきました。 ご紹介して頂いたサイトも中々良さそうですね!ありがとうございます!
guest

0

LinuxをLinuxとひと括りにいってると、あまり良くない。
ディストロごとに癖があるから、理解を深めるってことはディストロを知ることになることになるかも。

Red Hat系(FedoraやCentOS)とか、Debian系(Ubuntu)とか、他にも色々大なり小なり。

学んで何をやりたいかにもよりますが、
サーバーを立てたいってことなら、ディストロがタイトルについてるサーバー構築の解説本で
まずはいいんじゃないかと。
例えば、ディストロごとにwebサーバープログラムであるapache httpdの構築方法も変わりますし。

そういう話を敢えて無視して、
LinuCとかLPICの取得をやってもいいかもわからんですが、
私は取ってないので大きな事は言えません。

一度、Linuxカーネルの設計と実装に関する本を読むといいかも。(ゼミでやった。)

投稿2021/05/20 09:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuyaKK

2021/05/20 23:52

ご回答ありがとうございます。 確かにlinuxにも色々ありますもんね,,, とりあえずlpicに手を出してみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問