「チャット」を含む日記 RSS

はてなキーワード: チャットとは

2018-11-12

Vtuberデビューした

人気が出て収益化出来たら良いなって思って。

男だし、ゲームもそこそこ下手なので自分発見したテクとか、マイクラの建造テクニックみたいなのを5分ぐらい紹介して普通にそのゲームプレイしている様子を編集して流すだけの動画

すると、人気とは言えないけど登録者数が200人ぐらいになって、LIVEやってくれるといつも来てくれる人が何人か出来てきて、Vtuber活動を通じて10人ぐらい一緒にゲームする友達が出来た。

なんか、それで満足しちゃった。別にがんばって収益化したいとも思えず、今のまま「このゲームやるよ!一緒に遊ぼう!」っていったら何人かが一緒にやってくれて裏ではディスコードでチャットしているだけ。

ただ単純に一緒にくだらない事を喋りながらゲームする友達が欲しかっただけなのかも。

2018-11-11

綺麗な理由に変えるやつが嫌い

ネトゲ外人チームとの合併が折り合わなかったのは

こちらが向こうに吸収される形になり、チーム設備の利用など権限が今より不自由になる見込みだったり

言葉問題(向こうは英語)で気軽にチームチャットできなくなったり と

ネガティブ理由で断ることになったのに

不安・不満に思うメンバーもいて、全員一致の意見じゃない。残るという人もいる。自分は誰一人として残したくないから、今回は断ろうと思う」。

え?条件折り合わなかっただけなのに、なんで仲間のため、って言い方にすり替えるの?と気持ち悪い感じがした

営業職の人らしく、そういった良い言い方に変えるのが身についてるのかもしれんけど

なんかこう気持ち悪い

ネットゲームチャットに入ったら

自分についての話題だった、自分が男か女か論争をしていた

オネエ疑惑まで出ていた

付き合い長いはずの人達が皆 どっちだろう

と言っていたことにちょっとショックを受けた

「口調が柔らかく女性らしい男性」が

その場の意見だった

別のゲームでもheと紹介されたし

案外 分からないもんなんだなあ

2018-11-10

増田プログラマー養成講座 その20 SQLデータの削除

前回は、SQLデータ更新をやりました。

今回は、SQLデータの削除をやりましょう。

 

メッセージの削除

基本は、同じなので前回やった更新処理をちょっと変えれば削除もすぐできます

 

投稿されたメッセージを削除する機能を、Webページに付けてみよう。

 

削除ページにジャンプするリンク

前々回作ったメッセージの一覧の中に、削除ページにジャンプするリンクも入れておいた。

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

という1行が削除ページにジャンプするためのリンクになる。

ブラウザーHTMLソースを見ると、ここが以下のようなHTMLに書き換わってる。

<td><a href="welcome/delete/2">削除</a></td>

これは「メッセージID番号が2のメッセージ」を削除対象にして、削除ページにジャンプする。

 

Controllerの改造

ユーザーが「http://localhost/waf/welcome/delete/2」というURLで、削除ページにアクセスしたら、コントローラーで「2」を受け取って使いたい。

CodeIgniterでは、URL文字列を解析して、使うことができる。

以下のようにコントローラーを改造してみよう。

 

// 削除画面

public function delete($id = '')

{

 echo "ID=".$id;

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

}

 

Controllerの改造の解説

delete()メソッド引数で、URL中の「2」の部分を受け取れる。

これは前回の編集ページ(更新の処理)と同じ。

「$id = $this->uri->segment(3);」でも受け取れる。

 

Viewの改造

削除ページでは、確認する質問を入れてみよう。

ユーザーに「本当に削除しますか?」みたいな注意喚起をしておきたい。

 

ファイルの内容を以下のように編集する。

<?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>

 

Viewの改造の解説

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

削除するメッセージを色付きで強調して、ユーザー確認してもらう。

 

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

コントローラー削除対象メッセージID番号を送るため、inputタグの「type="hidden"」でメッセージID番号を仕込んでおく。

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 削除画面

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);

}

 

Controllerの改造の解説

やってることは、前回のデータ更新場合とほぼ同じ。

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

で、モデルに用意したデータ削除用メソッドを呼び出しているだけ。

次は、モデルdelete_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// 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();

}

 

Modelの改造の解説

SQLの「DELETE」を使えば、指定したレコード(1件分のデータ)を削除できる。

DELETE FROM talk WHERE id = ?」で、talkテーブルmessageid指定して削除している。

 

データを削除した後の挙動は、メッセージID番号がなくなるので、削除ページに表示できるメッセージデータがなくなる。

(例)id=2のデータを削除したら、SQLで「SELECT * FROM talk WHERE id = 2」を取得しても、空のデータデータがない状態

その場合は、

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

と表示させてる。

 

まとめ

以上で、SQLの「DELETE」を使ったデータの削除ができた。

長々と説明したが、今回の大事な点は、SQLの「DELETE」の使い方だ。

 

以上で、MVCフレームワークを使ったOOPの使い方とSQLの使い方を見てきた。

SQLSQLだけで説明したほうが良かったね!MVCフレームワーク説明SQL説明が混在すると要点が分かりづらくなる?)

ちょっと失敗だったかも。m(__)m)

 

次回は、データベースの設計について学んでみよう。

 


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:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除 ←★今ここ★

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

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

増田プログラマー養成講座 その19 SQLデータ更新

前回は、Webアプリの骨組み(スケルトン)に、SQLデータの追加と取得をやりました。

今回は、SQLデータ更新をやりましょう。

 

メッセージ更新

 

編集ページにジャンプするリンク

前回作ったメッセージ一覧に、[編集]のリンクも入れておいた。

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

という1行の部分。

[編集]をクリックすると、編集用ページにジャンプする。

ブラウザーHTMLソースを見ると、以下のようなHTMLになってるはず。

<td><a href="welcome/update/2">編集</a></td>

これは「メッセージID番号が2」を対象にして、編集ページにジャンプすることを意味する。

 

Controllerの改造

編集用ページのコントローラーを作ろう。

「http://localhost/waf/welcome/update/2」というURL編集ページにアクセスしたら、メッセージID番号の「2」を受け取れるようにしたい。

URL文字列を処理して「2」を取り出せるようにしよう。

 

// 更新画面

public function update($id = '')

{

 echo "ID=".$id;

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

}

 

CodeIgniterでは、URLから文字列を取り出す方法がいくつか用意されている。

  1. 「update($id = '')」のようにメソッド引数「$id」を用意すれば、「2」の部分を取り出せる。
  2. 引数を使う以外の方法も用意されていて、「$id = $this->uri->segment(3);」のように書けば、「2」の部分を取り出せる。

// 更新画面

public function update()

{

 $id = $this->uri->segment(3);

 echo "<hr> ID=".$id;

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

}

 

Controllerの改造の解説

CodeIgniterで、URL文字列から特定部分の文字列を取り出す方法を見ておこう。

 

例えば、「http://localhost/waf/welcome/update/aaa/bbb/ccc」というURLアクセスしたときCodeIgniterではURL中の「aaa」「bbb」「ccc」という部分は、以下のようにして取り出せる。

$seg1 = $this->uri->segment(1); // → 1番目のURL文字列:「welcome」=コントローラークラス

$seg2 = $this->uri->segment(2); // → 2番目のURL文字列:「update」=クラスの中のメソッド

$seg3 = $this->uri->segment(3); // → 3番目のURL文字列:「aaa」の部分

$seg4 = $this->uri->segment(4); // → 4番目のURL文字列:「bbb」の部分

$seg5 = $this->uri->segment(5); // → 5番目のURL文字列:「ccc」の部分

URLを「/」で区切って、base_url(http://localhost/waf/)の次から順番に、1番目のURL文字列、2番目のURL文字列、3番目のURL文字列、…とsegment()メソッドで順番を指定すれば取得できる。

 

Modelの改造

データベースでメッセージID指定して、メッセージを取り出す機能を用意しよう。

 

ファイルに以下のメソッドを追加する。

// 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();

}

 

Modelの改造の解説

SQLの「WHERE」句で、絞り込む条件を指定できる。

 

SELECT * FROM talk WHERE id = ?

「WHERE id = 2」とすれば、メッセージID番号が2のメッセージデータが「talkテーブルから取り出せる。

もし該当するデータがなければ、返されるデータは空になる。(データが返ってこない。)

 

CodeIgniterの「row_array()」は、1件分のデータ配列の形にして返すメソッドだ。

 

Viewの改造

ファイルの内容を以下のように編集する。

<?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の改造の解説

データベースから取り出した1件分のメッセージを表示する部分を追加した。

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

の「<?php echo $talk['message']; ?>」という部分だ。

これで変更したいメッセージの本文を表示できる。

 

あと、編集したメッセージWebサーバーに送信できるように、Formタグ送信ボタン(「更新する」の部分)も追加した。

このときメッセージID番号も送信できるように、

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

という1行も仕込んである

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 更新画面

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);

}

 

Controllerの改造の解説

メッセージID番号を指定して、データベースから取り出し、Viewに渡すデータを用意している。

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

 

ユーザーメッセージ編集をしてWebサーバーに送信したら、データ更新する指示を出す部分も追加した。

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

if ($action == 'update') {

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

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

}

モデルにupdate_message()メソッドを用意して、$idと$messageを渡せば、該当データ更新するようにしたい。

次は、モデルでupdate_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// 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();

}

 

Modelの改造の解説

SQLの「UPDATE」を使えば、指定したレコード(1件分のデータ)を更新できる。

「UPDATE talk SET message = ? WHERE id = ?」で、talkテーブルmessageid指定して更新している。

 

CodeIgniterの「affected_rows()」メソッドは、更新した行数を返す。=成功なら1行、失敗なら0行となる。

 

補足

コントローラーの「$id = $id ? $id : $this->input->post('id');」という行は、$idの受け取り方が2パターンあるので、それに対応している。

編集ページの表示で、1回目の表示と、2回目以降の表示で、$idの受け渡し方が変わっている。

  • 1回目:URLに埋め込まれID番号をupdate($id = '')の引数$idで受け取っている。($this->uri->segment(3)で受け取るのと同じ)
  • 2回目以降:Formタグで送られてきた$idを$this->input->post('id')で受け取っている。

URLに埋め込む方法上記の1回目のような方法)は、ユーザー勝手に値をいじれるので、基本的には使わない方が良い。

 

まとめ

以上で、SQLの「UPDATE」を使った、データ更新ができた。

長々と説明したが、今回の大事な点は、SQLの「UPDATE」の使い方だ。

CodeIgniterの使い方や、Webサイトの作り方(FormタグなどのHTML知識)は、オマケ程度に見ておいて欲しい。

 

次回は、データを削除するSQLDELETE」の使い方を見てみよう。

 


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:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新 ←★今ここ★

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

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

[]2018年11月9日金曜日増田

時間記事文字数文字数平均文字数中央値
0010422256214.046.5
01527091136.460
02336306191.187
03193144165.547
04143818272.775.5
0515126984.668
06192005105.572
0732198962.238
0857443877.937
0973523271.743
10698571124.255
1111111792106.258
121831279069.944
13105824678.550
14838614103.847
1595811385.449
16120960980.151
1711113041117.549
1881569070.238
198710612122.045
201251195495.651
21128939573.441
2297920394.943
23707990114.163.5
1日1883193168102.649

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

人(178), 自分(152), 話(93), 今(75), 増田(70), オタク(69), ー(62), 日本(61), 人間(58), 意味(55), 子供(53), 問題(53), 前(52), 萌え絵(48), フェミ(47), 感じ(46), 普通(46), 好き(46), 気持ち(46), 目(44), 必要(43), ネット(42), アニメ(40), 女(40), あと(40), 頭(39), 仕事(39), 原爆(38), 相手(37), お気持ち(35), 気(35), レベル(35), 最近(34), 表現の自由(34), 理由(34), 昔(33), 今日(32), 自由(31), ゲーム(31), 絵(30), 世界(30), 他人(30), 声(29), 絶対(29), 表現(29), 関係(29), 手(28), ネトウヨ(27), 女性(27), 理解(26), 誰か(26), 結局(26), 一番(26), 親(26), 全部(26), 男(25), 自体(25), じゃなくて(25), 車(24), 韓国(24), 他(24), 意見(23), 絵本(23), ダメ(23), 動画(23), 会社(23), 別(23), 大人(23), 時間(23), 存在(23), 逆(23), しない(22), 最初(22), 迷惑(22), 場合(21), 時代(21), バカ(21), 漫画(21), 一人(20), しよう(20), 結果(20), 程度(20), 大学(20), 説明(19), 嫌(19), 確認(19), 規制(19), 世の中(19), 顔(19), 言葉(18), 馬鹿(18), 人生(18), 英語(18), 友達(18), 金(18), アホ(18), おっさん(18), アメリカ(17), 子(17), 正直(17), 無理(17), 作品(17), 心(17), 国(17), ただ(17)

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

増田(70), 日本(61), 萌え絵(48), フェミ(47), お気持ち(35), 表現の自由(34), ネトウヨ(27), じゃなくて(25), 韓国(24), アメリカ(17), ラノベ(15), twitter(14), BTS(12), キモ(12), いない(12), ダブスタ(12), ワガママ(11), ゾーニング(11), キズナアイ(11), 元増田(11), 被害者(11), マジで(11), 個人的(11), 可能性(11), 東京(10), わからん(10), Twitter(10), PC(10), 表現の自由戦士(9), 防弾少年団(9), ナチス(9), 分からん(9), 笑(9), ヘイト(9), 基本的人権(9), OK(9), はてブ(8), なのか(8), アレ(8), プリキュア(8), AI(8), 軽減税率(8), 最終的(8), スマホ(8), キモい(8), なんだろう(8), …。(8), 10年(8), ツイッター(8), ポリコレ(8), 何度(8), イケメン(7), 社会人(7), 韓国人(7), 腐女子(7), 少女漫画(7), なんの(7), 女子高生(7), リアル(7), yahoo(7), フォールアウト(7), 消費税(7), 中国(7), 2018年(7), キモオタ(7), ブクマカ(7), トラバ(6), アプリ(6), nicovideo(6), 涙(6), 自分たち(6), B(6), ???(6), 多様性(6), .s(6), 悪いこと(6), みどりのおばさん(6), A(6), 山手線(6), はてなー(6), AV(6), 主義者(6), hatena(5), コミュ障(5), パヨク(5), 飲食店(5), 就活(5), 3年(5), 何回(5), 借りパク(5), 具体的(5), 昭和(5), プレイ(5), 芳香剤(5), イートイン(5), 普通に(5), KKO(5), 1人(5), ぶっちゃけ(5), 外国人(5), google(5), ツイート(5), 毎日(5), ー(5), かな(5), goo(5), ファットマン(5), 3人(5), ヘイター(5), ブログ(5), いいね(5), 30代(5)

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

みどりのおばさん(6), フォールアウト(7), 防弾少年団(9), 芳香剤(5), BTS(12), ゴツゴツ(3), 無味乾燥(3), イッテQ(3), 防弾(4), 萌えエロ(3), 塩素(3), 絵本(23), 原爆(38), 戦士(13), 基本的人権(9), 表現の自由戦士(9), ナチス(9), Tシャツ(12), 山手線(6), 萌え絵(48), 軽減税率(8), 表現の自由(34), マスク(9), カルチャー(9), 古典(8), 見分け(7), ダブスタ(12), ワンピース(7), 匂い(13), 韓国(24), メモ(9), お気持ち(35), 少女(9), ヘイト(9), 才能(12), 昼(9)

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

■才能のない人間人生ってつまんねーわ /20181109024136(40), ■ぶっちゃけ日本廃止して英語公用語にした方がいい /20181108223659(20), ■ /20181108194155(11), ■明日夜行バスに乗るんだけど /20181108145646(11), ■なんか気に入らないブクマカ /20181108230438(10), ■車酔いする奴面倒くさすぎ /20181109204321(10), ■キズナアイ絵本ももめた根本の原因は「オタク気持ちいから」 /20181109144103(9), ■知らぬ間にポリコレ根付いてた /20181109115940(7), ■人をけむに巻くような物言いの人 /20181109103232(6), ■後付け理屈こそが一番の悪だと思ってたんだけど /20181109122108(6), ■一般向けだけどこっそりエロ要素があるゲームが知りたい /20181109133303(6), ■ /20181108212757(6), ■仮想的に殺人体験したことがありますか? /20181109172931(5), ■ /20181108170255(5), ■anond20181109105922 /20181109110744(5), ■リブ部分、部分分数馬場馬術みたいなの教えて /20181108173343(5), ■ニコニコオススメ動画 /20181109105536(5), ■「ゾーニングしろ」にそこまで怒る意味わからん /20181109170311(5), ■数字経済かそんなのに強い奴教えてくだされ。コンビニのイートイン /20181109142154(5), ■言論の自由をなくして欲しい /20181109155040(4), ■anond20181109125236 /20181109125742(4), ■ /20181109215934(4), ■連載中の漫画に対する考察について /20181109073909(4), ■萌え絵生理的に受け付けない /20181109183751(4), ■BTS防弾少年団)の原爆Tシャツ問題で「表現の自由戦士」を揶揄するブコメ /20181109154001(4), ■安易質問ができない /20181109154132(4), ■今日会社席替えしたんだけど隣の人の足が臭い /20181109140808(4), ■anond20181109124824 /20181109125340(4), ■うるせ~~~!! 知らね~~~!! /20181108225749(4), ■チャット相手の中身の性別重要? /20181109021618(4), ■田舎者から東京に行くと疑似異世界転生を経験できる /20181109145701(4), ■裸エプロンハンドアックスショタ /20181107234356(4)

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

5778084(2787)

2018-11-09

クライアント情報システム部門プログラマがやたら攻撃的。

クライアント事業部と俺と情シスチャットしてるんだけど、やたら事業部につっかかって

君たち同じ会社人間だよね?って確認したくなるレベル。敵同士か?

俺も同じプログラマから終始フォローに入ってる。

コミュニケーションが下手というか何というか。自分専門家知識があるなら優しく聞いてあげればいいのに。

gitなんか一般常識じゃないでしょって。「一般常識だと思いますが」とか返したら誰も何も言えんわ。

anond:20181109021618

チャットじゃないけど、

公式BBSで、名前欄に、他人名前書くだけというローテクなりすましをされたことがあり、

それは複数の人が被害にあっていたのですが

わざわざmailくれて、気にしないほうがいいですよ、と超丁寧になぐさめてくれた人が

なんと(文章から想像もつかない)中学生だったという事実に、当時は震えました。いい意味で。

なんてこれからはい時代が来るのだろうかと、思っていたのに。

年齢性別って関係なしに、大人はいるし、他人への配慮めっちゃ出来る人もいる。

(そのなりすまししていた人は暇な大学生だともっぱらの噂だったけど、ほんと中学生の爪の垢を飲ませたい)

どんな人になりたいのか、それはほんとうに人に依るのだなと感じました。

ありがとね、あのとき中学生さん。

anond:20181109021618

戦隊ヒーローショーのスーツアクターがいきなりスーツ脱いで中身のおっさん出てくるとか意味わからんやん

子供ならまだしも戦隊ヒーローショーを観ている保護者大人はヒーロショーの赤レンジャーの中身が主人公じゃないなんてわかってるじゃん

戦隊ヒーローショー観に行ってるんだから最後まで戦隊ヒーローやれやって思うじゃん

おっさんなんか観に来てねぇんだよクソが!って思うじゃん

チャット相手の中身がおっさんでも良いんだよ

でもおっさんであるバラ必要もないじゃん

チャット相手の中身の性別重要

https://twitter.com/CIRxoO/status/1060027091628961792

https://pbs.twimg.com/media/DrX49dIU0AEfqPd.jpg

http://krsw.5ch.net/test/read.cgi/steam/1537405936/200/

らくパソ時代からあったであろう話だけど、現実で会うわけでも、生の声を聞くわけでもないチャット相手性別重要なんだろうか。

中身が実際はキモデブおっさん・ヒョロガリ童貞青年メンヘラ喪女でも、チャットだけの関係でまともに相手ができるなら何でも良さそうな気がする。

仮に相手が、当初の関係以上を求めてきたのなら、その時は関係を切ってしまえばいいんだし。

自分では実際にこういうのをやったり目にしたことがないせいもあるのか、ツイートへのリプライや元スレ201以降の「嫌悪」・「引く」ような感想へ至る理由いまいちからない。

人間付き合いほんとイヤ

俺ねコミュ障なんだよコミュ障

誰かと会話してると直ぐにテンパる本音とはかけ離れた誤った表現を使ってしま

物事を順序立てて説明したり相手の心情を考えた否定の仕方とかまずできなくて結論しか言えない

こうやってテキスト打ってるときゆっくり言葉を選べられるからまだマシだけれどリアルタイムで会話は本当に無理

そして不快だったりすると直ぐ顔に出てしまって感情を隠すのも苦手だ

しかも狭量だから俺が悪い結果になると指摘した通りになると「だから言ったじゃねーか!」と思ってしま

俺はクズだよ?クズなのになぜ会社人間は俺とコミュニケーションを取りたがるんだ

パッと俺にやってもらいたい仕事を言って離れていけば良くね?何ならチャットメールで箇条書したの送ってくるだけでも良いんだよ?

ランチ飲み会も何も俺は参加したくないしプライベートでは誰かと遊びに行くなんてこと絶対にしない

ていうか親兄弟にすら関わり合いたくなくて実家に何年も帰ってないレベルなんだよ

俺はね俺の言葉によって誰かを傷付けたくないんだ不快になって欲しくないんだ

他人を傷付ける自分を見るのは嫌だ

から一人で良いんだ仕事はするから放っておいてくれ本当に頼む

2018-11-07

バ美肉Twitterアイコン美少女アニメアイコンにして喋るノリの延長以上でも以下でも無いことはそろそろVRチャット大好き側の人がちゃんと言わないとアカンのではないだろうか

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

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

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

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を見ることを冗談のつもりで提案したら、真面目に検討された。(マジ)

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

うける。

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

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

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

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

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

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

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

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

井の中の蛙が絵を書くのをやめた話

さなから絵を描くのが好きだった。

紙と鉛筆さえ与えれば、大人しくしている子だったと母から教えて貰った。

そのまま小学生になっても絵を描き続けた。漫画家になることをぼんやり夢見つつ、父に買ってもらった原稿用紙に、Gペン少女漫画の模写をし続けた。

絵画系は毎年何かしら賞を取っていた。小さな小学校の中で一番絵が上手かった。

中学に入った頃、初めてネット世界に触れて、自分全国的にも絵が上手い方なんじゃないかと言うことに気がついた。

当時はお絵かき掲示板お絵かきチャットが全盛期で、ありとあらゆる場所で「同年代とは思えない!」と褒められた。

たまに信じられないぐらい上手い人を見つけると、こなくそ、と必死デッサンや着彩を勉強した。

負けたくなかった、絵が上手な私でいたかった。

高校2年生の頃、絵を描く機会がパタリと減った。

隠れオタクになったので、年相応にファッション恋愛生徒会学業に打ち込んだ。

ある時、ふとネット世界に戻ったら、当時絶賛してくれていたお絵描き仲間の絵のレベルが相当に上がっており、オリジナリティに溢れた素敵な絵が毎日上げられていることに気付いてしまった。

同時期に、美大専攻コースの授業を受けていたところ、普通男子生徒だと思っていた人たちの凄まじい画力にうちのめされた。

彼らは今、広告大手会社デザイナーやってたり、某有名デザイン事務所に勤めていたりする。

毎日描くことを怠らなかった本物がそこにいた。

愕然とした、うちのめされた。途端に描く手が止まって、もうどうでもよくなった。

美大は諦めた。私には写実力しかないことに随分前から気付いていた。

そんなことを言い訳にしたけれど、本当は恥ずかしくて悔しくてどうにかなりそうだった。

私の方が上手かったのに!

そんな行き場のない悔しさだけが湧き上がってきた。

ネットお絵描き仲間とも疎遠になった。

その頃には、もう滅多に絵は描かなくなっていた。

当たり前の結果に納得出来ず、絵を描くことをやめた。

あのまま描き続けていたら…と考えることもある。

結局表現したいものなんてなくて、賞賛が欲しかったのかなとも思うことすらある。

周りに差をつけられるのが怖くて逃げた井の中の蛙

あれから10余年。絵にまつわる仕事をしている。描かないけど。

この人たちは、周りの人に打ちひしがれることもなく、毎日書き続けていたんだなと思うと頭が下がる。

2018-11-06

anond:20181106181606

そういえば、その時

「お尻はどういう風に触られたの?」

スカートめくられてどう反応したの?」と聞かれたけど

「どんな体制だったの?再現して?」とか色々やったけど

結局「見回るようにします」だけで聞かれた意味は何だったのかと心底ガッカリした。

マンション入口でそんな変質者にあうとは思わないじゃん……。

ストーカーばりに着いてきてるのが分かったか最後のほう走ったけど間に合わないしさ……。

とりあえずあのときのロンゲちりちり頭の緑スナフキンみたいな帽子タヒね。

昔、ハンゲームチャットをやってたことあるけど

入ってきていきなり「痴漢されたことある?」からまり

暇つぶしに嘘ついて乗ってあげたら

「ねぇ、どんな感じだった?」から気持ち悪い話ばっかり。

なんなんだろうね。

2018-11-05

もう繰り返すのは辞めないか

当方現在40代

情報化社会への移行へ機敏に反応し、小学生の頃には既にパソコンを導入している家庭で育った。

青春時代パソコン通信インターネットと共に過ごし、本来意味ホームページ、そして設置される電子掲示板、今からすると低機能チャットでのコミュニケーションアカデミック分野の人間ではない普通義務教育過程学生としては比較的早期に体験していた。

ちなみに通信を介した今で言うオンラインゲームで一番最初体験したのはメールでの将棋である

幸いにも、当時から通信上で懇意にして頂いていた先輩諸兄とは現在でも繋がりがあり、一部の方々は当方結婚式にまで参列して頂けるという、最早通信上の知り合いと言うには些か語弊があるような関係を持たせて頂いている。

当方コミュニティ最近使われているコミュニケーションツールSlackDiscord・Mattermost・Mastodonだ。

チャットツールが3つもあることに疑問を持つかもしれないが、プライベートな基本コミュニケーションの中心はMattermostであり、いわゆる「つぶやき」をするマイクロブログMastodonが用いられている。

Slack業務に使う者もおりプライベートではMattermostのサブ的な使われ方をしており、Discordコミュニティの中で何らかのオンラインゲームをするときボイスチャット環境として用いることが多い。

ここで多くの方々が「LINEFacebookは利用していないのか?」と思うかも知れない。その疑問への答えとしては「アカウントだけは持っている」というものだ。

いや実際、一時期はコミュニケーションの中心にはFacebookがあった。XMPPを解したしチャットツールFacebook Chatを用いていた。

日本Facebookが紹介されるようになりユーザ数が増えると当方コミュニティは居心地の悪さを感じてTwitterへ移行し、日本での第一Mastodonブームの折、完全にMastodonへ移行してしまった。

様々なサービス漂流することになってしまったが、当方コミュニティが感じていた居心地の悪さの最大要因は「ITリテラシー格差である

当方コミュニティパソコンを用いた通信の発展を見てきたコミュニティだ。

度々起こるインターネットコミュニティでの諸問題を遠巻きながらも目にし、世代交代のためかそれら諸問題が起きたという事実継承されず、何度も何度も同じような問題を目にしてきて非常に疲れた

例えばTiktok問題視されていることの殆どニコニコ動画経験したことどころか、メル友ベル時代に起きていたことだ。

しろ当方コミュニティメンバーの中には「ペンフレンド時代にも似たようなことが問題視された」と言う者も居り、その時代経験していない当方は詳しくないが、卑猥写真を郵送させるなどの問題があったらしい。ペンフレンド宅へ家出する青少年も居たと聞いた。

「当時とは時代が違う」と言うのは容易い。しか当方コミュニティから見ると「またか・・・」としか言いようがない姿に見えてしまうのだ。

当方コミュニティでは過去草の根BBS2ちゃんねるニコニコ動画オフライン上でも保護者会やPTAなどでもインターネット認識や使い方などを訴える活動はしてきた。

情報化社会の中で子供たちへ「携帯電話を持たせない」「インターネットを使わせない」という成長を生まない極論地味た思考停止手法は推奨せず、子供たちへインターネットメリットデメリットを伝えて将来のために活用していこうということを基本方針として伝えてきたつもりである

しかしそれでもなおインターネットでは諸問題が起き、それへの対策が○○の禁止という当方コミュニティ努力が何も実を結ばないという結果を見ることになった。

当方コミュニティはいつも言う「あなた達の世代インターネットで失敗したはずだ」「あなた達はなぜインターネットで失敗したのか?」「当時の感情を思い出し、あなたの子供たちの感情理解を示すことはできないか?」「理解を示して子供たちと話し合うことはできない?」と。

子供だけではない。

NIFTY-Serveゲリラ的に他者の揚げ足を取ったり、オフラインでは無かったことにされるような失言へ対して人権問題だと騒ぎ立てBBS空気を悪くしたり、特定人物へ異常なまで固執Eメール送信しまくったり、あまつさえ失言録のようなWebページ作成して晒し上げたりなど、今でも通ずるような悪意を当時から振り撒かれていた。

当方コミュニティはそんな悪意をもう見たくはない。そんな無理解を見たくはないのだ。

情報化社会当方コミュニティ過去に夢見た時代へ少しずつでありなからも進んでいる。あらゆるもの通信によって連携し人々の生活を豊かにしている。

しか当方コミュニティが見た夢の中には繰り返される悪意などなかった。問題が起きても人と人が協力しあって解決するだろう。すべての人が通信によって繋がれば大きな集合知によって解決されるだろうという夢であった。

「またか・・・」と感じ、どうにか解決できないか?と動いているコミュニティ当方コミュニティだけでないと信じたい。

そしてどうにか繰り返される悪意を無くす協力をして欲しい。

2018-11-04

増田プログラマー養成講座 その18 SQLデータの追加と取得

前回は、Webアプリの骨組み(スケルトン)までを作って、製作過程を見てみました。

今回は、データベースCRUD操作を行なって、チャットメッセージを追加/取得/変更/削除する機能実装してみましょう。

 

Visual Studio Codeの準備

Webアプリを作るときに、「Visual Studio Code」というIDE統合開発環境)を使ってみましょう。PHP用の各種プラグイン(「PHP IntelliSense」「PHP Debug」など)を入れておけば、便利に使える。

 

メッセージの追加

  1. ViewHTMLのFormタグを使って、メッセージ入力送信できるようにする。
  2. Controller:Viewから送信したデータを受け取れるようにする。
  3. Model:Controllerが受け取ったデータデータベースに保存する。

という機能実装してみよう。

 

Viewの改造

ファイルの内容を以下のように編集する。

<?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>

 </body>

</html>

 

Viewの改造の解説

本当はセキュリティーを考慮して、入力値の検査バリデーション)とか、もっといろいろな仕込みが必要だが、ここでは練習なので省略します。

 

Controllerの改造

 

ファイルの内容を以下のように編集する。

<?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);

  }

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

Controllerの改造の解説

 

Modelの改造

ここでやっとSQL文の登場だ!!!

SQL説明たかったのに(SQLとは本質的関係がない)Webアプリ説明が延々と続いた。(説明方法を変えた方がいいねw)

データベースデータを保存(追加)するSQLコマンド「INSERT」を使ってみよう!

 

ファイルの内容を以下のように編集する。

<?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();

 }

}

 

Modelの改造の解説

 

以上、メッセージの追加を実現するために、MVCの各パーツを用意した。これでメッセージの追加だけができるようになった。

これだけではメッセージの取得=表示がまだできないので、次はデータベースからメッセージデータを取得して、Webページに表示できるように改造しよう。

 

メッセージの取得

SQLの「SELECT」を使えば、データベースからデータを取り出せる。

メッセージデータを取り出して、Webページの表示で使おう。

 

Modelの改造

ファイルの内容を以下のように編集する。

<?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();

 }

}

 

Modelの改造の解説

 

これでデータベースからデータを取り出すSQLメソッドモデルに用意できた。

 

Controllerの改造

 

ファイルの内容を以下のように編集する。

<?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()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

Controllerの改造の解説

これは全部CodeIgniterで用意されている機能なので、マニュアルを読めば使い方が分かるようになってます

 

Viewの改造

ファイルの内容を以下のように編集する。

<?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の改造の解説

 

説明文が300行を超えてしまった!これ以上は増田で表示できない。)次回はメッセージの変更をやってみよう。

 


anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得 ←★今ここ★

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

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

Appleチャットサポートが最悪

とあるiPadアクセサリが壊れたので、Appleサポートアプリからチャットサポートを使ってみたら、対応が最悪。

なぜかのらりくらりとこちらの修理依頼を交わして会話を切ろうとしてくるし、そもそもメニューに従うとメニューに該当する項目がないために修理依頼すらできない。

仕方ないので、チャット質問したら、なぜか壊れてもいないiPad本体故障していることにさせられて無理矢理修理の予約を取るよう誘導され、さらに、そこまでやったのに修理依頼の窓口が予約でいっぱいで受け付けられない状態

壊れたものを修理する方法にすらまともに案内できないレベルなのに、問題になっていないのが謎すぎる。。。

増田プログラマー養成講座 その17 Webアプリの骨組み

前回は、Webアプリの完成見本を先に見てみました。

今回は、Webアプリを作る途中の過程を見て、作る雰囲気を一緒に味わってみましょう。

 

フレームワーク使用ルール=「設定より規約」=手抜きをする仕組み

最近フレームワークは、「設定より規約」(CoC、convention over configuration)という発想で作られている。

フレームワーク規約使用ルール)に従うと、プログラマー作業量が減って、楽ができる。

 

設定より規約(convention over configuration)とは、開発者の決定すべきことを減少させ、単純にするが柔軟性は失わせないというソフトウェア設計パラダイム

使用しているツール実装した規約開発者の望む動作と一致していれば、設定ファイルを書く必要もない。実装規約と望みの動作が違っている場合必要動作を設定しなければならない。

 

最近フレームワークは「設定より規約アプローチ採用しているものが多い。

例えば、Ruby on Rails、Kohana、Grails、GrokZend FrameworkCakePHPSymfony などがある。

 

CodeIgniter使用ルール

CodeIgniter使用ルールは、マニュアルチュートリアル確認できる。

↑このページの「アプリケーションフローチャート」を見てみよう。

 

  1. 一番左の「index.php」が、Webアプリ入口になっている。(エントリーポイントフロントコントローラーパターン等ともいう)
  2. から2番目の上段「Routing」で、URLに応じて、仕事の振り分け先を決定する。(ディスパッチ、マッピングルーティング等ともいう)
  3. から4番目の「Application Controller」で、具体的な処理の指示を出す。
    1. Application Controllerは、「Model」に必要データを用意させる。
    2. Application Controllerは、「View」に表示用の画面を作らせる。
    3. Application Controllerが、index.phpに表示用の画面を渡す。
  4. 表示用の画面(最終的な処理の結果)を受け取った「index.php」は、ユーザーブラウザー)に画面を渡す。

 

 


 

それでは、CodeIgniterプログラマーが用意する部分のM(Model)とV(View)とC(Application Controller)を、骨組みから作ってみよう。

事前準備として、前々回と前回のWebアプリ完成見本を用意するところまでやっておこう。

 

スケルトンとは?

スケルトン(skeleton, 骨格)とは動物人間の骨格。

コンピュータプログラムコードの骨格部分。プログラムコード作成では、初期段階でスケルトン作成し、その後で詳細部分を肉付けしていく。

 

 

 

Application Controllerの骨組み

まずは、MVCのCの骨組みを作ろう。

Controllerは、ユーザーからリクエストを受け付けて、ModelViewに指示を出す監督です。

 

上記フォルダの中に「Welcome.php」というファイルを作る。(デフォルトであるはずなので、それを使ってOK

 

CodeIgniterルールで、Application Controllerを置く場所は「application/controllers」というフォルダになっている。

CodeIgniterルールで、一番最初に呼び出されるApplication Controllerは「Welcome.php」というファイルになっている。

→これは「C:\xampp\htdocs\waf\application\config\routes.php」という設定ファイルで決められている。

$route['default_controller'] = 'welcome'; // 別の名前にすれば変えられる。

 

「Welcome.php」の中身を以下にように変更する。

<?php

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

 

class Welcome extends CI_Controller

{

 // 初期画面

 public function index()

 {

  echo "Here is index()";

 }

 // 更新画面

 public function update()

 {

  echo "Here is update()";

 }

 // 削除画面

 public function delete()

 {

  echo "Here is delete()";

 }

}

これがチャットApplication Controllerとして動作する最小限の内容=骨格だ。

 

継承

class Welcome extends CI_Controller

という行に注目してみよう。

CodeIgniterで用意されてる「CI_Controller」クラス継承して、プログラマーが「Welcome」クラスを作ってる。

継承によって、フレームワークが用意してる様々な機能をWelcomeクラス内で使えるようになる。

 

URLリクエスト)とControllerの対応マッピング)のルール

「Welcome」クラスの中に、「index()」「update()」「delete()」という3つのメソッドを用意した。

CodeIgniterURLは、Action Controllerのクラス名やメソッド名とひもづけられている。

今回作るWebアプリだと、

「http://localhost/waf/クラス名/メソッド名」

という対応関係になっている。

(例)

http://localhost/waf/        →Welcomeクラスindex()メソッドが呼び出される。

http://localhost/waf/welcome/index  →Welcomeクラスindex()メソッドが呼び出される。

http://localhost/waf/welcome/update →Welcomeクラスのupdate()メソッドが呼び出される。

http://localhost/waf/welcome/delete →Welcomeクラスdelete()メソッドが呼び出される。

 

 

 

Viewの骨組み

次にMVCのVの骨組みを作ろう。

ビューは、表示する画面の部分です。HTMLWebページの構造を書きます

 

 

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>

 </body>

</html>

 

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>

 </body>

</html>

 

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>

 </body>

</html>

 

Viewファイルの追加に合わせて、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->helper('url');

 }

 

 // 初期画面

 public function index()

 {

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

(変更点の説明

コンストラクターの追加

コンストラクター「__construct()」は、クラスからインスタンスが作られるとき自動的に実行されるメソッドだ。コンストラクターは、初期化最初にやっておくべき下準備を書いておく。

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

CodeIgniterには、リンクの表示を補助する「URLヘルパー」という機能が用意されている。

上記のように書くとURLヘルパーを呼び出して、使えるようになる。

Viewファイルの以下の行でURLヘルパーを使っている。=「base_url()」という関数URLヘルパーの1つ。

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

 

ビュー読み込みメソッドの追加

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

というメソッドによって、Viewファイルの「welcome_index.php」を呼び出し、画面を出力します。

 

これでMVCのCとVの骨組みができた。

今の段階でWebブラウザーで各ページを表示させると、各Viewファイルの中身が表示される。

 

 

 

Modelの骨組み

次にMVCのMの骨組みを作ろう。

モデルは、具体的な処理内容(ロジック)を書いて、データを読み書きする部分です。

データベースを操作するSQL文もモデルに書きます

 

上記フォルダの中に「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();

 }

}

 

CodeIgniterで用意されてる「CI_Modelクラス継承して、プログラマーが「Chat_modelクラスを作ってる。

「Chat_modelクラスコンストラクターには、以下のように書いている。

$this->load->database();

これは、データベースを使用する準備だ。

 

Modelの追加に合わせて、さらに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');

 }

 

 // 初期画面

 public function index()

 {

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

コンストラクター

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

と書いて、「Chat_model」というモデルを読み込むようにした。

これで、モデルに用意するいろんな機能コントローラーで使えるようになる。

 

 

 

以上で、MVCの骨組み(スケルトン)だけを作成するプロセスを見ていきました。

まだ中身はスカスカで、何も機能がついてませんね。

次回は、データベースのCRUD操作を行なって、チャットメッセージを追加/取得/変更/削除する機能実装してみましょう。

 


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:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み ←★今ここ★

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

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

2018-11-01

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

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

 

index.php編集

Webサーバーの時間設定がズレていると、メッセージ作成したときに、作成日時もズレてしまます

(=12時に投稿したメッセージが、3時に投稿したことになってしまう、等。)

時間がズレてた場合は、Webサーバーの時刻を一時的に変更する処理を追加しておきましょう。

 

index.phpファイルの先頭に以下の内容を追加します。

上記フォルダの中の「index.phpファイルを開いて、先頭付近(2行目辺り)に以下の内容を追加します。

<?php

date_default_timezone_set('Asia/Tokyo'); // 2行目あたりに追加

 

動作確認

以上で、簡易チャットWebアプリが設置できました。

ブラウザーアクセスして、動作確認してみましょう。

 

 

以上で、データベースを利用した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:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き) ←★今ここ★

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

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

増田プログラマー養成講座 その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アプリの完成見本(続き)」

へ続きます

LINEチャットなら話すのに電話は出ない奴

そりゃ状況にもよるだろうけど、お前は無視してるだけだろ

チャットでやり取りするのだるいんだよ

2018-10-31

え、メインストリーこれで終わり?

anond:20181014140033

文字通りの殴り合いで、ともすると容赦なく撃沈が出た第3章が終わり、感想で一番に思ったことを増田タイトルにしてみた。

他にも潜水艦の使い所が分からないってか、そもそも使えるのこれ?など、気になる点がちらほら出てきたり。


そんなこんなで昨日4-1をクリアしたが、3章にハマりかけたタイミングで凸にスキルアップに装備強化・艦の強化とチョイチョイ実施していたおかげか、ステージこそ長くなったけど、意外に苦戦しなかった感じ。

そんなことよりも…と言ってしまうと語弊がありそうだが、最近しんどくなってきたのは、未だにエンタープライズが来ないこと。

だってエンプラ嫁にするのがアズレン始めた理由から、序盤もそろそろ終わろうとしているのにお預けというのは普通に辛い。

既にSSRではベルファストイラストリアスフッド愛宕瑞鶴と出ていてなお出ない。

フッドなんて、出なくて苦しんでいる指揮官には申し訳ないが、気まぐれで大型回したら出たって感じだし、愛宕瑞鶴は使う予定ないんで、そんなことよりも(ry

そうこうしているうちに初期艦で今でも前衛筆頭のラフィーがいち早くLoveになり、結局任務で貰った指輪彼女にあげてしまった。

ちなみにチャットログはご丁寧にも他の指揮官が当てたレア艦がいちいち表示されるのがデフォだけど、そこにもエンプラ当たりなんてログが載った試しがないとか、マジでレアヤバいんだねエンプラって。

勲章集めて支援で貰うにしても、カタログエンプラが載ってくるのが何月何日何曜日かなんて、誰にも分からないのが厳しい。

まあそうは言っても、3-4を数百周して一航戦が揃わない沼に比べたらマシだと思うので、その意味では一航戦に全く興味ない俺はラッキーだったかも。


と、愚痴っぽくなってしまったけど、それでもアズレンというゲーム自体は気に入っているかな。

どんな名作だって完全無欠なんてあり得ないし、ことこのゲームに関しては課金するか・やり込むかは指揮官生き方問題みたいな雰囲気で、そうしなくてもゆるーく遊べる特性が今のところは美点だから

なので、超面白い!というよりも

「そうそう、いいんだよこういうので

みたいな感じ。

増田プログラマー養成講座 その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 増田プログラマー養成講座 コンテンツ一覧

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