「プログラミング言語」を含む日記 RSS

はてなキーワード: プログラミング言語とは

2018-11-09

こんなにAIとかアプリとか出てきてるのに

仕事ができるようになるゲームサービスって存在しないんだろう。

仕事ができるの定義は、簿記知識があるとかプログラミング言語知識があるとかじゃなくて、

日常的な判断書類作成言語操作やそういう能力向上を可能とするものはないよね。

どうにかなんないのかな

2018-11-07

村上くんのために保存しておいてあげる

大学時代マテリアル系を専攻していた。

その中でも結構有名というか、研究内容を言ったら特定される分野なので詳細は省く。

GPAバトルを制し新進気鋭の研究室に入った俺を待ち受けていたのは、今考えても普通に訴訟もんだろというレベルブラックな「現場」であった。

同業者の方はご存知と思うが、マテリアルというのは日本がかなり強い分野であり企業の注目度も高く、

なおかつ実用度が非常に高いため「金の成る木」としてバイオと並んで世界との競争が激しい分野でもある(らしい)

比較する先が世界なので、当然世界レベル努力と実績を要求されることは入って知った。

20時間ぶっ続けでサンプル作った実験結果を当日のゼミで発表すると「もうちょっと綺麗に資料作れないの?」とか平気で言ってくる准教授

真面目で頑張り屋なのにインパクトファクターを稼げずドクターを6年続けて鬱になった先輩。

めっちゃ上から目線日本国の公的手続きの手助けを求めてくる外人ポスドク

当たり前だがすべての研究無償ボランティアであり、どころか金払って受ける教育なのだが、

求められるのは仕事としてのクオリティ。遊びでやってんじゃないんだよ!

頑張って書いた論文ファーストオーサーはもちろん…教授「俺だよ」

いろいろなことに嫌気がさした俺はアカデミックの道を早々に諦め就活を頑張ることにした。

教授からは「好きでやってる研究だろう。好きなことにすら不真面目な君が社会に出てやっていける訳がない(意訳:研究室で奴隷続けろ)」と全力で人格否定を受けつつ、

少子化の影響もあってか、まあまあ有名といえる程度の大手企業にどうにか滑り込むことができた。

会社に入るとまず待っていたのは教育に次ぐ教育だった。

今時小学生でもわかるだろというようなレベル情報処理の授業、

中学生国語でやるだろというようなレベルビジネス作文の授業、

理系なら全員知ってるだろという感じの電気の授業、

あらゆる授業を仕事として受けることになる。もちろんおちんぎんが発生する。

すべての課題を秒速でクリアし、定時より手前で帰る日々がしばらく続く。

まり簡単なので研修よりは同期とのレクリエーション目的なのだろうと勝手忖度していた。

遊びながら金がもらえるとかいう夢のような環境である

ある程度の教育を終えると晴れて部署配属となる。部署SE部隊

情報出身ではない俺だったが、趣味プログラミングはかじっていたし興味もあった。

入ってすぐの仕事はあるシステム(社員が使っている自作ツール)の改修だった。

新卒簡単仕事を与えつつ、プログラミングスキルを伸ばしつつ、自分たち仕事効率化できる、という上手い采配である

プログラミングはかじっていたとはいものの、ゲームを作ろうとして挫折したり、あとはHelloWorldレベルくらいで、

まともに運用したのは精々MATLABのような特殊ものだけ。所謂プログラミング言語で利用者がいるソフトを触るのは初体験だった。

詰まっては調べを繰り返しながらも趣味の延長のような感じで楽しく取り組むことができ、上司の引いた工程3分の1で完了した。

ここで上司から10年に1人の逸材」の評価を賜る。

俺は平静を装いつつも内心歓喜した。

なにせ不真面目学生である俺は教授から目出しをくらったこしかなかったのだ。久々に得られた自己肯定感である

これはいけると判断したのか、同じく社内ツール改修の仕事をいくつか振られる。

片付けていくうち、俺のPCスキルが先輩社員と比べても高い部類にいることに気付く。

自作ツールを社内LANで動かすとファイヤーウォールに引っかかったりなどするが、先輩社員がそれを対処できないのだ。

どうやらそういう感じで動かなくなり、放置されていた部分を俺が解決しているらしい。

だがWindowsFWの設定なんてNasneアニメを撮りためたりFPS海外鯖に接続するようなヒキニートにとっては半ば常識である

陽キャパリピっぽい先輩が知らなくても無理はないが、SE部隊で長年社会人やっておいてわからないことには軽く失望する。

プログラミング派遣仕事とは言っても使役する側に知識がないのではやはり困ると思う。

ちょうどその時、働き方改革かい名目で各職場独自でやっていたシステム統合し、

営業所独自に動いていた勤休登録システムが全社的に統一されることになった。

新しいシステムUIモダンで、前のよりぶっちゃけ使いやすくすぐに慣れた。

だが先輩は勝手がわからないらしく、俺が先輩に質問する回数が減るのと同時に、先輩が俺に質問する回数が増えた。

働き方改革の魔手は勤休にとどまらず、いろいろな社内システム統合されてゆく。

頼られる頻度は増し、頼ってくる相手も先輩だけではなくなってきた。どこから噂を聞いたのか他部署の人から質問の内線が来るのである

上司に聞けや。知っとると思うがワイ新卒やぞ?と思いながら(つーか言いながら)回答する。

まあ新しいものには若い方が強いみたいな感覚理解できるが同期に聞けよ←残念同期からも同じ内容の質問が飛んでくる‥現実です‥これが現実‥!

このあたりで自己肯定感よりぶっちゃけ不信感を感じることが多くなってくる。

かに中学生以降は家族でも学校でもパソコンに強いニキではあったが、

まさか面接選抜されたひとだけで構成されている筈の会社パソコンに強いニキをやるとは思わなかったのだ。

まあそんな人が一人もいないはずがないので、多分、本当に詳しい人はうちではなく客先に居て、かつ忙しいということだろうと思うが。

さすがに面倒に感じていたある時、PukiWiki社員編集して公開できる神システムを見つける。

当然というべきか、数年前に何某が色々編集していた痕跡だけを残し、現在廃墟と化していた。が、サービスは生きていた。

ゲーム攻略を頑張って書き込んでいた時代を思い出しつつ、新しい社内システムの利用法を懇切丁寧に解説するWikiを作る。

これが大受けし営業所内でも一躍有名人に。

上司からは「その辺の社員100人より貴重」「絶対やめないでくれ」的な評価を賜る。

社内ツールの使い方記述しただけで褒められる異常事態に少しずつ価値観麻痺してくる。

ここらで満を持して炎上プロジェクトに投入される。

炎上の原因は、代々伝わる秘伝のソースと化したソースだった。

仕様書がないのはもちろん、そもそも社内環境ビルドできない、なんと.NETではないVBである

当たり前のように1ファイル50kstepを超えるソースがずらずら並ぶ様は威圧感すら感じさせた。

そんなのが現役で動いていたんだお客様セキュリティとは

上司を含めて誰もソケット通信が分からない中、元々チャットツールを作ろうとして失敗した経験のある俺は、

先輩が3人×3時間=9工数かけて解決しなかったあるバグをちょいとググっただけで10分で解決

まあぶっちゃけますエンディアン系のバグである

というようになんかやたらと活躍し、どうにかプロジェクトが終わるころには上司評価天元突破した。

地味に詳しい人は他にもいる(外にいて忙しい)ということもわかり推測は当たっている様だった。

会社に入って以降「君は社会ではやっていけない」と言った教授言葉信憑性は下がる一方である

なにせ主観的にはヒキオタがヒキオタっぽいことをやっているだけで褒められるのだ。

募る違和感の中、経団連会長室にメールが導入されたニュースと、そのコメントを見て気付いた。

俺は異世界転生したのだと。

そう、俺の就職先は、パソコン強いニキが崇め奉られる異世界だったのだ。

異世界なので何やっても訳の分からない褒め方をされる。

自席で堂々とYouTubeを見てたときには流石に上司に苦言を呈されたのだが

ゼネラリストには情報収集も必要」と言い訳すると「おお…」「さすが村上君だ…」となって許された。(マジ)

ちなみにマーケット調査名目業務YouTuberを見ることを冗談のつもりで提案したら、真面目に検討された。(マジ)

他の人にはありえないが俺だけ許されるところに落ち着くのではないだろうか。

うける。

anond:20181107032904

正直言って危機感はある。

世界と戦うを標榜していただけあって確かに研究室のレベルは高かったと思う。非情報系でもプログラミングはできて当たり前だったし。

この会社は(最近一定以上大きければどこもそうじゃないかと思うが)半官半民みたいなもんなので、皆どことなのんびりと仕事をしているように見える。

その結果、当然ながら競争力が落ちる。落ちはするが、会社組織は存続し続ける。

そして存続し続ける会社の中には「異世界」が広がっているのである

他の会社もそうだと思うが、各地で頑張ってる派遣プログラマーの方がよほど技術力が高い状態

大丈夫日本大丈夫か弊社。

まあでも転生した側としては居心地いいのでこの異世界に骨を埋めるのも悪くないと思っている。

新卒で入った会社異世界な件

大学時代マテリアル系を専攻していた。

その中でも結構有名というか、研究内容を言ったら特定される分野なので詳細は省く。

GPAバトルを制し新進気鋭の研究室に入った俺を待ち受けていたのは、今考えても普通に訴訟もんだろというレベルブラックな「現場」であった。

同業者の方はご存知と思うが、マテリアルというのは日本がかなり強い分野であり企業の注目度も高く、

なおかつ実用度が非常に高いため「金の成る木」としてバイオと並んで世界との競争が激しい分野でもある(らしい)

比較する先が世界なので、当然世界レベル努力と実績を要求されることは入って知った。

20時間ぶっ続けでサンプル作った実験結果を当日のゼミで発表すると「もうちょっと綺麗に資料作れないの?」とか平気で言ってくる准教授

真面目で頑張り屋なのにインパクトファクターを稼げずドクターを6年続けて鬱になった先輩。

めっちゃ上から目線日本国の公的手続きの手助けを求めてくる外人ポスドク

当たり前だがすべての研究無償ボランティアであり、どころか金払って受ける教育なのだが、

求められるのは仕事としてのクオリティ。遊びでやってんじゃないんだよ!

頑張って書いた論文ファーストオーサーはもちろん…教授「俺だよ」

いろいろなことに嫌気がさした俺はアカデミックの道を早々に諦め就活を頑張ることにした。

教授からは「好きでやってる研究だろう。好きなことにすら不真面目な君が社会に出てやっていける訳がない(意訳:研究室で奴隷続けろ)」と全力で人格否定を受けつつ、

少子化の影響もあってか、まあまあ有名といえる程度の大手企業にどうにか滑り込むことができた。

会社に入るとまず待っていたのは教育に次ぐ教育だった。

今時小学生でもわかるだろというようなレベル情報処理の授業、

中学生国語でやるだろというようなレベルビジネス作文の授業、

理系なら全員知ってるだろという感じの電気の授業、

あらゆる授業を仕事として受けることになる。もちろんおちんぎんが発生する。

すべての課題を秒速でクリアし、定時より手前で帰る日々がしばらく続く。

まり簡単なので研修よりは同期とのレクリエーション目的なのだろうと勝手忖度していた。

遊びながら金がもらえるとかいう夢のような環境である

ある程度の教育を終えると晴れて部署配属となる。部署SE部隊

情報出身ではない俺だったが、趣味プログラミングはかじっていたし興味もあった。

入ってすぐの仕事はあるシステム社員が使っている自作ツール)の改修だった。

新卒簡単仕事を与えつつ、プログラミングスキルを伸ばしつつ、自分たち仕事効率化できる、という上手い采配である

プログラミングはかじっていたとはいものの、ゲームを作ろうとして挫折したり、あとはHelloWorldレベルくらいで、

まともに運用したのは精々MATLABのような特殊ものだけ。所謂プログラミング言語で利用者がいるソフトを触るのは初体験だった。

詰まっては調べを繰り返しながらも趣味の延長のような感じで楽しく取り組むことができ、上司の引いた工程3分の1で完了した。

ここで上司から10年に1人の逸材」の評価を賜る。

俺は平静を装いつつも内心歓喜した。

なにせ不真面目学生である俺は教授から目出しをくらったこしかなかったのだ。久々に得られた自己肯定感である

これはいけると判断したのか、同じく社内ツール改修の仕事をいくつか振られる。

片付けていくうち、俺のPCスキルが先輩社員と比べても高い部類にいることに気付く。

自作ツールを社内LANで動かすとファイヤーウォールに引っかかったりなどするが、先輩社員がそれを対処できないのだ。

どうやらそういう感じで動かなくなり、放置されていた部分を俺が解決しているらしい。

だがWindowsFWの設定なんてNasneアニメを撮りためたりFPS海外鯖に接続するようなヒキニートにとっては半ば常識である

陽キャパリピっぽい先輩が知らなくても無理はないが、SE部隊で長年社会人やっておいてわからないことには軽く失望する。

プログラミング派遣仕事とは言っても使役する側に知識がないのではやはり困ると思う。

ちょうどその時、働き方改革かい名目で各職場独自でやっていたシステム統合し、

営業所独自に動いていた勤休登録システムが全社的に統一されることになった。

新しいシステムUIモダンで、前のよりぶっちゃけ使いやすくすぐに慣れた。

だが先輩は勝手がわからないらしく、俺が先輩に質問する回数が減るのと同時に、先輩が俺に質問する回数が増えた。

働き方改革の魔手は勤休にとどまらず、いろいろな社内システム統合されてゆく。

頼られる頻度は増し、頼ってくる相手も先輩だけではなくなってきた。どこから噂を聞いたのか他部署の人から質問の内線が来るのである

上司に聞けや。知っとると思うがワイ新卒やぞ?と思いながら(つーか言いながら)回答する。

まあ新しいものには若い方が強いみたいな感覚理解できるが同期に聞けよ←残念同期からも同じ内容の質問が飛んでくる‥現実です‥これが現実‥!

このあたりで自己肯定感よりぶっちゃけ不信感を感じることが多くなってくる。

かに中学生以降は家族でも学校でもパソコンに強いニキではあったが、

まさか面接選抜されたひとだけで構成されている筈の会社パソコンに強いニキをやるとは思わなかったのだ。

まあそんな人が一人もいないはずがないので、多分、本当に詳しい人はうちではなく客先に居て、かつ忙しいということだろうと思うが。


さすがに面倒に感じていたある時、PukiWiki社員編集して公開できる神システムを見つける。

当然というべきか、数年前に何某が色々編集していた痕跡だけを残し、現在廃墟と化していた。が、サービスは生きていた。

ゲーム攻略を頑張って書き込んでいた時代を思い出しつつ、新しい社内システムの利用法を懇切丁寧に解説するWikiを作る。

これが大受けし営業所内でも一躍有名人に。

上司からは「その辺の社員100人より貴重」「絶対やめないでくれ」的な評価を賜る。

社内ツールの使い方記述しただけで褒められる異常事態に少しずつ価値観麻痺してくる。

ここらで満を持して炎上プロジェクトに投入される。

炎上の原因は、代々伝わる秘伝のソースと化したソースだった。

仕様書がないのはもちろん、そもそも社内環境ビルドできない、なんと.NETではないVBである

当たり前のように1ファイル50kstepを超えるソースがずらずら並ぶ様は威圧感すら感じさせた。

そんなのが現役で動いていたんだお客様セキュリティとは

上司を含めて誰もソケット通信が分からない中、元々チャットツールを作ろうとして失敗した経験のある俺は、

先輩が3人×3時間=9工数かけて解決しなかったあるバグをちょいとググっただけで10分で解決

まあぶっちゃけますエンディアン系のバグである

というようになんかやたらと活躍し、どうにかプロジェクトが終わるころには上司評価天元突破した。

地味に詳しい人は他にもいる(外にいて忙しい)ということもわかり推測は当たっている様だった。

会社に入って以降「君は社会ではやっていけない」と言った教授言葉信憑性は下がる一方である

なにせ主観的にはヒキオタがヒキオタっぽいことをやっているだけで褒められるのだ。

募る違和感の中、経団連会長室にメールが導入されたニュースと、そのコメントを見て気付いた。

俺は異世界転生したのだと。

そう、俺の就職先は、パソコン強いニキが崇め奉られる異世界だったのだ。

異世界なので何やっても訳の分からない褒め方をされる。

自席で堂々とYouTubeを見てたときには流石に上司に苦言を呈されたのだが

ゼネラリストには情報収集も必要」と言い訳すると「おお…」「さすが村上君だ…」となって許された。(マジ)

ちなみにマーケット調査名目業務YouTuberを見ることを冗談のつもりで提案したら、真面目に検討された。(マジ)

他の人にはありえないが俺だけ許されるところに落ち着くのではないだろうか。

うける。

正直言って危機感はある。

世界と戦うを標榜していただけあって確かに研究室のレベルは高かったと思う。非情報系でもプログラミングはできて当たり前だったし。

この会社は(最近一定以上大きければどこもそうじゃないかと思うが)半官半民みたいなもんなので、皆どことなのんびりと仕事をしているように見える。

その結果、当然ながら競争力が落ちる。落ちはするが、会社組織は存続し続ける。

そして存続し続ける会社の中には「異世界」が広がっているのである

他の会社もそうだと思うが、各地で頑張ってる派遣プログラマーの方がよほど技術力が高い状態

大丈夫日本大丈夫か弊社。

まあでも転生した側としては居心地いいのでこの異世界に骨を埋めるのも悪くないと思っている。

2018-11-06

同じ内容の事でも言い方や言葉の選び方によって反応が違う

ってバグじゃね?

効率良いアルゴリズムで簡潔なコード書いたら機嫌を損ねて動作しないプログラミング言語とかあったら大変じゃね?

2018-11-01

増田プログラマー養成講座 その15 Webアプリの完成見本

前回は、Webアプリモックアップ(ハリボテ)を作るところまでやりました。

今回は、Webアプリ機能実装してみましょう!

 

学習の狙い

データベースを使ったWebアプリを作って、データベースの基本操作CRUDの4つ)を練習してみよう!

CRUD
  1. Create 追加
  2. Read  取得
  3. Update 更新
  4. Delete 削除

 

説明の順番について

どういう順番で説明したら分かりやすいか検討してみた。

  1. まず先に、Webアプリの完成見本を提示します。
  2. 続いて、作る過程説明しながら、各プログラム意味説明してみます

 

作業の流れ

ざっくりと、以下のような流れで作っていきます

  1. XAMPPを起動する。(参考 anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備)
  2. CodeIgniterインストールする。(参考 anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう)
  3. phpMyAdminでデータベース操作する。(参考 anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう)
  4. ApacheWebサーバーソフト)の設定を変更する。(今回説明
  5. Visual Studio Code等のツールプログラムを書く。(次回説明
  6. ブラウザー動作確認する。

 

XAMPPを起動させる

(参考 anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備)

講座その6を参考にして、XAMPPを起動させて、ApacheMySQLスタートして下さい。

 

CodeIgniterインストールする。

(参考 anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう)

講座その9を参考にして、XAMPPの中にCodeIgniterインストールしておきます

 

phpMyAdminでデータベース操作する。

(参考 anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう)

講座その11を参考にして、MySQLWebアプリ用のデータベーステーブル作成しておきます

 

データベースの設定

講座その11で、データベース練習で「chat」というデータベースを作ってみました。

そのときmessage」というテーブル作りましたが、今回Webアプリで使うテーブルとして新たに「talk」というテーブル作成します。

(補足:前に作ったテーブルmessage」の中に、テーブル名と同じ「message」という名前カラム(列)を作ってました。これでも問題ないんだけど、プログラムを書くときテーブル名とカラム名を混同しないようにしたいので、念のため作り変えときましょう。)

 

talkテーブル新規作成する

SQLで「talk」というテーブルを作る場合、以下のようなSQL文になります

CREATE TABLE `talk` (

 `id` int(11) NOT NULL,

 `create_at` datetime NOT NULL,

 `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

 `message` text NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

このSQL文をphpMyAdminで実行すれば「talkテーブルを作れます

  1. phpMyAdminを開く。
  2. データベース「chat」を開く。(前に作った「messageテーブルは使わないので削除してもOK
  3. phpMyAdmin画面の上部メニューの「SQL」をクリックする。
  4. データベース chat 上でクエリを実行する:」の空欄に上記SQL文をコピーして実行すれば、「talk」というテーブルができる。

 

これでデータベースの準備ができました。

 

Apacheの設定

CodeIgniterで使う「URL」の表示方法ちょっと変更しておきたいので、ApacheWebサーバーソフト)の設定を変更しておきます

(「URL」=情報がどこにあるのかを示すインターネット上の住所)

Apacheの「mod_rewrite」という仕組みによって、URLの扱い方を変更します。)

 

(例)

変更前: http://localhost/waf/index.php/welcome/

変更後: http://localhost/waf/welcome/

というように、URLの中にある「/index.php」という文字列を表示させない設定にします。

 

Apache設定ファイル.htaccess

Apacheの設定は「.htaccess」という名前設定ファイルを用意して変更します。

 

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]

 

.htaccess」の書き方を理解するには、「正規表現」という仕組みの知識必要です。

まだ「正規表現」を勉強してない段階では、とりあえずコピペして使って下さい。

 

Webアプリ完成見本

CodeIgniterで、

を行ないます

 

CodeIgniter設定ファイルconfig.php」の編集

config.php」をIDEやエディターで開いて、以下のように変更する。

$config['base_url'] = 'http://localhost/waf/';

$config['index_page'] = '';

 

最初は、

$config['index_page'] = 'index.php';

になってるけど、「index.php」を削除して、「''」(空)にしておく。

 

CodeIgniterデータベース設定ファイル「databese.php」の編集

「databese.php」をIDEやエディターで開いて、以下のように変更する。

$db['default'] = array(

 'dsn' => '',

 'hostname' => 'localhost',

 'username' => 'root',

 'password' => '',

 'database' => 'chat',

 'dbdriver' => 'mysqli',

(※上記のように、MySQLのusernamepasswordは「root」(管理者)のデフォルト設定を使ってます。)

 

Controllerの作成

上記フォルダの中に「Welcome.php」というファイルを作って、内容を以下のようにします。

<?php

defined('BASEPATH') or exit('No direct script access allowed');

 

class Welcome extends CI_Controller

{

 public function __construct()

 {

  parent::__construct();

  $this->load->model('chat_model');

  $this->load->helper('url');

  // $this->output->enable_profiler(true); // for debug

 }

 

 // 初期画面

 public function index()

 {

  $action = $this->input->post('action');

  if ($action == 'add') {

   $message = $this->input->post('message');

   $this->chat_model->create_message($message);

  }

  $data['talk'] = $this->chat_model->read_message();

  $this->load->view('welcome_index', $data);

 }

 

 // 更新画面

 public function update($id = '')

 {

  $id = $id ? $id : $this->input->post('id'); // id -> segment or post

  $action = $this->input->post('action');

  if ($action == 'update') {

   $message = $this->input->post('message');

   $this->chat_model->update_message($id, $message);

  }

  $data['talk'] = $this->chat_model->read_message_by_id($id);

  $this->load->view('chat_update', $data);

 }

 

 // 削除画面

 public function delete($id = '')

 {

  $id = $id ? $id : $this->input->post('id');

  $action = $this->input->post('action');

  if ($action == 'delete') {

   $this->chat_model->delete_message($id);

  }

  $data['talk'] = $this->chat_model->read_message_by_id($id);

  $this->load->view('chat_delete', $data);

 }

}

 

View作成

上記フォルダの中に「welcome_index.php」「chat_update.php」「chat_delete.php」という3つのファイルを作って、内容を以下のようにします。

 

Viewファイル「welcome_index.php」の中身

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>新規投稿</h2>

  <form action="welcome/index" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <input type="text" name="message">

   <input type="hidden" name="action" value="add">

   <button>投稿する</button>

  </form>

  <h2>投稿一覧</h2>

  <table border="1" cellpadding="5" cellspacing="0" bordercolor="#CCCCFF">

   <tr>

    <th>No.</th>

    <th>投稿日時</th>

    <th>メッセージ</th>

    <th>編集</th>

    <th>削除</th>

   </tr>

   <?php if(isset($talk)): ?>

   <?php foreach($talk as $item): ?>

   <tr>

    <td><?php echo $item['id']; ?></td>

    <td><?php echo $item['create_at']; ?></td>

    <td><?php echo $item['message']; ?></td>

    <td><a href="welcome/update/<?php echo $item['id']; ?>">編集</a></td>

    <td><a href="welcome/delete/<?php echo $item['id']; ?>">削除</a></td>

   </tr>

   <?php endforeach; ?>

   <?php endif; ?>

  </table>

 </body>

</html>

 

Viewファイル「chat_update.php」の中身

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form action="welcome/update" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <?php if (isset($talk)): ?>

   <input type="text" name="message" value="<?php echo $talk['message']; ?>">

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="update">

   <?php else: ?>

   <p>※該当するメッセージがありません。</p>

   <?php endif;?>

   <button>更新する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewファイル「chat_delete.php」の中身

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>削除</h2>

  <p>以下のメッセージを削除しますか?</p>

  <form action="welcome/delete" method="post" accept-charset="utf-8">

   <?php if (isset($talk)): ?>

   <p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="delete">

   <?php else: ?>

   <p>※該当するメッセージがありません。(または削除済です。)</p>

   <?php endif;?>

   <button>削除する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Model作成

上記フォルダの中に「Chat_model.php」というファイルを作って、内容を以下のようにします。

<?php

defined('BASEPATH') or exit('No direct script access allowed');

 

class Chat_model extends CI_Model

{

 public function __construct()

 {

  parent::__construct();

  $this->load->database();

 }

 

 // Create

 public function create_message($message = '')

 {

  $sql = "INSERT INTO talk SET create_at = ? , message = ?";

  $param = array(date('Y-m-d H:i:s'), $message);

  $this->db->query($sql, $param);

  return $this->db->insert_id();

 }

 

 // Read All

 public function read_message()

 {

  $sql = "SELECT * FROM talk";

  $query = $this->db->query($sql);

  return $query->result_array();

 }

 

 // Read by Id

 public function read_message_by_id($id = 0)

 {

  $sql = "SELECT * FROM talk WHERE id = ?";

  $param = array($id);

  $query = $this->db->query($sql, $param);

  return $query->row_array();

 }

 

 // Update

 public function update_message($id = 0, $message = '')

 {

  $sql = "UPDATE talk SET message = ? WHERE id = ?";

  $param = array($message, $id);

  $this->db->query($sql, $param);

  return $this->db->affected_rows();

 }

 

 // Delete

 public function delete_message($id = 0)

 {

  $sql = "DELETE FROM talk WHERE id = ?";

  $param = array($id);

  $this->db->query($sql, $param);

  return $this->db->affected_rows();

 }

}

 

この続きは、

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)」

へ続きます

2018-10-31

増田プログラマー養成講座 その14 Webアプリの試作品作成

前回は、SQL文法を学びました。

今回は、データベースを使ったWebアプリ制作を通じて、SQLの使い方を確認してみましょう。

 

Webアプリとは?

WebブラウザーGoogle Chromeなど)で動作するアプリのこと。

ウェブアプリケーションWeb application)は、インターネット(もしくはイントラネット)などのネットワークを介して使用するアプリケーションソフトウェアである

多くの場合、これらのアプリケーションは、Webブラウザ上で動作するプログラミング言語(たとえばJavaScript)によるプログラムWebサーバ側のプログラム協調することによって動作し、ユーザはそれをWebブラウザ上で使用する。

 

準備

Windowsパソコンを使ってたら、「XAMPP」を使ってすぐにWebアプリを試作できる。

以前の講座(その6、その9)を参考にして、XAMPPCodeIgniterを用意しておこう。

 

Webアプリ制作の流れ

最近アプリの作り方は、「デザインスプリント」と呼ばれる方法流行ってます。本やネット情報がたくさんあるので調べてみよう。

 

ざっくりと、以下のような流れです。

  1. アイデア企画)を出す。
  2. アイデアを基に、ペーパープロトタイプ(紙の試作品)を作る。=アナログの試作品ノートなどにアプリの完成予想図、画面などを描く。
  3. ペーパープロトタイプを基に、動くモック(ハリボテ)を作る。=デジタルの試作品
  4. モック画面を基に、実際のプログラム作成して、アプリを完成させる。
  5. 完成したアプリを改良していく。

それでは順番にやってみよう。

 

アイデア

以前にデータベース練習をしたとき、「後で簡単チャット(おしゃべり)ができるWebアプリ作ってみたいと思う。」と言ったので、今回のアイデアは「チャットを作る」にしよう。

 

ペーパープロトタイプ

チャット必要な画面は3つある。

  1. トップページの画面(新規投稿投稿一覧がある)
  2. 投稿更新する画面
  3. 投稿を削除する画面

ノートなどに描いて画面をデザインしてみよう。

 

モック

Webページを作るには、HTMLCSS知識必要だ。HTMLCSSを使ったことがなければ、本やネット情報勉強してみよう。

今回はCSSを使わずに、HTMLだけでシンプルWebページを作ってみよう。(練習から余計なもの無駄を省きたい。)

 

Webページ制作ツール

ブラウザーテキストエディター(またはIDE)が必要です。

特にこだわりがなければ、Microsoftの「Visual Studio Code」という無料IDE統合開発環境)を使ってみよう。

インストール方法や使い方、メニュー日本語化のやり方は、検索して調べてみよう。

 

フォルダを作る。

デスクトップに「mock」というフォルダを作る。

 

ファイルを作る。

「mock」フォルダの中に

  1. index.html」 (トップページの画面)
  2. 「edit.html」 (投稿更新する画面)
  3. delete.html」(投稿を削除する画面)

という3つのファイルを作る。

テキストエディターで保存するとき文字コードを「UTF-8」にしておく。

 

ファイルの中身を編集する。

index.htmlファイルエディターやIDEで開き、以下のような内容に編集して保存します。(コピペする場合、行頭の字下げ(インデント)の全角スペースを半角スペースに置換して下さい。)

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>新規投稿</h2>

  <form>

   <label>メッセージ</label>

   <input type="text" name="message">

   <button>投稿する</button>

  </form>

  <h2>投稿一覧</h2>

  <table border="1" cellpadding="5" cellspacing="0" bordercolor="#CCCCFF">

   <tr>

    <th>No.</th>

    <th>投稿日時</th>

    <th>メッセージ</th>

    <th>編集</th>

    <th>削除</th>

   </tr>

   <tr>

    <td>3</td>

    <td>2018-10-20 12:34:56</td>

    <td>Webアプリを作ってみる!</td>

    <td><a href="edit.html">編集</a></td>

    <td><a href="delete.html">削除</a></td>

   </tr>

   <tr>

    <td>2</td>

    <td>2018-09-10 22:33:44</td>

    <td>今日からプログラミングを勉強します。</td>

    <td>編集</td>

    <td>削除</td>

   </tr>

   <tr>

    <td>1</td>

    <td>2018-08-01 11:22:33</td>

    <td>こんにちは!</td>

    <td>編集</td>

    <td>削除</td>

   </tr>

  </table>

 </body>

</html>

 

「edit.htmlファイルエディターやIDEで開き、以下のような内容に編集して保存します。(コピペする場合、行頭の字下げ(インデント)の全角スペースを半角スペースに置換して下さい。)

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form>

   <label>メッセージ</label>

   <input type="text" name="message" value="Webアプリを作ってみる!">

   <button>更新する</button>

  </form>

  <p><a href="index.html">戻る</a></p>

 </body>

</html>

 

delete.htmlファイルエディターやIDEで開き、以下のような内容に編集して保存します。(コピペする場合、行頭の字下げ(インデント)の全角スペースを半角スペースに置換して下さい。)

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>削除</h2>

  <p>以下のメッセージを削除しますか?</p>

  <form>

   <p style="background-color:lightpink">Webアプリを作ってみる!</p>

   <button>削除する</button>

  </form>

  <p><a href="index.html">戻る</a></p>

 </body>

</html>

 

以上でモックWebページ(HTMLファイル)ができました。

Webブラウザーで「index.html」を開いてください。「編集」や「削除」、「戻る」をクリックして、チャットの画面を確認してください。

 

モックを作ってからWebサイトを作る方法

実務では「仕様書」という書類を大量に作る場合もありますが、時間と労力の無駄になっている場合が多々あります。(紙の仕様書はあまり使われる機会がない)

紙の仕様書アナログ)の代わりに、モック仕様書デジタル)として使うと、その後の段階がスムーズになります

どうしても紙でなければ困る場合以外は、モックをそのまま仕様書として使ってみましょう。

 

プロトタイプ作成ツール

モック(動くハリボテ)を作るための便利なツールがいろいろあります

 

 

 

ちょっと長くなったので、モックを基に機能実装プログラミング)するのは次回にしましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミングの練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成 ←★今ここ★

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-28

[]2018年10月27日土曜日増田

時間記事文字数文字数平均文字数中央値
001591508694.952
018710833124.542
02243916163.257
0391050116.757
04182366131.471
05141647117.659.5
06234414191.953
07234756206.852
0842276165.735
09678130121.352
1080777297.239
11818213101.444
1210411081106.545.5
13758372111.638
1445433796.440
159812920131.845.5
16757616101.551
1797903093.140
1883777193.634
19477576161.234
2099983899.441
2190803389.334
22768166107.450.5
2312412631101.950
1日1640178315108.745

頻出名詞 ()内の数字単語が含まれ記事

人(181), 自分(140), 話(82), 今(75), 女(69), 人間(61), 好き(59), 増田(56), 仕事(54), 意味(52), 最近(50), 男(49), 前(47), 気(40), 日本(40), 相手(40), 必要(37), 気持ち(37), 関係(36), 会社(36), 普通(36), 金(35), オタク(34), 嫌(34), 感じ(33), 社会(33), 結婚(31), 問題(30), 手(29), 理解(29), 他(29), 最初(28), 理由(28), ブス(28), 女性(27), 存在(26), 企業(26), 他人(26), ー(25), 絵(25), 東京(25), 目(25), 価値(24), バカ(24), 絶対(24), おっさん(24), 全部(24), あと(24), 時間(24), 頭(24), 今日(23), 結局(23), 人生(23), 時点(23), 子供(23), 経験(23), 無理(23), 生活(23), 萌え絵(22), 世界(22), 批判(21), 恋愛(21), 言葉(21), ネット(21), レベル(21), 漫画(21), 昔(21), しない(21), 病気(20), 表現(20), 一番(20), 給料(20), しよう(19), 場合(19), 誰か(19), 差別(19), スマホ(18), お金(18), 仕方(18), 別(18), 年収(18), セックス(18), 毎日(18), 能力(18), 逆(18), 行動(18), 内容(17), ただ(17), 女の子(17), 先(17), ゲーム(17), マジで(17), 最後(17), 簡単(17), 友達(17), いらすとや(17), 世の中(17), エロ(17), 方法(17), 時代(17)

頻出固有名詞 ()内の数字単語が含まれ記事

増田(56), 日本(40), 東京(25), 萌え絵(22), いらすとや(17), スマホ(17), マジで(17), じゃなくて(16), 従業員(14), 自己責任(13), 可能性(13), いない(12), なのか(12), なんだろう(11), 専業主婦(11), 経営者(11), 婚活(11), Java(11), キモ(10), AI(10), キモい(10), w(9), 安田(9), 具体的(9), 2018年(9), 消費税(9), わからん(9), twitter(8), エロゲ(8), iPhone(8), SNS(8), 労働者(8), 元増田(8), Twitter(7), ツイッター(7), いいんじゃない(7), 何度(7), 人手不足(7), 個人的(7), 笑(7), 安田純平(7), 自己責任論(7), 一緒に(6), どんだけ(6), クリエイター(6), 1年(6), IT(6), 人間関係(6), ブコメ(6), ぶっちゃけ(6), ワイ(6), Python(6), 2人(6), カス(6), 差別主義(6), Google(6), もののけ姫(6), アレ(6), 10年(5), BL(5), 普通に(5), PC(5), 分からん(5), 中国(5), 著作権(5), アシタカ(5), アップロード(5), 一方的(5), エロい(5), 学生時代(5), 豆苗(5), Ruby(5), Apple(5), お気持ち(5), 漫画村(5), エロ漫画(5), 1回(5), 外国人(5), アプリ(5), ブラック企業(5), 配置転換(5), LINE(5), アメリカ(5), ヤバい(4), ネット上(4), 出羽守(4), 1人(4), 10月26日(4), 数年(4), ギリシャ(4), 脳内(4), モテ(4), 30代(4), 欧米(4), 豊洲(4), 女子高生(4), 価値観(4), ニート(4), 多様性(4), ローソン(4), 2年(4), 非モテ(4), ここに(4), 好奇心(4), 平成(4), 大企業(4), 少数派(4), ゾーニング(4), フェミ(4), 就活(4), 3年(4), k(4), 保証人(4), 腐女子(4), ICBM(4), 知らんけど(4), 格ゲー(4), s(4), 何回(4), マウンティング(4), シリア(4), 国連(4), 事実上(4), LGBT(4), 毎日(4), きもい(4), 日本政府(4), B(4), 1000万(4), オチ(4), 現実的(4), モテる(4), ???(4), hatena(4), 二次創作(4), 少女漫画(4), 障害者(4), 高齢者(4), 仕方がない(4)

本日の注目単語 ()内の数字単語が含まれ記事

豆苗(5), ICBM(4), アシタカ(5), 10月26日(4), 泣きゲー(3), Pixel 3(3), ハウスメーカー(3), 時の人(3), 配置転換(5), LL(3), フォトショップ(3), いらすとや(17), アート(9), 倒産(8), Java(11), 自己責任論(7), 不景気(7), 従業員(14), 潰れ(14), 落ち込む(5), おなら(5), ジャーナリスト(13), 人手不足(7), ギャル(7), 景気(11), 乳首(13), 整形(6), 経営者(11), 婚活(11), 萌え絵(22), 専業主婦(11), ブス(28), 自己責任(13), iPhone(8), 遅い(9), 労働者(8), イラスト(11), 消費税(9), 完成(7)

投稿警察もどき日中に再投稿された本文の先頭20文字 ()内の数字投稿された回数

うんち (6), 今日も女は男叩き (2), 最初から (2)

頻出トラックバック先(簡易)

調子にのったブスを量産する趣味 /20181026222202(18), ■「〇ン〇ー〇」に当てはまる一番ダサい言葉を探している /20181027134503(17), ■露骨無自覚外国人差別を久しぶりに見たのだ /20181027010320(11), ■日本人のお金持ちって、日本アート関係お金使わず海外アート買うのなんでだろう /20181015010418(11), ■萌え絵についてオタクが見ていない不都合な真実 /20181027070706(9), ■東京人って東京以外全部「地方だって考えてるよね /20181027013205(8), ■GoogleからPixel 3をもらう方法 /20181027105050(8), ■男性って乳首感じないの? /20181026192127(8), ■企業は潰れてもいい? /20181027151709(7), ■非モテを救済するいい方法を思いついた! /20181027185029(6), ■【マジレス希望デートセックス教習所ってなんで無いの? /20181027003907(6), ■米って何でもよくない? /20181026191531(6), ■泥棒って無罪でいいんじゃね? /20181026234555(6), ■この漫画オチわからんのだけど /20181027141942(6), ■anond20181027133518 /20181027133913(5), ■将棋プロ選手を妙に持ち上げる雰囲気が謎 /20181027151508(5), ■哺乳類だけなんで知能が高くなったの /20181027185605(5), ■最近の若者のIT知識の無さには失望した /20181027202758(5), ■結婚願望はないけど付き合ってみたいとは思う /20181027002429(4), ■もう専業主婦希望結婚できないの? /20181027004917(4), ■米軍採用というおもしろフレーズ /20181026205731(4), ■新聞社安田を庇うことのわかりやす偽善 /20181027014053(4), ■もう女だけで社会を作ればいい /20181027102819(4), ■婚活したいけど社内片思いに終止符が打てなくて詰んだ /20181027010013(4), ■出羽守ってよくわからずに使ってる人いたのか /20181027014250(4), ■「山で迷ったら降りるのではなく登れ」 /20180817194156(4), ■TPOって死語? /20181027210100(4), ■anond20181027010338 /20181027010913(4), ■anond20181027091231 /20181027113805(4), ■2001年宇宙の旅を見たんだけど /20181027200619(4), ■弱点や苦手を表明する事はあくま相手が優しくなければ意味がない /20181027175836(4), ■嫁と喧嘩したんだが、これ俺が悪いのか? /20181027174952(4), ■24Fカップの女のだけど耳情報が処理できない /20181027203736(4), ■anond20181027155157 /20181027155824(4), ■手帳日記処分方法 /20181027112100(4), ■[Java] Javaの代わりになるプログラミング言語は何がいいかな? /20181027155327(4), ■本当に金がなくてやばいんだが /20181027205302(4), ■俺は障害者が大嫌いだ /20181027095014(4), ■自分キモすぎる /20181027223029(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5750014(3334)

2018-10-27

[] Javaの代わりになるプログラミング言語は何がいいかな?

SunOracleに買収されて、Javaの扱いも大きく変わった。無料→有料。まあ企業活動営利目的から仕方ないけど。

今後の新規案件では、できればJavaは使いたくない/使うべきではない。

JavaJVMに代わるプログラミング言語VMは、何がいいだろうか?

 

2018-10-24

増田プログラマー養成講座 その11 データベースを使ってみよう

前回まで手続言語の基本(構造プログラミングオブジェクト指向プログラミング)を見てきた。

今回から問合型言語SQLを学び、データベースDB)を使ってみよう。

 

データベースとは?

大量のデータを記録して、活用するために特化したソフトウェアが「データベース」だ。

データベースには、いろんな種類があるけど、今回学ぶのは「リレーショナル・データベース」(RDB)だ。

 

データベースの利点

データベースがなかった時代の人々は、大量のデータを扱うのに苦労していた。

データベース活用すれば、人間は脳の記憶力を補完して、膨大な知識を扱うことができるようになる。

キミも今日からデータベース活用して、記憶力を100億倍にしよう!ドラえもんの暗記パンなんて目じゃないぜ!!!

 

勉強方針

 

MySQLの起動

MySQL無料で使えるRDBです。MySQLデータベース練習をやってみよう。

それではさっそく、以前インストールしたXAMPPで、MySQLを使ってみよう。

 

  1. xamppフォルダの中にある「xampp-control.exe」をダブルクリックしてください。
  2. XAMPP Control Panel」が表示されたら、一番上の「Apache」と次の「MySQL」の「Start」ボタンクリックします。

Port(s)が「80,443」「3306」と表示されたら、PHPMySQLが使える状態になってます

 

phpMyAdminの起動

Webブラウザー(Google Chromeなど)で、「 http://localhost/phpmyadmin/ 」というURLを開く。

phpMyAdmin」という画面が出てきたらOK

 

phpMyAdminとは?

phpMyAdmin」は、MySQL管理するツールです。

phpMyAdmin」で検索したら、使い方を紹介する記事が、たくさん見つかります

 

phpMyAdmin(ピーエイピーマイアドミン)はMySQLサーバーウェブブラウザ管理するためのデータベース接続クライアントツールで、PHP実装されている。

phpMyAdminを用いることで、SQL文を記述することなく、MySQLデータベースに対して様々な操作が行える。

また、ユーザ任意SQL文を記述して実行することもできる。

 

phpMyAdminの使い方解説ページ

検索したら、こんなのがありました。

 

データベース作成

それでは練習で使うデータベースを1個作ってみよう。

後で簡単チャット(おしゃべり)ができるWebアプリ作ってみたいと思う。(Twitterをショボくしたシステムw)

チャット用のデータベースとして「chat」という名前データベースを作ろう。

 

これで「chat」という空のデータベースが1個できた。

 

テーブル作成

RDBの「テーブル」とは、データを保存する表のこと。

「chat」データベースの中に、テーブルを1個作ってみよう。

 

すると「名前」「データ型」「長さ/値」「デフォルト値」…などの空欄がたくさん並んだ画面が表示されただろう。

4段ある上から順番に、以下の通り入力してくれ。

これでテーブル構造を設定することができた。

これら4段の下にある「ストレージエンジン:」欄は「InnoDB」にしておく。

ここまで入力したら、画面右下にある「SQLプレビュー」というボタンクリックしてみよう。

すると、

CREATE TABLE `chat`.`message` (

 `id` INT NOT NULL AUTO_INCREMENT ,

 `create_at` DATETIME NOT NULL ,

 `update_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,

 `message` TEXT NOT NULL ,

 PRIMARY KEY (`id`)

) ENGINE = InnoDB;

というSQL文が表示されただろう。

これが「SQL」というデータベース操作するプログラミング言語の書き方なんだ。

今はツールを使って自動的SQL文を作成したが、SQL文法を学べば、自分で書けるようになる。

とりあえず、今はphpMyAdminでMySQL簡単操作してみよう。

 

すると、画面左側のデータベース一覧で、「chat」の下に「message」というテーブルが表示されるようになっただろう。

これでテーブル作成ができた。

 

データ作成

データベースと、その中のテーブル(表)を作ったけど、まだデータが入ってないので空のままだ。

phpMyAdminでデータを1件、追加してみよう。

すると、

INSERT INTO `message` (`id`, `create_at`, `update_at`, `message`) VALUES (NULL, '2018-10-24 12:34:56', CURRENT_TIMESTAMP, 'Hello, world!')

というSQL文が表示されただろう。

これがデータ操作するSQL文の一例だ。これも後でSQL文法を学んでみよう。

これでデータが1件追加できた。

 

こんなかんじで、とりあえず、phpMyAdminでMySQLをいろいろいじって練習してみよう。

 

まとめ

 

次回以降の予定は、

  1. データベース参考書を紹介
  2. SQL文法
  3. データベース設計方法
  4. データベースを使ったWebアプリ作成
  5. データベース理論

といったかんじです。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう ←★今ここ★

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-23

ハロー効果

ハロー効果とは新しいプログラミング言語習得するときにいつもの hello world を書いてしまうともうだいぶ出来たと錯覚してしま効果かと思ってたけどだいぶ違った。

https://qiita.com/Tommy_/items/bedc86bfcf7926d15f0e

果たして学生最初に教えるプログラミング言語はCで良いのか?ってのは情報大学学部でも議論紛糾してて、

データサイエンス教授Pythonでいいじゃんと言ってるし、

コンパイラ教授はCじゃなきゃアカンと主張しており埒が明かないですね。

2018-10-22

アニメ業界 どうしてその用語になったのか不思議言葉

動画

主にキャラクター動作に関して原画(=キーフレーム)と原画の間を埋める絵。中割ともいう。

完パケしたムービーファイル動画と呼ぶようになってしまったため混乱が生じている(むしろこっちが問題)。

ジャパニメーション

80年代英語圏流通して80年代で終了しているのに、90年代に「これからジャパニメーションだ」と日本国内で言われて未だに使っている人がいる。

現在クールジャパンと一緒に使われる場面が多い事から、半ば揶揄としての用語になっている(それに気づかずに使う人が後を絶たない)。単にアニメで通じる。

アニメーション

スタッフリストを見ると分かるように、アニメーション制作元請けスタジオ名の並びになっており、アニメ呼称制作ではなく作品に限られる。

作品自体としては、日本マンガに見られるようなキャラクターが出てくるもの以外を指す。文章としては字数に余裕がある場合や、ジャパニメーション同義ドヤ顔したい時に使われる。

フラッシュアニメ

そもそも制作ソフトFlash Playerが必要な視聴環境コンテンツを同じ名称にしてしまったのが混乱の始まり(前者はAnimate改名後者2020年に終了)。

デジタル作画として使う場面も多いのに2Dにおいて手描きと別枠になっている。IT業界ゲーム業界制作ソフト名やプログラミング言語などを冠して○○アニメと呼ぶ傾向が流入GIFCSS…等々。

IT業界 どうしてその用語になったのか不思議言葉

https://anond.hatelabo.jp/20181022115008

ビデオゲーム業界 どうしてその用語になったのか不思議言葉

https://anond.hatelabo.jp/20181022141209

2018-10-21

anond:20180624224045

その発言した増田ではないが、その発言は少し無責任な気がするので補足。

まずRはやめるべき。

R言語という統計などの計算に強いプログラミング言語がある。

逆に統計くらいでしか使わないので、貴方算術処理をバリバリやるのでなければ使用するべきではないだろう。

Python言語だが、Rに比べると汎用的であり、かつ機械学習(scikit-learn、NumPyやPandas等の統計ライブラリ主体だけど)などでも使われていてホット言語である

ホット言語だと、書籍ネット情報豊富にあるので、学ぶ分には困らないのでもしプログラミング言語をやりたいのであればPythonお勧めする。

そして、Excelマクロも一応Visual Basic for ApplicationというVBを下敷きにした言語なので、その言語を今から学ぶのであればPythonを学べばいいのではないかというのが先の発言趣旨ではないかと推察する。

しかしながら、言うまでもなく、Excelセルに書かれたデータをあれこれしたい(主に業務活用したい)という要件ならVBAが最適である

プログラム言語って得意/不得意があるから、やりたいことに合わせて使う言語を変えたほうが幸せになれます。(本格的なプロジェクトだと選択余地はなかったりするけど)

なお、おうちで触りたいというレベルなら私もPythonお勧めします。

MacでもWindowsでも同じ書き方で、Excelに囚われず色々な処理ができる。AIIoTなどで需要が高まっているので覚えておいて損はないし。

「これだけ凄いから導入許可をください」と情シスに掛け合えるレベルまで成長したら会社でも使えばいい。

ただ、対象者ちょっとしたプログラミング言語を覚えて、手間がかかることを自動処理とかしてみたいなぁと考えられる人。Excel効率よく使えれば十分って考えの人にまでお勧めするものではないので、その辺は誤解がないように。

2018-10-20

anond:20181020163346

途中で投げ出しつつはや10年。学んだ労力の割に得るものが、少ないよ。。RかPythonも学びやすくなったかな。

最初に学ぶべきプログラミング言語」は?

http://b.hatena.ne.jp/entry/s/mizchi.hatenablog.com/entry/2017/02/05/221238

(やれるようになってから。あ。これは、人がやっちゃ行けない仕事だなって、単調作業やらせたことはあるが、そんな作業、なかなかないわ。)

2018-10-18

プログラムの実行環境の用意(paiza.io)

PHPの実行環境として、XAMPPを用意してもらったけど、これは後でデータベース練習をすることも考えてチョイスしました。

MySQLを使って「SQL」(問合型言語)の練習をするため。

だけど、PHPJavaを単体で動作確認するだけなら、オンライン上の実行環境提供してくれているサービスがあるので、それを使ってもOKだと思います

自分パソコンで実行環境を用意する作業も、初心者だと分かりづらくて面倒かもしれないからね。)

 

paiza.io

「paiza」はプログラミング学習や、プログラマー就職支援してるサービスです。

 

https://paiza.io/ja

このURLブラウザーで開いて、左上にあるプルダウンメニューで、「PHP」とか「Java」を選択したら、短いコード断片をテストできます。 

 

…っていうか、月額600円の有料会員に登録して、paizaのプログラミング講座を受講した方が、俺の下手な説明を読むよりも、ずっと分かりやすいかもwww

 

まあ、俺だったら、新しいプログラミング言語習得するときは、自分で本を買ってきて、自分パソコン動作させながら学ぶけど。

でも、プログラミング勉強する一番最初なら、こういう講座で質問しながら進めてもいいと思う。せっかく選択肢としてあるのだからね。

(俺はpaizaの回し者じゃないので、念のため)

 

anond:20181015215004

anond:20181017191404

2018-10-17

増田プログラマー養成講座 その6 OOPの種類、PHPの準備

前回は、オブジェクト説明をした。

今回は、オブジェクトの使い方=オブジェクト指向プログラミングOOP)を学ぼう。

 

OOPの種類

オブジェクト指向プログラミングには、

  1. クラスベースJavaC++など)
  2. プロトタイプベースJavaScript、Ioなど)

などの分類があります

ここではクラスベースOOPを取り上げる。学習時間を短縮するために、Javaよりも簡単PHPOOPの基本を勉強してみよう。

 

PHPとは?

PHP (プログラミング言語) - Webページ作成のために用いられることの多い汎用プログラミング言語一種

PHPは誰でも手軽に使えるように工夫された、軽量なプログラム言語です。

 

PHPの準備

WindowsパソコンPHPを使うために、XAMPPというソフト無料)をインストールしよう。

 

XAMPPはいくつかバージョンがあるけど、ここではUSBメモリに保存できる「ポータブル」を使ってみよう。

↑このページにある「xampp-portable-win32-7.2.10-0-VC15.zip」をダウンロードして、ZIPファイルを展開します。

解凍して出てきた「xampp」をCドライブ直下コピーしてください。

これでPHPの実行環境XAMPP)の準備は完了です。

 

XAMPPの起動

Port(s)が「80,443」と表示されたら、XAMPP上のApacheWebサーバーソフト)が起動して、PHPが使える状態になってます

Apacheを止めるときは、「Stop」ボタンクリックします。)

 

PHPスクリプト作成

phpとは - はてなキーワード http://d.hatena.ne.jp/keyword/php

↓こんなかんじのサンプルコードがあるよね。

<?php

print("Hello, world!");

?>

プログラムソースコード増田に直接書くと、エスケープされて違う文字になるので、上の例では一部文字を置き換えてある。)

上記の表示の中で、全角文字の不等号「<」「>」を半角文字の不等号に置き換えて下さい。)

増田プログラムコード貼付けられないのか。不便だな!)

以上で、PHPプログラミングの準備と動作確認ができた。

 

PHPの基本文法

PHPの教材は、本やネット上の記事動画などたくさんある。自分で分かりやすものを探して読んでみよう。

ここではドットインストールPHP入門を参考にしてみよう。

 

3分程度の動画が30個=90分。最初は内容を理解できなくてもいいから、とりあえず全部一通り見てみよう。(1巡目は雰囲気だけつかめOK

 

「つまづきノート」の作成

2巡目以降は分からないことがあったらノート等にメモして、後で1つずつ解明していこう。

著者あとがき

 

私はGitを学ぶのに、実はとても苦労しました。それと同時に、「きっと同じように困っている人が他にもたくさんいるはずだ」と考えました。「理解するのに数日かかることを、短い時間でパパッと学べるコンテンツを作りたい」そう思いつき、「マンガでわかるGit 第1話」個人サイトにて公開したところ、いきなり、はてなブックマークで800ブックマークされました。

 

“つまづきポイント”を先回りするために

私は、Gitを使い始めて以降、わからないことがあったら「つまづいたこノート」に書いてきました。なお、本書の執筆にあたっても、日々勉強しながら解説を書くという形でした。わかばちゃんが「なんでこうなるの?」と疑問に思う部分は、私が過去につまづいた部分です。

 

ドットインストール PHP入門
(1) PHP利用の準備

 

(2) 構造プログラミングの基礎知識

 

(3) オブジェクト指向プログラミングの基礎知識

 

(4) その他、Webサイト作成一般的知識

 

(今回は、PHPの準備、PHPの基本文法理解までで終わってしまったorz

URLリンク10個以上貼ると、日記が書き込めないみたいなので、増田では記事を分割せざるを得ない。)

次回は、OOP関係している内容(#18~#24)を一緒に確認してみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備 ←★今ここ★

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

増田プログラマー養成講座 その5 オブジェクトとは何か?

今回は、手続プログラミングの後半となる「オブジェクト指向プログラミング」(OOP)について学ぼう。

OOPは内容が多いので数回に分けて説明してみます。(説明が下手だったらフォローお願いしますw)

 

オブジェクトとは何か?

オブジェクトobject)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象抽象化する概念である

 

オブジェクト指向プログラミングパラダイムでは、関連するデータを束ね、代入、演算手続き(関数メソッドなど)を介した受け渡しといった操作対象にでき、またメッセージ受け手になれる実体オブジェクトと呼ぶ。

多くの場合オブジェクトは他のオブジェクトを要素として格納することができ、複雑なデータ構造表現できる。

 

Wikipedia説明は分かりづらいね。(初心者だったときの私が読んだら意味理解できないと思う)

 

増田プログラマー養成講座 その2 https://anond.hatelabo.jp/20181016164341説明した「プログラム構成要素」を思い出して下さい。

プログラムは、

  1. データ
  2. 「処理」

の2つから成り立っている。

プログラミング歴史は、この「データ」と「処理」をどうやって使いやすくするか?の試行錯誤になってる。

 

Java入門書にも、データ構造について説明があっただろ?

 

構造体の発展=オブジェクト

複数データをまとめて入れておく箱は便利な道具なので、だいたいどのプログラミング言語でも用意されている。

この講座では、複数データをまとめて入れる箱を「構造体」と呼ぶことにしよう。

 

構造体の各箱には、普通データ」を入れておくんだけど、データだけじゃなくて「処理」も入れておけると便利だ。

データ」も「処理」も保管できるように拡張した構造体に、「オブジェクト」という名前を付けた。

オブジェクトとは、言い方を変えれば、「データ」に「処理」をくっ付けたものなんだ。

 

このWebページ最初の方に「図: オブジェクトフィールド(データ)とメソッドを一つにまとめたもの」という説明図があるだろ?

この図で、オブジェクトの中に、いくつか箱があるけど、

なんだ。

オブジェクトそれ自体特別ものじゃなくて、ただの箱でしかない。データ構造一種であることが分かっただろうか?

今の段階では、難しく考えなくていい。

ややこしくなるのはこの後だ。オブジェクトを使うときに「なんでそんな使い方するの?」という段階になってからだ。(気を緩めないように、ちょっと脅しておこうw)

 

クロージャ

が「オブジェクト」なら、その反対に、

もあるんじゃないか?と思ったそこのキミ。正解!

「処理」に「データ」をくっ付けた仕組みもあって、「クロージャー」と呼ばれてる。

 

クロージャ(closure)、関数閉包はプログラミング言語における関数オブジェクト一種

いくつかの言語ではラムダ式無名関数で実現している。

引数以外の変数を実行時の環境ではなく、自身定義された環境(静的スコープ)において解決することを特徴とする。

関数とそれを評価する環境ペアであるともいえる。

オブジェクトインスタンス変数とは、オブジェクトインスタンスではなく関数の呼び出しに束縛されているという点で異なる。

この説明文読んで、クロージャーの仕組みがスパッと理解できる初心者っていねーだろ?(いたらビビるw)

Wikipedia説明は「何言ってるか分かんない」状態だけど、サンプルを動作させてみれば、仕組みは簡単に分かります

 

第1級オブジェクト

ここまでの説明で、「プログラミング言語は、機能自由拡張できる」と分かっただろう。

から、「データ」と「処理」の扱い方を工夫する歴史の中で、「オブジェクト」という仕組みを閃いちゃった奴がいたんだねw

 

オブジェクトの特徴をもう一度振り返ってみよう。

普段は「データ」をぶち込んでおく箱の集合体に、処理も入れられるように改造しちゃったのが「オブジェクト」だったね?

…ってことは、処理とデータ水と油みたいに別々のものじゃなくて、実は処理もデータと同じように扱えるものだってことになるよね?

そうなんです!

実は「データ」と「処理」は全然別なものじゃなくて、同じようなものとして(扱おうと思えば)扱えるんです!

それで、このデータとして扱えるような「処理」に名前を付けてあげて、「第1級関数」とか「第1級オブジェクト」と呼んでます

(「第1級データ」という呼び名が使われてないのは、データデータとして扱えるのは当然なので、わざわざ第1級データという呼び名を付ける必要がないから)

 

第一オブジェクトファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数戻り値としての)受け渡しといったその言語における基本的操作制限なしに使用できる対象のことである

ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクト意味しない。第一オブジェクトは「第一データ型に属す」という。

言語によって異なるが、第一オブジェクトは概ね次のような性質もつ

上記説明文の中で「制限なしに使用できる」って部分が重要

 

第一関数(first-class function、ファーストクラスファンクション)とは、関数第一オブジェクトとして扱うことのできるプログラミング言語性質、またはそのような関数のことである

その場合その関数は、型のある言語では function typeなどと呼ばれる型を持ち、またその値は関数オブジェクトなどになる。

具体的にはプログラムの実行時に生成され、データ構造に含めることができ、他の関数引数として渡したり、戻り値として返したりすることのできる関数をいう。

上記説明文の中で「データ構造に含めることができ、」って部分が重要

 

フリーパスでどこでも入れちゃうVIPみたいだからファーストクラス(第1級)と称されてるんだね?

ドラえもんの「オールマイティーパス」を持ってる奴みたいなのが、「第一オブジェクト」「第一関数」ってわけ。

ドラえもんオールマイティーパスは、どこでも入れる通行証です。

これを係員に見せるだけで、どんな交通機関でも無賃乗車できて、どんな有料施設でも無料入場できます

通常なら入ることの許されない立ち入り禁止区域でさえ入れます

 

 

オブジェクトまとめ

 

混乱するようなら、上記説明で、クロージャー以降の話はとりあえず無視してください。

 

参考

オブジェクト説明をどうしようか?と考えるとき、参考にしたページも紹介しておきます

 

 

次回、オブジェクトの使い方=オブジェクト指向プログラミングについて学びましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か? ←★今ここ★

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-16

プログラミング言語って何個あるんだろう

GitHubで分類されてるプログラミング言語は480ある。ただそれはGitHubによって認識されてる分だけであって、よりマイナーものを考えればもっとあるだろう。

まり毎年世のオタク研究者学生たちが新しい言語を作ってるのを加味すると、

毎年平均1000言語程度は生み出されてるんじゃ無いだろうか。

そのスピードは昔ほど衰えてるだろうけど、大体今までで1万個くらい作られてるんじゃ無いだろうか。

増田プログラマー養成講座 その4 子ども向け教材「Scratch

今回は、子ども向けプログラミング学習教材「Scratch」(スクラッチ)を使って、一番簡単構造プログラミング手法を学んでみよう。

 

Scratchとは何か?

Scratch (スクラッチ) は、MITメディアラボが開発したプログラミング言語学習環境である

初心者最初に正しい構文の書き方を覚えること無く結果を得られる、遊び心のある実験インタラクティブアニメーションゲームなどの製作を通してさらなる学習のやる気を起こさせることを意図している。

 

 

タイルプログラミングとは何か?

プログラムのパーツをブロックで並べて、プログラムを作る方法

スクラッチタイルプログラミング一種

プログラミング視覚的に理解やすいので、初心者お勧めです。

 

オンライン版のScratch

スクラッチオンライン版とオフライン版がある。

ここではインストール不要で、ブラウザー上で動作するオンライン版を使ってみよう。

(※オフライン版を使いたい場合は、「Scratch インストール」で検索すれば、インストール方法が紹介されている。)

 

構造プログラミングのパーツを並べてみる

順次(上から下へ並べた順番に処理を実行していくこと)

10歩動かす」などのパーツを上から下へ順番に並べてつなげればOK

 

反復

オレンジ色の「制御」のところにある「10回繰り返す」というパーツを使えばOK

Javaの「for」に相当する機能

 

分岐

オレンジ色の「制御」のところにある「もし[ ]なら」というパーツを使えばOK

Javaの「if」に相当する機能

 

スクラッチの遊び方

Scratch 使い方」で検索すれば、スクラッチの使い方がいろいろ紹介されている。分かりやす記事YouTube動画を探して、いろいろ練習してみよう。

 

参考書

Amazon.co,jpで「本 Scratch」を検索すれば、いろいろ参考書が出てくる。

日本Scratch第一人者と言えば阿部和広先生だろう。とりあえず彼の本を読めばScratchの使い方は理解できるはずだ。

 

まとめ

 

以上で、構造プログラミングの基本である順次」「反復」「分岐」の使い方が理解できた。

次回は、手続プログラミングの後半であるオブジェクト指向プログラミング」を学習してみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習 ←★今ここ★

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

増田プログラマー養成講座 その3 構造化=順次、反復、分岐

それではさっそく、一番簡単手続プログラミング言語の使い方を学んでみよう。

 

今回学ぶこと

 

順次」「反復」「分岐

構造プログラミング」でGoogle画像検索すると、分かりやすそうな図があった。

 

  1. 順次:上から下へ向かって、処理を並べた順番に実行していく動作
  2. 反復:同じ処理を決められた回数や、一定の条件の間繰り返す動作。→プログラムでは「for」「while」などで書く。
  3. 分岐:条件によって、別の処理を行う動作。→プログラムでは「if」「switch」などで書く。

 

買物のメモ

買物を例に挙げて、「順次」「反復」「分岐」の3つの動作を使ってみよう。

  1. 順次:(1)スーパーマーケットに行く。(2)カゴを持つ。(3)売り場に行く。(4)商品をカゴに入れて、最後レジで精算する。
  2. 反復:(4)牛乳を1本取る。これを3回繰り返して、カゴに3本入れる。
  3. 分岐:(5)卵が特売で150円未満だったら買う。150円以上なら買わない。

このように構造プログラミングは、人間動作と同じだ。やることをズラズラ書いていけばいいだけだ。

 

準備

要件定義

プログラム目的をハッキリさせておこう。

「最低限これだけはないとダメ」という項目を箇条書きにしておこう。

買物プログラムなら、

などが必要だろう。

 

フローチャート

単純なプログラムだと処理が少ないので混乱しないが、複雑なプログラムだと処理が多くて混乱するだろう。

あらかじめ、処理を図に書き出しておくと混乱せずに済む。その図が「フローチャート図」だ。(フローチャート図の書き方は自分で分かりやす説明検索してみてくれ。説明省略)

 

実務では納品時の成果物としてフローチャート図の提出を求めらていなければ、面倒なので作る必要はない。自分のための図なら、ノートにチャチャっと落書き程度に流れ図を描けば十分だろう。

 

疑似コード

フローチャート図を基にして、実際のコードを書く前に、人間言葉で「疑似コード」を書いてみよう。

 

擬似コード(pseudocode)とは、アルゴリズムなどを、架空の非常に高水準なプログラミング言語(擬似言語)で記述したものである

擬似コード:

if クレジットカード番号が有効

  番号と注文で取引をする

else

  エラーを表示する

end if

 

計画ができあがったら、詳細を考えます

個人的に最良だと思う方法は、プロジェクトの各パートにおいてなにが求められるのかを具体的に書き出すことです。

このとき、まだコードを書かずに言葉だけで記述するのがカギです。

これはpseudocode(疑似コード)と呼ばれます

pseudocodeなら構文を気にすることなく、プロジェクト動作だけに思考を集中できます

 

カウントダウン時計場合なら、書き出した内容は次のようになるでしょう。

 

内容を書き出したら、次は以下のように、各パートごとに小さく分解していきます

いったんロジックを書き出してしまえば、コードを書くのが格段に楽になります

 

要するに「擬似コード」とは、人間意味が分かる言葉コードっぽいものをあらかじめ書いておき、後でそれを具体的なプログラムコードに書き換えていく方法だ。

いちいち面倒だけど、最初慣れないうちは、こうすれば間違えにくいだろう。

 

文芸プログラミング

擬似コードと似た方法として「文芸プログラミング」という方法もある。

面倒なので実務では使わないが、このような補助的手段もある、と紹介しておく。

 

アノテーション

Java関係する点で考えると、Javaには「アノテーション」(注釈)という機能がある。

プログラムに「注釈」となる記述をちょこっと書いておくと、プログラム動作について細かな指示が出せる機能だ。(学習が進んでから、後で「Java アノテーション」を検索して学んでみよう)

 

次回は、子ども向けプログラミング教材「Scratch」を使って、実際に構造プログラミングの3つの動作練習してみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐) ←★今ここ★

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

https://anond.hatelabo.jp/20181015215004

プログラマは、使うプログラミング言語がどうとかよりも、まず「何が起きているのか」を言葉に出来てなきゃならない。

何をプログラムしようとしているのか日本語説明できないなら Java で書くことだって出来ないよ。

.

算数問題があったら、まずは文章を元に式をたてるよね。

そこが出来なきゃ計算のやり方がわかっててもどうにもならん。

正直言って、そこんところを身に着けるには「手を動かせ」以上に出来ることはあんまりないと思う。

そしてそれは、徐々にわかるようになるというよりは悟りというか天啓みたいな分かり方をすると思う。

.

悲観的になるとわからないのが当たり前みたいなメンタル形成されてダラダラと同じ状況を続けてしまうってのもある。

プログラミングに向いてる人っていうのはやる前から「知らんけど、勉強すればわかるやろ」という謎の確信を持ってたりして、実際に出来るようになる。

増田プログラマー養成講座 その2 プログラムデータ+処理

プログラムとは何か?

プログラムは、コンピューター電子計算機)に与える指示書のこと。

人間プログラムコード)を書いてコンピューターに与えると、コンピュータープログラムに書かれている命令を実行する。

 

コンピューター電気仕掛けの召し使いだ。いくらコキ使っても誰にも文句を言われない。パソコンを10台持っていれば部下が10人いるようなもの。こいつらに仕事やらせれば人間様は遊んで暮らせる。どうだ?命令してみたくなっただろう?

しかし、こいつらはアホだ。正確に命令を出さないと、ほんの少しでも間違っていれば、間違ったなりの動作しかしない。融通が利かない頑固者だ。命令するときバグ(間違い)がないように注意しよう。(命令するのも一苦労なんだよな~w)

 

プログラム構成要素

プログラムは、

  1. データ
  2. 「処理」

の2つから成り立っている。それ以外の要素はない。基本はたったの2つだけなら、シンプルで分かりやすいだろ?

 

問題は、この「処理」をどうやって書くか?なんだ。

「処理」の書き方を巡って、人類試行錯誤を繰り返し、いろんな書き方を編み出して来た。

現代の主な書き方(プログラミングパラダイム)には、主に2つの流派がある。

 

命令型と宣言

  1. 命令プログラミング - Wikipedia https://ja.wikipedia.org/wiki/%E5%91%BD%E4%BB%A4%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
  2. 宣言プログラミング - Wikipedia https://ja.wikipedia.org/wiki/%E5%AE%A3%E8%A8%80%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

 

さらに細分化すると4つある。

  1. 手続型:C、Javaなど
  2. 関数型:LispHaskellなど
  3. 問合型:SQLなど
  4. 論理型:Prologなど

 

手続型は命令型に属する。関数型、問合型、論理型は宣言型に属する。)

これら4つは見た目がちょっと違うけど、「チューリング完全」と言って、計算できることは同じと保証されている。(同じ計算能力がある)

頭の悪いプログラマーはそれぞれの優劣を論じて宗教戦争をやってるけど、賢いプログラマー必要に応じて全部使えるようにしているので、どれを使っても問題ない。

まずは、直観的に分かりやすい「手続型」で練習してみよう。その後、問合型(データベースの操作)、関数型(参照透過性の活用)を練習してみよう。


(ここまでの話は、歴史用語、全体を俯瞰した地図の話だから、今の段階で理解できなくてもOK

 

手続プログラミング言語学習項目

次の2ステップに分けられる。

  1. 構造プログラミング - Wikipedia https://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
  2. オブジェクト指向プログラミング - Wikipedia https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

 

この2点を理解したら、Javaコードを書ける。

次回、この2つを見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類 ←★今ここ★

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-14

ゲームに使われているプログラミング言語ってなんなの?

何が使われているのか公表されてなくない?

2018-10-13

プログラミングの独学プラン

  1. 10日間:「構造プログラミング」の基本(順次、反復、分岐)を学習子ども向けの教材「Scratch」がお勧め https://scratch.mit.edu/
  2. 60日間:手続言語PythonPHP等)を学習Webサイトを作ってみる→スラスラわかるPHP https://www.amazon.co.jp/dp/4798125806/
  3. 30日間:問合型言語データベースSQL)を学習MySQLを使ってみる→おうちで学べるデータベースのきほん https://www.amazon.co.jp/dp/479813516X/
  4. 30日間:関数型言語(合成、再帰パターンマッチ)を学習ポイントは「参照透過性」の活用。教材は「OCaml」がお勧め http://pllab.is.ocha.ac.jp/~asai/book/Top.html

 

 

からないことがあればteratailで質問できますhttps://teratail.com/

 

追記

プログラミング言語の選定は、作りたいものに応じて選ぶのが基本。学習目的なら、とりあえず最初の1歩には以下の言語お勧めします。

  1. 手続言語Python
  2. 問合型言語SQL
  3. 関数型言語OCaml
  4. 論理言語Prolog

 

参考書

 

anond:20181013190413 プログラミングってやっぱり数学知識いるかな?

anond:20181014003945 プログラムを学びたい

anond:20181015215004 未経験からプログラマーなんだが全然からない

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん