6月7日 -プログラマーとして働くために必要な知識をまとめていく-

1.今日の目標

 将来の決定に生かせるようにプログラマーの基礎的な部分を調べてまとめる。

 

2.結果・感想

 やはり侍エンジニアの記事は分かりやすいものが多い。そしてエンジニアとして働いている方の記事はエンジニアに必要な知識だと思うので思う存分に参考にしていこうと思う。

 

3.学んだことの書き出し

SDKとはソフトウェアを開発する際に役立つサンプルコードやリファレンスなどを参考にしたもの。「Software Development Kit」(ソフトウェア開発キット)の略称。有償・無償があり無償の方が多い。

API(Application Programming Interface)とは自己のソフトウェアの一部を公開して、他のソフトウェアと機能を共有できるようにしたもの。SDKのライブラリのインターフェイスAPIと呼ぶこともある

インターフェイスとは人間とコンピュータが接する部分のこと。APIプログラマーの代わりにアプリケーションに指示を出してプログラミングしてくれているような役割をしている

APIが作られる理由はより多くの新しい機能を持ったサービスを開発するため、データの二次利用により新しいビジネスが生まれやすくするため

APIを利用する理由は開発を効率化するため、ユーザーの面倒な手続きや手間を省くため

業務システムを作りたいならJavaJavaは複雑な処理を簡単に実装できる。JVMという仮想環境で動作しており、コード起因でトラブルが起きても他の部分に影響を与えづらい。比較的動作が早く、長く使い続けられるという特徴があり、業務システムでよく利用される。

WEBサービスを作りたいならRubyRubyの最大の魅力は、新しいWEBサービスを短期間で立ち上げ、継続的な機能改善や追加などが出来ること。最近では生産性の高さを理由に社内のシステムや業務システムとしての需要も増えている。

ECサイトを作りたいならPHPPHPで出来ているWordPressを利用すればホームページやブログなどの作成が簡単にできる。作成だけでなく、ショッピングカート、問い合わせフォーム、SNSとの連携など商用での利用に向いている。

最先端アプリを作りたいならPython人工知能、統計分析、科学技術計算など数学を使う難しい処理も簡単に出来る。大量のデータを簡単に扱ったりできる。

iOSアプリを作りたいならSwift。簡単に書くことが出来て動作も高速。

Androidアプリを作りたいならJava。細かな部分まで幅広く自由にプログラミング出来る。

3Dゲームを作りたいならUnity(C#)WindowsMacスマートフォンなどの様々な機器のゲームを作れる。

プログラミング学習のコツは全てを覚えようとせず、文法を理解・把握する。そしてそれを発信してアウトプットすることが重要。

 

4.明日の課題

引き続き、プログラマー として働くために必要な知識をまとめていきたい。優良な記事やエンジニアの方の記事などを参考にしっかりまとめて自分の将来に生かせるようにまとめたい。

 

5.参考URL

 

SDKとAPIについて - りょうたくのWEBエンジニア日記

いまさら聞けない!APIとは何か?〜基礎の基礎を学ぼう〜 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

プログラミング入門者が絶対に知っておきたい基礎|25の関連用語 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

よかった。この25の用語に関しては理解できている。

プログラミング言語選びの悩み解決!作りたいものからサクッと決まる | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

プログラミングを学習するコツ、それぞれのプログラミング言語の特徴と向いていることが分かりやすくまとめられている。年収や人気ランキングも書いてあるとても優良な記事。

 

6.今後やりたいこと・高めたいスキル・優先順位

WEBアプリケーション作成、PHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

6月6日 -PHPでWEBアプリ作成-

1.今日の目標

 PHPで簡単なWEBアプリを作成する

 

2.結果・感想

 昨日は何時間も検索に時間を費やした。本日やっと謎が解けた。aタグでリンクを作り、表示する内容も変えてみたが結果変わらなかったため保存されている場所を確認した。すると同名ファイルが別階層に作られて、それを操作していた。そりゃ上手く動かないはずだ。初歩的なミス。でもこういうミスをすぐに気づけるように一歩ずつ成長していきたい。調べまくるより表示される部分を変更して変更が加えられるかを調べる。あと知恵袋でも見たが、内容をコピーしたうえでファイルを一度削除して再作成してどうか。この作業をすればすぐに解決できたと考えられる。次回はまず保存されている場所がどこになっているか、実際に目で確かめられるようにしよう。作成したコード自体はしっかり動いているようで安心。

 

今回ペイントアプリで1枚ずつサイズ変更をした。これを一括で出来るようなアプリを作成することにも将来的に挑戦したいと思う。

 

3.学んだことの書き出し

 別階層(ディレクトリ)に同名ファイルがあり、それを操作している可能性も考えながら作業。

フリー素材でダウンロードしたトランプカードの画像のサイズがバラバラのためペイントアプリを利用してサイズ変更。絵柄カードをピクセル指定で縦横比を維持したまま135px,198pxに調整。絵柄なしカードは135px,200pxなのでheightが2pxずれる、裏面とジョーカーはheightが3pxずれるが今回はとりあえず気にしない

 

 

4.明日の課題

 

 

5.参考URL

 

ペイントでサイズ変更 | Windows10 | 初心者のためのOffice講座

 

6.今後やりたいこと・高めたいスキル・優先順位

WEBアプリケーション作成、PHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

6月5日 -PHPでWEBアプリ作成-

1.今日の目標

 簡単なPHPのWEBアプリを作成する

 

2.結果・感想

 解決しない問題を何時間も調べてみたが結果、未解決のまま。

 

3.学んだことの書き出し

 基本的にPHPをHTMLに埋め込んでコードを記述

ローカル環境で作業するため、XAMPPを利用

トランプゲームを作成するためフリー素材サイトからトランプの絵柄をダウンロードし、XAMPPのhtdotsフォルダに保存

同フォルダにカードを引くボタンを表示するページとカードを表示するページのPHPファイルをそれぞれ作成

formタグにinputタグを配置しvalueを「トランプを引く」に設定

それぞれのページは動作するがactionで設定したリンク先に飛ばず

 formタグはinputタグが1つだと、input type="submit"の内容が送信されないらしいというのが原因の可能性があるとのことで、type="hidden"のinputタグを2つ増やしてみたが変わらず

 

4.明日の課題

 簡単なWEBアプリを制作する

 

5.参考URL

メソ知恵/HTML/submitの値が送信されない - メソラボ

 formタグはinputタグが1つだと、input type="submit"の内容が送信されないらしい。

6.今後やりたいこと・高めたいスキル・優先順位

PHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

6月2日 -SQL、PHP-

1.今日の目標

 SQLの基礎勉強、PHPの基礎勉強を進める

 

2.結果・感想

 progateにてSQLの基礎1.2.3、道場編を修了。服問い合わせ(サブクエリ)や結合が入ってくると難易度が増す。これは経験を重ねるしかないと思う。

 

 

3.学んだことの書き出し

 require_once 'ファイル名';

1度だけファイルを読み込む。すでに読み込まれている場合は再読み込みしない。エラーが起きた場合処理を終了する

 include('ファイル名');

エラーが起きても処理を継続する

 

4.明日の課題

 面接頑張る。

 

5.参考URL

 

 

6.今後やりたいこと・高めたいスキル・優先順位

SQLPHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

6月1日 -SQL基礎勉強-

1.今日の目標

 SQLの基礎勉強を進める

 

2.結果・感想

 SQLの基礎的な部分は簡単。サブクエリ(副問い合わせ)が出てきた辺りから難易度アップした。

 

3.学んだことの書き出し

PHP基礎2

select distinct(カラム名) from テーブル名;

指定カラムのデータから重複するデータを省いて取り出す

select カラム名 四則演算 カラム名 from テーブル名;

指定カラムのデータに足し算や掛け算をした値を取り出せる

select sum(カラム名) from テーブル名 where 条件文;

指定カラムのデータを全て合計した値を取り出す(whereで条件文を追加できる)

select avg(カラム名) from テーブル名 where 条件文;

指定したカラムの値の平均を求める

select count(*) from テーブル名 where 条件文;

検索したレコードの数を計算する

select max(カラム名) from テーブル名 where 条件文;

select max(カラム名) from テーブル名 where 条件文;

maxは最大値、minは最小値を取り出す

select 取り出すカラム名(複数可) from テーブル名 group by グループ化したいカラム名;

同一のデータを持つレコード同士がグループになる

group byを使う場合、select文で扱えるのはgroup byに指定しているカラムと集計関数のみ

group byに複数カラムを指定すると組み合わせの数だけグループができる

group byとwhere文を一緒に書く場合、group byを後に書く

group by カラム名 having 条件;

グループ化したデータをさらに絞り込める

whereの条件指定はテーブル全体、havingはグループ化されたデータに条件指定

havingを使う場合はグループ化済みのカラムを指定

 

SQLの実行順序(上から下)

from(テーブル指定)

on,join(テーブルの結合)

where(条件指定)

group by(グループ化)

count,sum,avg,minなど(関数)

having(集計後の絞り込み)

select,distinct(検索)

order by(並べ替え)

limit(取得件数の指定)

 

 PHPの基礎3

 サブクエリ(副問い合わせ)はSQLの中に入れ子で()で囲みSQL文を指定する。;は不要

サブクエリの実行後に外側のSQLが実行される

カラム名 as "表示名"

カラム名を指定した表示名で表示する

外部キーと主キーを利用して複数テーブルを紐づける

select カラム名 from テーブルA join テーブルB on テーブルA.外部キーのカラム名 = テーブルB.主キーのカラム名;

joinは外部キーがNULLのレコードは取得しない

select カラム名 from テーブル名 left join テーブル名 on テーブル名.外部キー = テーブル名.主キー;

left joinを使うと外部キーがNULLでもNULLのまま取り出せる

select from join on left join on join onと何度でも結合可能

 

 

 

 

4.明日の課題

progateのSQL編を終わらせる。

 

5.参考URL

【SQL】実行の順序 - Qiita

 

6.今後やりたいこと・高めたいスキル・優先順位

SQLPHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

5月31日 -SQLの基礎-

1.今日の目標

 データベースを操作するためにSQLについて学ぶ

 

2.結果・感想

 仕事としてプログラミングを扱っていくにあたり、DBの取り扱いについても学ぶ必要があるとのことなので取り急ぎSQLについて学ぶ。同時進行でPHPも学んでいきたい。就職活動が入るため勉強量が少し減るかもしれない。出来るだけ減らさないように努力したい。3日間は遠征のためPCいじれず。スマホにて勉強を進めた。

 SQLの内部結合と外部結合、主問い合わせと副問い合わせについてはおそらく明日以降のprogateのSQL編で学ぶことが出来ると思うので一応学んだが次回吐き出すことにする。学んだ時の参考URLは貼りつけておく。

5月に関しては(書き始めた日にちを元に考えると)18、23、24、27~30日を除いて記事を毎日更新している。「継続は力なり」を信じて今後も学びながら記事更新を続けていきたいと思う。

 

3.学んだことの書き出し

SQLの基礎編1

 SQLはデータベース言語

データベースは表(テーブル)で管理され、縦の列(カラム)と横の列(レコード)がある。テーブルは必要に応じて複数に分けられる。

select カラム名 from テーブル名;

SQLは大文字でも小文字でも問題なし

select カラム名,カラム名 from テーブル名;

,で区切って複数のカラムのデータを取り出せる

select * from テーブル名;

全てのカラムを指定できる

select * from テーブル名 where カラム名 = "値";

テーブルからカラム名の値が指定した値なら取り出す

数値データは""で囲まない(日付データは囲む)

=以外に< <= >= >といった比較演算子が使える

数値データと日付データに比較演算子が使える

where カラム名 like "%値%"

=の代わりにlikeと指定した値を含むものを取り出せる

%は何かの文字列という意味

値%を全貌一致、%値を後方一致という

not カラム名 = 値;で一致しない場合の意

where カラム名 is NULL;カラムが空のデータ

where カラム名 is not NULL;カラムがNULLではないデータ

where 条件1 and 条件2;条件1と2を満たすデータ

where 条件1 or 条件2;条件1か2どちらかを満たすデータ

order by カラム名 並び替える方法(asc昇順 desc降順);で昇順や降順に並び替える。whereの後に書けばどちらの分も有効になる

limit 取得するデータ数;で指定した数データを取得する

order byとlimitではlimitをあとに書く

 

ER図とはDB設計で使う設計手法のこと。

ER図は4つのオブジェクトで構成されている。

IE記法」と「IDEF1X記法」の2種類が最も有名。

4つのオブジェクトは以下の通り

①データのまとまり(エンティティ)

②エンティティ内の属性情報(アトリビュート)

③エンティティ同士の関係を表現する線(リレーション)

④関係性の詳細(カーディナリティ)

 

 ER図の書き方5ステップ

ユースケース図やユースケース記述を作成し、システムシナリオを確認する

②エンティティを洗い出す

③ エンティティをマスタ系(基礎情報となるデータ)とトランザクション(業務に伴い発生した出来事の詳細を記録したデータ)に分ける

④画面設計図や類似システムの画面を元にアトリビュート(属性)を洗い出す

⑤ER図に落とし込む

 

 排他制御とは共有資源(データやファイル)に対して、同時アクセスを制御する仕組み。代表的なものとして楽観ロック(楽観的排他制御)と悲観ロック(悲観的排他制御)がある。

楽観ロックとは同時アクセスが珍しい場合に用いられる。データにはロックせず、Version管理のカラムを作成し、データ取得時のVersionがデータ更新時のVersionと同一であるかを確認することで同時更新によるデータの不整合を防ぐ仕組み。データ更新時に検知するので、作業が長い場合には不向き。やっと終わったと思ったら同時アクセスがあったので最初から、ということがある。

対して悲観ロックとは同時アクセスが頻繁に起こる場合に用いられる。トランザクション開始直後に更新対象のレコードのロックを取得する。ロックされたレコードはトランザクションがコミットまたはロールバックされるまで他のトランザクションから更新されない。バツボタンを押して作業を強制終了してしまったりするとロックの解法が行われず、その場合のロック解除方法を設けるなどの対応策が必要になる。

 

ステートフルとはセッション情報を記憶してページの閲覧などを続けること。ステートレスとはセッション情報を残さずに 続けること。ステートレスのメリットは1度に送信するデータ量が増えてパフォーマンスが落ちる可能性があるが、「リクエストが自己完結型となる」「サーバー資源をすぐに開放できる」「サーバ側のシステムがシンプルになる」というメリットがある。

  

4.明日の課題

 SQLの基礎勉強を進める

 

5.参考URL

Progate | Progate - Learn to code, learn to be creative.

いつもお世話になっています。分かりやすさと情報量がすごい。

若手プログラマー必読!5分で理解できるER図の書き方5ステップ

 図説してくれているので理解しやすい

副問合せを使った複雑な条件指定:Webブラウザで気軽に学ぶ実践SQL講座(11) - @IT

【新人教育 資料】第9章 SQLへの道 〜結合編〜 - Qiita

この新人教育は初学者のDB関連の勉強にはとても参考になると思うありがたい記事。

排他制御(楽観ロック・悲観ロック)の基礎 - Qiita

こちらも図説あり。やはり文章だけではなく図があると理解が捗る。将来誰かに教えるようになるために説明図の作り方は勉強しておきたい。

ステートレスとは - Qiita

ステートフルとステートレスについて説明してある。店員と客の例えが分かりやすい。

 

6.今後やりたいこと・高めたいスキル・優先順位

SQLPHP、説明図作成、30DAYSトライアル、JQuory、Wordpressはてなブログの機能、アルゴリズムSEO、PerfectPixel、線形代数(詳細ではなく全体の流れ)

 

5月26日 -PHP基礎勉強-

1.今日の目標

 PHP基礎勉強を進める

 

2.結果・感想

PHPを学んでいる中で、formタグがWEBアプリケーションを作る上で重要な要素だと知った。同じページ内で処理を完成させるなら必要ないが、ページを遷移する際、新しいページに引き継ぐべき情報が送れなければ、ページ遷移の意味がない。

 

WEBでPHPを利用して情報を表示していくサイトを作る練習をしているが難しい。クラス内のprivateなプロパティを外部から読み込むために同クラス内に$this->プロパティ名というゲッターを用意するっていう部分は納得はした。$thisとselfの使い分け(staticがついてるかどうかで判断?)など、まだ上手く理解できないままに進めている箇所が多々ある。

 

3.学んだことの書き出し

 クラス内でクラスプロパティにアクセスする際にはselfを利用。self::$クラスプロパティ名とする

個々のインスタンスのデータに関係ない処理を行いたい場合にはクラスメソッドを利用。

public static function クラスメソッド名(){return self::$クラスプロパティ名;}

クラスメソッドを呼び出す場合はクラス名::クラスメソッド名();

クラスのプロパティやメソッドを別のクラスに引き継ぐことを継承といい、元クラスを親クラス、先クラスを子クラスという

class 子クラス名 extends 親クラス名{}

インスタンス=new 子クラス名();で親クラスのコンストラクタが実行される

 $インスタンス名 instanceof クラス名でインスタンスがそのクラスのインスタンスであればtrue、そうでなければfalseを返す

<?php if(条件式): ?>

HTML

<?php endif ?>

条件式がtrueならHTMLを実行、falseならスルー

 メソッドの上書きをオーバーライドという

privateなプロパティには子クラスからもアクセス不可

子クラスからもアクセスしたいけど外部からのアクセスはしてほしくない場合はprivateではなくprotectedにする

parent::__メソッド名(引数);と書いて親クラスのメソッドを実行すると修正箇所がひとつになり管理が楽になる

 

Sass(サス)とはCSSを便利に効率的に書ける言語

SASS記法とSCSS記法の2種類がある

SassのメリットはCSSより記述量が減る、コードの再利用可能という2点

Sassでは1つのセレクタの中に別のセレクタ入れ子にして指定出来るのでセレクタを書く回数を減らせる

入れ子構造を使うことでセレクタ:hoverを&:hoverと書ける(他の疑似クラスにも使える)

$変数名:値;で変数を定義する

使用したい場所で変数を書けば、代入されていた値が入力される

利用する箇所の前で変数定義をする

スコープ外で定義された変数は利用不可

@mixin mixin名{コード}と定義し、CSS内でセレクタ{@include mixin名;}と書けばmixinに書いたコードが利用できる

 

 

 

 

4.明日の課題

 

 

5.参考URL

 

王のアイス、セブン-イレブン「しっとりラングドシャアイス」を食べて自分が何者なのか気づいた。 - kansou

 なんて面白い記事なんだと思ったのでプログラミングに一切関係ないけど貼り付ける

 

6.今後やりたいこと・高めたいスキル・優先順位

PHPアルゴリズム、JQuory、Wordpressはてなブログの機能、線形代数(詳細ではなく全体の流れ)、SEO