AOKI's copy&paste archive

高専から駅弁大学から東工大を経て大企業へ 浅く広い趣味とかキャリアの日記を

駆け出しエンジニア

現状エンジニアへ転向する気はないのだが、ポートフォリオ的にも復習的にもまとめてみるのは悪くないかなと思い

主要な用語とかを自分なりにまとめてみる

1年前の知識を元に書くので誤りがありうる点は要注意

 

言語

Java

最も一般的な言語。

Pythonと比べると変数宣言やら{}やらを厳密に書かなければならない煩雑さがあるが、複雑な機能を実装するには却って明示的で便利なんだろうなあと感じた

Pythonとかでも書けるには書けるらしいが、上記の理由もあってかマイナーらしい

PC, Androidアプリ向け。

Kotlin

Android専用

書いたことはないので詳細不明

Swift

iOS専用

書いたことはないので詳細不明

基本的な機能は同じはず、多分

SQL

データベースを触る言語。

Javaはもう1年触ってないが、SQLは現在の業務でもしばしば用いる

CRMシステムのデータの抽出や分析の業務において

もちろんビジネス総合職なので使うまでもない業務が多いが、明示的に効率的に作業するにあたり知っておくに越したことはない

現在はVlookの代用的に専らJoinを主として使っているが、Webアプリだと4大命令がメインだったかなあ。実装するものにも依るだろうけど

  • Select
  • Insert
  • Update
  • Delete

HTML

ブラウザを表示させるやつ

ChromeでもF12で見れる。モダンなサイトはクソ長くてとても読んでいられないが

aタグ<a, href="link.com">link is here<a/>のような具合で、リンクをつけられるのが特徴

ただのHTMLだとあまり面白みもないが、Javaなどからパラメータを渡すことで動的に表示できる。詳細後述

Javascript

HTMLもJavaも応用できるなんかすごいやつ

前者を攻略してからでないと使いこなせない印象

そんな感じでふんわり知識しかない

CSS

HTMLをキレイにするもの

具体的には文字色やフォントを指定する

これがないと、2000年初頭を思わせるようなただの白地に黒字の殺風景なサイトしか作れない

Bootstrap

CSSをさらに伸ばしたやつ

PythonのModuleよろしく、CSSの大まかなキレイにするセットがあるので便利

モダンなデザインが詰まっているとも言えるか

 

Webアプリケーション

ざっくり言えばブラウザでログインするサイト全般

  • SNS
  • EC
  • その他プラットフォーム

MVC

Model, View, Controllerの3つをまとめて読んだ形式の略称

www.youtube.com

Model

データをもらったり受け取ったりするのを制御する

バックエンドの肝

View

フロントエンドの肝

HTMLを介してModelで得たデータ等を表示し人間と橋渡しする

HTMLと実際に繋がるのはここ

アカウント名やお気に入り登録されたデータはバックエンドからもらって、それをHTMLの変数の欄に入れ込む

静的なHTMLでは対応できないので、HTML側にも変数の枠を作っておく

<p th:text="${accountname}">

Controller

名前の通り全体を制御する

サイトは入れ子の構造になっているので、そうした階層ごとの移動も補助する

例えば検索ボックスに入力して検索ボタンを押したら、検索結果のページを出すとか

検索結果は検索用語により異なるので、Javaによる動的な実装が不可欠

Javaだと@Controller, @RequestMappingを使っていた

この@の本質は結局最後まで理解しきれなかったが

Entity

ModelやQueryとの棲み分けというか境界の定義が正直難しい

要は変数の枠的な認識

Modelが計算式的なものだとして、Entityがその変数の枠で、その中身はQueryによってDBから取得される的な

Query

SQLの文章

予め要件は決まっているので、それに合わせて文字列変数などを随時使いつつ、定型化されたデータの具体の扱いを行う

 

GIT

コードを共有するサイト

会社のものを公開して問題になったことも以前にあったなあ

どうしてもWebアプリや他の複雑なプログラミングを1人で全部やるのは難しいので、役割分担して協力するためのツール

Clone

DNAのクローンと同じ

誰かがクラウドに上げたコードを丸パクリでコピペしてくること

そういうことができるので企業秘密を公開してはならない

とはいえそれでは社内では共有できないので、パスワードを使ったり限定公開的な機能を駆使したりする

Branch

それぞれの作業者や機能ごとに分けておくためのレイヤー的概念

AさんがContollerを触るならA Branchで作業して、Bさんは同時期にViewをB Branchで作業して混乱を避ける

Fetch

Branchを統合すること

下記のPull, Pushとセット的な概念

Pull

BranchをDLすること

Push

BranchをULすること

Conflict

Branchがうまく分けられていないことに生じる厄介事

Fetchする段階でされる側とする側で情報の競合、齟齬があることにより生まれる

 

先の例で言えば、AさんがViewを少し触ってしまうと、B Brachとの矛盾が生じる

そこでどちらかに決めろと言われる

 

他にわかりやすい例を出すなら、他のクライドファイル共有サービスが挙げられる

例えばパワーポイントをチームで編集するのにDropBoxを使っていたとき、CさんとDさんで同時にローカルで編集すると、後に保存する方は当初の名前では保存できない

これは自動的にConflictを解消させている

GITはそこを任意でどうするか個別に聞いてくれる親切さというか厄介さがある

 

これが面倒なのでBranchでの作業・責任分界は重要

 

後記

書いていると意外と忘れていたり、具体的でないと伝えにくいこともあった

空き時間を見て、ローカルで小規模に再度実装してみてもいいかもしれない

その時にははてなのコードを見やすくする機能も活用しまくりたい

 

またこれの対象読者層的な初心者には以下の動画とかもおすすめ

上述のものといい英語で恐縮だが、日本語の動画は個人的に低質に見えて。。

さすが覇権言語、競争による力学に優れる

 

www.youtube.com

 

基本情報取れるかな?

 

あと当時は超基本的な設定はお膳立てされていた

それらも一気通貫で自分でやってみれれば、かなり実力には繋げられそうだ

localhostの知識とかも曖昧なままやってたからね。。

 

参考:過去記事

 

pytho.hatenablog.com

 

pytho.hatenablog.com