ITサービスの仕組み
IT。PCで動作するプログラム、Webサービス、様々なサービスがどのような仕組みで成り立っているかをまとめた。
PC
PCはWindowsを指します。
CLI
git help -a
コマンドを打つとgitコマンドの使い方がでてくる。
このgit
はC:\Program Files\Git\cmd\git.exe
を指しており、システム環境変数にC:\Program Files\Git\cmd
を登録することでPowershellから実行できる。
つまり、git.exe
をgit2.exe
に変更するとPowershellからは
git2 help -a
で実行できる。
GUI
仕組みはCLIと同じ
Powershellからgit
と打つかgit.exe
をダブルクリックするかの違い。
Webサービス
Googleの検索画面
https://www.google.com/にアクセスすることでサーバーからhtmlが返ってくる。
ユーザがURLにアクセス -> サーバーにリクエスト ->
サーバーがHTMLをレスポンス -> ユーザがHTMLを受け取る -> ユーザが画面を閲覧
非同期通信やらJavaScriptやら
JavaScript
Google検索画面でI'm Feeling Luckyにカーソルを合わせると表示が切り替わる。
JavaScriptでMouseHoverイベントを取得、表示を切り替えている。アニメーションはCSS。
非同期通信
Googleアカウントにログインした状態だと、検索履歴が表示される。
Google検索画面を2画面開き、履歴の一覧を確認。片方の画面で履歴を削除するともう一方の画面の履歴も削除されている。
履歴の取得は、URLへのアクセスとは別にサーバーから受け取っている。
ユーザが検索欄をクリック -> サーバーにリクエスト ->
サーバーが履歴をレスポンス -> 画面の情報を更新
サーバー
24時間稼働のPC。 JavaScriptのMouseHoverイベントのように、ネットワークを介したリクエストを受け取り行動する。
PythonとJavaの比較
Pythonをよく使っているので、ある程度知っているJavaとの比較をまとめた。
開発環境のセットアップ
Python
Anaconda, Pytorchなどをインストール
Pythonインタプリタが同梱されている
Java
Eclipse, intelliJ IDEAをインストール
EclipseにはJavaコンパイラが同梱されている
エディタとコンパイラの選択肢
エディタでプログラムを記述、コンパイルして実行できる
欠点
デバッグ、フォーマッター、構文チェックなど欲しい機能は自分で追加する必要がある
外部ライブラリの導入
pip install hoge
Java
jarファイルをダウンロードして追加
構文
#1つのデータ a = 0 #型が自動で決まる(文字の0と数字の0は別のもの) #行動を1つにまとめる def aColumn(): print('あ') print('い') print('う') print('え') print('お') #複数のデータをグループにまとめる b = [2, 4, 6] #リスト c = {'文字': 'hoge', '数字': '0'} #辞書 #行動とデータのグループ class Hoge: hogeA = 0 hogeB = 'hoge' def hoge(): return hogeA #条件分岐 if hoge: print(hoge) #繰り返し for hoge in hoges: print(hoge)
//1つのデータ int a = 0; //aは数字だとPCに教える #行動を1つにまとめる public void aColumn() { System.out.println('あ'); System.out.println('い'); System.out.println('う'); System.out.println('え'); System.out.println('お'); } //複数のデータをグループにまとめる ArrayList<Integer> b = new ArrayList(2, 4, 6); //リスト HashMap<String, Integer> c = new HashMap(); //辞書 c.put('文字', 'hoge'); //データを追加 c.put('数字', '0'); //データを追加 //行動とデータのグループ class Hoge { int hogeA = 0; String hogeB = 'hoge'; public int hoge() { return hogeA; } } //条件分岐 if(hoge) { System.out.println(hoge); } //繰り返し for(int i = 0; i < hoges.length; i++) { System.out.println(hoges[I]); }