25px;}}こんにちは、エンジニアの友田です。MLエンジニアを目指しています。Dockerの普及により環境構築が容易になりました。コマンドを叩けばできあがり。ぶっちゃけ、環境構築や実行環境とか分からないけど開発している、このままで良いのだろうか・・・・・と不安を感じている方も多いのではないでしょうか。今シリーズからはそんな不安を払拭する記事を目指します。第1回は、OSの役割とアプリケーション開発のポータブル性です。はじめに環境構築や実行環境について理解したい方向けです。OSはリソースを管理しているOSはソフトウェアです。どんな役割・機能を提供するソフトウェアでしょうか。OSはCPU、メモリ、ストレージ、ネットワークなどを管理しています。これらを「リソース」と呼びます。OSはリソースを管理しています。アプリケーションからリソースを直接操作することはできません。アプリケーションからリソースを操作するためにはアプリケーションからリソースを操作するためには、OSが提供するシステムコールAPIを使用する必要があります。システムコールは、OSが提供する機能をアプリケーションから利用するためのインターフェースであり、リソースの操作に必要な機能を提供します。ファイルを読み書きする場合、OSが提供するファイル操作のシステムコールAPIを呼び出す必要があります。OSが異なれば、システムコールAPIも異なるシステムコールAPIの仕様は、各OSで統一されていません。ReadFile()上記のようにmacOSとWindowsで異なります。OSに依存しない実行環境とはNodejsでファイルを読み込むAPIはreadFile()です。readFile()を呼び出せば、内部でシステムコールを呼び出しています。何度も言いますが、ファイルを直接操作していません。ファイルを操作しているのはOSです。OSのプログラム(=カーネル)が操作しています。ここで疑問を持つ方がいます。readFile()というAPIで対応できるのか。macOSとWindowsのシステムコールAPIは違いました。実行環境はOSごとに用意されてる下記画像をご覧下さい。OSごとにNode.jsが用意されています。イメージで捉えると、macOS環境でreadFile()を呼び出すと、macOS用のシステムコールread()に変換され、Windows環境でreadFile()を呼び出すと、Windows用のシステムコールReadFile()に変換されます。すれば、プログラマーはOSを意識せずとも、Node.jsのドキュメント通りに実装すれば、どの環境でも実行することができます。ポータブル性とはアプリケーション開発のポータブル性とは、異なるプラットフォーム(OS、ハードウェア、アーキテクチャなど)上でアプリケーションを動作させることができる性質のことを指します。Windows、Linux、macOSなどの異なるOS上で動作することができます。OSを意識しなくて良いという観点からの場合、Node.jsは、ポータブル性が高いと言えます。最後にリソースの操作はOSのシステムコールAPIを呼び出していること。OSごとにシステムコールが異なること。ポータブル性が高い開発は、OSを意識しなくても開発できることを学びました。次回は、実行環境について書きます。reserved無題ドキュメント。