「Action」を含む日記 RSS

はてなキーワード: Actionとは

2019-05-24

protection of Keith Lennox. The only possible motives for Lennox's action were either financial gain for

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044666152-Мастер-смеха-24-05-2019-смотреть-Шоу-передача-от-24-мая

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475351-24-05-2019-Мастер-смеха-24-мая-2019-смотреть-Эфир-сегодня-в-HD1080tv

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044666172-Мастер-смеха-24-05-2019-последний-выпуск

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475371-Холостяк-СТБ-9-сезон-12-выпуск-24-05-2019-смотреть-Шоу-передача-от-24-мая

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475391-24-05-2019-Холостяк-СТБ-9-сезон-12-выпуск-24-мая-2019-смотреть-Эфир-сегодня-в-HD1080tv

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475411-Холостяк-СТБ-9-сезон-12-выпуск-24-05-2019-24-мая-все-выпуски-подряд

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044666232-Великий-из-бродячих-псов-третий-сезон-Bungou-Stray-Dogs-3rd-Season-7-серия-24-05-2019-смотреть-аниме-сериал-online-от-24-мая-2019

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475471-24-05-2019-Великий-из-бродячих-псов-третий-сезон-Bungou-Stray-Dogs-3rd-Season-7-серия-серия-24-мая-2019-смотреть-аниме-Эфир-сегодня-в-HD1080tv

https://chameleonsupport.zendesk.com/hc/en-gb/community/posts/360044475511-Великий-из-бродячих-псов-третий-сезон-Bungou-Stray-Dogs-3rd-Season-7-серия-серия-24-05-2019-смотреть-аниме-онлайн

2019-02-20

全国「精神病」者集団が分裂していた

何が起こっているか

発端

2016年8月17日に後の絆派である山本眞理がメーリングリストに以下の投稿を行う。

素行というから私が誰かを強姦したとかセクハラしたとかという話かと思った、Aさんみたいに

これに対して名指しされたAは

もう、10年以上のけんですが、私はセクハラは確かにしましたが強姦はしておりません

と回答、強姦はしておらず大阪では性暴力を起こしていないのでそれについて撤回を求め、また情報元の提示を求めるが山本被害者保護のためこれを拒否

これについて運営委員会は山本事実提示処分勧告を行う。

なお、Aのセクハラの件はその後一切の内部調査が行われておらず、事実無根のため撤回しなければ法的手段に訴えると憤っていたAも裁判を起こしていない。

事の顛末は全国「精神病」者集団ニュース2016年10月号(http://www.arsvi.com/2010/20161018zss.pdf)に掲載されている。

分裂

運営委員派と絆派の溝は埋まらず、2018年3月弁護士を交えた合意書を作成する。(https://www.jngmdp.org/news/4925)

このとき

1 山本眞理は、関口明彦、桐原尚之および山田悠平が運営委員会の構成員になっている集団(以下「甲集団」)には加わらず、別の集団(以下「乙集団」)として活動することとする。

2 甲集団および乙集団はいずれも、2018年5月1日以降、全国「精神病」者集団名称自己集団を称する名称として用いない。

としていたのだが、甲集団まり運営委員派は(https://jngmdp.net/wp-content/uploads/2018/07/20180619.pdf)

分岐、分離、分裂、解散合意した事実がないことを確認しました。あくまで別々に活動をすることのみを確認したこと再確認されました

として合意書を無効とし、絆派の一連の行動(分裂の報告)を風説の流布であるとして謝罪要求

運営委員会が率いる集団は引き続き「全国「精神病」者集団」を名乗ることとなる。

工作

そしてそれと前後してWikipedia全国「精神病」者集団の項目編集合戦が始まった。

編集履歴を見ると運営委員派の桐原尚之が項目を編集していることがわかる。

2019-02-06

つかれた。

働きながら、修士課程

40歳仕事2交替

長期履修で三年目。

2月の頭になんとか提出した。

来週審査会がある。

デザインaction research

修士で、しかリカレントでやるには、なかなかキツかったんじゃないかと思う。

そんな訳で、中身は、お察し。

指導教員先生方は優しくて、優秀で文句はない。

ただ、自分馬鹿さ加減には腹が立ってしまます

賢くて、優しくて、心の安定している人になりたかった。

2019-01-21

Maybe, is it as expected by the Korean government?

About the radar irradiation problem, at the beginning, I was amazed at the response to the Korean side.

But, if we think carefully, is not the series of Korean side responses successful in the sense of earning time? It came to be interested.

In this case, the Korean side has not shown the intention to solve the problem at all.

If we apologized at the beginning of the first place, this problem could have been solved.

Nonetheless, the South Korean side only takes action to make the situation muddy.

In other words, is not it the purpose of the South Korean government itself to make the situation muddy?

From the beginning, is not it intentionally irradiated the radar wave to P-1 in order to create the current rude situation?

For what do the Korean government want to earn? I do not know.

Based on the verdict of the reprocessing work problem, it may take time to prepare its assets (at least in Korea) to legally acquire assets.

Alternatively, underwater negotiations towards the establishment of a unified government with North Korea are proceeding, from which we may want to miss the eyes of countries such as Japan and the United States.

Perhaps it may be waiting for diplomatic cards to be ready for the Japanese side to head down, such as the victims of abductions.

If there is no clear speculation in particular, if the Japanese side gets tired and giving up, it may be a Korean diplomatic victory.

Perhaps there is a secret ball of the Korean government that can not be thought of as an amateur.

 

2019-01-05

独学でプログラミングを学んだ思い出

最近プログラミングの教え方についての記事をちょくちょく見るので思い出して書いて見る。

10年ほど前、ふと興味がわいてアプリ開発したことがある。

プログラミング経験といえば、今は懐かしいAction scriptをかじったくらい。周りにもアプリ開発はいなかったし、C言語の本を揃えるところからはじめてなかなか大変だった。

本を見て、サンプルのコードをそのまま書いて見て、書いてあるとおりに動いて、ちょっとアレンジしてみたりして、それでどうなのという感じ。これでアプリが出来るのかと雲をつかむような話だったが、だんだん複雑になるにつれ、サンプル通りに書いたつもりでも動かないことが増えてきた。

何一つ分からない時、理解の糸口になるのは「言われたとおりにやったのにうまくいかなかった」ことだけだ。

何も手がかりのないツルツルのところにちょっとした窪みが出来たような感じだった。

そのまま書き写しつもりだったのに漏れていたのはどこなのか。

サンプルでは動いたのにアレンジしたら動かなかったのは何故なのか。

それが手掛かりだ。

理解していないのは何なのか」を理解することでちょっとだけ入り口が開く。それを何度か繰り返すことで「こういうことだったのか」と理解できようになる。それを積み重ねて自分の作りたいものが何とか作れるようになった。

結局一年ほど掛けてどうにかリリースまで漕ぎ着けることができた。

ただ、自分は致命的に短期記憶が弱かった。いつまでたっても関数を覚えられず、毎回調べ直さなければならない。これは向いてないわとそれきり止めてしまった。

こんなんでも、アプリ開発してリリースしたとなると、「どうやったの?」とわらわらと人が集まってくる。

その時感じたのは、プログラミングがどうしても出来ない人がかなりの数いるということ。

その人達はみんな同じことを言う。「本に書いてあるとおりにやったのに動かない」「言われた通りにやったのに動かない」そう口を尖らして言う。

そうしてうまくいかないことに不機嫌になり、脱落していく。

そこからなのになあ。

うまくいかなかったら「よっしゃ、来たぞ」と思わなきゃ。

実家の母がイトーヨーカドーサイトリニューアルするたびに「ここにあったボタンがなくなってわからなくなった。どうしてこんなことするのかしら」と不満を(なぜか自分に)ぶつける姿を見て、こんな感じなのかなと思った。

2018-12-23

生理痛が酷いのでピルをもらいに行ったらなんか知らん病気だった話

私は25歳の一介の女性

自分でも長らく、生理痛なんて平均レベルに苦しんでいたものだと思っていた。年に数回、市販の痛み止めが効かないほど痛むことがあり寝込んだり夏でもカイロを腰に貼ってなんとかやり過ごしたことがあった。

18年11月20日午前3時、猛烈な腹痛で飛び起きた。さながら片頭痛がそのまま腹部で起きているような激痛だった。食欲も全くなかった。

その日はたまたま仕事休みだったので1日を布団の上で過ごした。市販の鎮痛剤を飲むも効果はなし。辛うじて腰のカイロけが痛みを軽減してくれた。

ここにきてやっと気付いたのだ、「これは平均レベルの痛みではない」という事に。

どうせ使わない内臓なのにとうとう月経困難症になってしまたか、と思い低用量ピルを処方してもらえさえすれば、と思いつく。

なんでも最近のもの月経の回数そのものを減らしてくれる魔法のような効き目を発揮してくれるらしい。

体調が穏やかになった12月4日、朝イチでネットでも評判のよい婦人科へ予約を取るも玉砕。予約は10日後にしか取れなかった。

そして10日後の12月14日

尿検査と、症状の聞き取り血圧とここまでは普通検査

私は初めに、

・片側の腎臓肥大している

子宮奇形と診断されたことがある(重複子宮)

説明し、いよいよ先生の診断へ。

子宮奇形場合、セットで内膜症を発症することがあるからその可能性も視野に入れて、ピルを処方すべきか内膜症を治療する薬を処方すべきか判断するためにMRIを撮りましょうね」と別院紹介状を書いてもらい、軽くエコーをしてもらった。

「ちなみに片頭痛ピルと相性が悪いことがあって、たまに症状が悪化することがあるから気をつけてね。」と言われ、その日は送りかえされた。

MRIを撮った翌日、病院からの着信が携帯に入っており折り返す。

MRIの結果が早く届いたから伝えておくけど、やっぱりお腹に血が溜まってるみたいで手術したほうがいいかもしれない。次の予約日を早めるから来てくれない?」と先生。手術…?と思い21日指定時間に来院。

腎臓肥大と言われた時ほかに何か言われなかった?」と問われたので、腎臓機能してないとまで言われたと答える。先生がハッとした顔で、「これは専門用語なっちゃうんだけど、『OHVIRA症候群』という病気でね、膣の片側がすごく狭くなっていてそこで血が溜まっているみたい。早めにそれを取り出して形を整えてやらないと、他の病気になったり、血が逆流しちゃうかもしれないからこの病気論文を書いてる先生がおられる病院に行って見てもらったほうがいいよ。」と矢継ぎ早に所見を述べる。

どうやら稀な病気…?らしく、こんなことで運を使いたくなかったな、と呆然としたまま次の病院の予約日を待っている。

このOHVIRA症候群というヤツはお医者様の中でもあまり周知されていないようで、たまたまそれをご存知の方のもとへかかったから発覚したものの、見過ごされていることが多いと聞く。

もし、私と同じように片腎と診断されていて月経の痛みが強い方は、早めに婦人科に行ったほうがよいと思う。行ってください。

手術になったらまた続きを考えるかもしれない。

補足

OHVIRA症候群について:http://journal.kyorin.co.jp/journal/jsog-k/detail.php?-DB=jsog-k&-recid=5443&-action=browse

2018-12-11

[]IGN The Game Awards 2018受賞/ノミネート作のプラットフォーム集計

モバイル部門俳優部門教育部門は除外

合計は重複含む

種別タイトルPCPS4NSXB1
GAME OF THE YEARゴッド・オブ・ウォーx
アサシン クリード オデッセイxxxx
Celestexxxx
Marvel’s Spider-Manx
モンスターハンター:ワールドxxx
レッド・デッド・リデンプション2xx
BEST ACTION GAMEDead Cellsxxxx
コール オブ デューティ ブラックオプス 4xxxx
Destiny 2 孤独と影xxx
ファークライ5xxxx
ロックマン11 運命歯車!!xxxx
BEST ROLE PLAYING GAMEモンスターハンター:ワールドxxx
ドラゴンクエストXI 過ぎ去りし時を求めてx
二ノ国II レヴァナトキングダムxx
OCTOPATH TRAVELERx
Pillars of Eternity II: Deadfirexxxx
RE: Charge
BEST NARRATIVEレッド・デッド・リデンプション2xx
Detroit: Become Humanx
ゴッド・オブ・ウォーx
Life is Strange 2: Episode 1xxx
Marvel’s Spider-Manx
BEST SCORE/MUSIC - PRESENTED BY SPOTIFYレッド・デッド・リデンプション2xx
Celestexxxx
ゴッド・オブ・ウォーx
Marvel’s Spider-Manx
二ノ国II レヴァナトキングダムxx
OCTOPATH TRAVELERx
BEST ART DIRECTIONReturn of the Obradinx
アサシン クリード オデッセイxxxx
ゴッド・オブ・ウォーx
OCTOPATH TRAVELERx
レッド・デッド・リデンプション2xx
BEST VR/AR GAMEASTRO BOTRESCUE MISSIONx
Beat Saberxx
Firewall Zero Hourx
Mossxx
TETRIS EFFECTx
BEST FIGHTING GAMEドラゴンボール ファイターズxxx
BLAZBLUE CROSS TAG BATTLExxx
ソウルキャリバーVIxxx
ストリートファイターV アーケードエディションxx
BEST FAMILY GAMEOvercooked 2 - オーバークック2xxxx
マリオテニス エースx
Nintendo Labox
スターリンク バトル・フォーアトラスxxx
スーパー マリオパーティx
BEST STRATEGY GAMEInto the Breachxx
The Banner Saga 3xxxx
BATTLETECHx
Frostpunkx
戦場のヴァルキュリア4xx
BEST INDEPENDENT GAMECelestexxxx
Dead Cellsxxxx
Into the Breachxx
Return of the Obra Dinnx
The Messengerxxxx
BEST SPORTS/RACING GAMEForza Horizon 4xx
FIFA 19xxxx
マリオテニス エースx
NBA 2K19xxxx
ウイニングイレブン 2019xxx
BEST GAME DIRECTIONゴッド・オブ・ウォーx
A Way Outxxx
Detroit: Become Humanx
Marvel’s Spider-Manx
レッド・デッド・リデンプション2xx
BEST ONGOING GAMEフォーナイトxxxx
Destiny 2 孤独と影xxx
No Man’s Skyxxx
オーバーウォッチxxx
レインボーシックス シージxxx
BEST AUDIO DESIGN - PRESENTED BY DOLBYレッド・デッド・リデンプション2xx
コール オブ デューティ ブラックオプス 4xxxx
Forza Horizon 4xx
ゴッド・オブ・ウォーx
Marvel’s Spider-Manx
GAMES FOR IMPACTCelestexxxx
11-11 Memories Retoldxxx
Florence
Life is Strange 2: Episode 1xxx
The MISSING - J.J.マクフィールドと追憶島 -xxxx
BEST ACTION/ADVENTURE GAMEゴッド・オブ・ウォーx
アサシン クリード オデッセイxxxx
Marvel’s Spider-Manx
レッド・デッド・リデンプション2xx
シャドウ オブ ザ トゥームレイダーxxxx
BEST MULTIPLAYER GAMEフォーナイトxxxx
コール オブ デューティ ブラックオプス 4xxx
Destiny 2 孤独と影xxx
モンスターハンター:ワールドxxx
Sea of Thievesxx
56793853

2018-12-05

anond:20181124172740

ELECTRICAL COMMUNICATION

引き裂かれてる IMAGINATION

誰にも 邪魔させない

Sparkしてる ROCK ACTION

打ち砕け MEDITATION

狂った現実(いま)を焼き捨てたい

2018-11-30

わたしの願いなんて単純なものだよ(鼻声

YEEEEEEEEEEEEEEEEEEAH!!!!!Holy Shit!!!!!!!!!YYYYYYAAAAAAAAHHHHHOOOOOO!!!!!!!!

ELECTRICAL COMMUNICATION

引き裂かれてる IMAGINATION

誰にも 邪魔させない

Sparkしてる ROCK ACTION

打ち砕け MEDITATION

狂った現実(いま)を焼き捨てたい

2018-11-13

Wikipediaの「銀ブラ」をたどる

メモとして残しておく。

を見ると、2016年10月26日 (水) に、

大正時代から俗語で、東京銀座慶応大学学生ブラジルコーヒーを飲んでいたこから銀ブラ」とも表記する。

が登場する。(編集者は 58.94.44.58 URLhttps://ja.wikipedia.org/w/index.php?title=%E9%8A%80%E3%81%B6%E3%82%89&oldid=61684408 )

その日のうちに元に戻され一旦終結するが、 2017年7月8日 (土) に以下の記述修正されている。

銀ぶら(ぎんぶら)は、大正時代から俗語で、東京銀座に在るカフェーパウリスタブラジルコーヒーを飲むことである。「銀座の街をぶらぶら歩くこと」という説が広く普及しているが、これは誤りである

(編集者は 210.150.76.152 URLhttps://ja.wikipedia.org/w/index.php?title=%E9%8A%80%E3%81%B6%E3%82%89&oldid=64708059 )

2018-11-12

BTSに対するSWC非難声明邦訳)――これはSWCによる「全面降伏要求」だ

邦訳適当なので適当かもしれない

---

November 11, 2018

2018年1111

The Simon Wiesenthal Center denounced BTS, an internationally popular Korean band whose live performance on Japan TV was cancelled.

先日日本テレビ局ライブパフォーマンスの予定を取り消された、韓国国際的人気バンドBTSを、サイモン・ヴィーゼンタール・センター非難する。

“Wearing a T-shirt in Japan mocking the victims of the Nagasaki A-bomb, is just the latest incident of this band mocking the past,” charged Rabbi Abraham Cooper. Associate Dean and Director of Global Social Action of the Simon Wiesenthal Center, a leading Jewish Human Rights NGO.

サイモン・ヴィーゼンタール・センター副部長であり、グローバルソーシャルアクション部門であるラビアブラハム・クーパー師は、「長崎原爆による犠牲者嘲笑するようなTシャツを着用したということは、過去嘲笑するこのバンドが起こした、最新の事例であるに過ぎない」と批判した。

Members of the band posed for a photo shoot wearing hats with the Nazi SS Death Head logo. The SS was a key component of the Nazi mass murder of 6 million Jews during the WWII Holocaust. “Flags appearing on stage at their concert were eerily similar to the Nazi Swastika. It goes without saying that this group, which was invited to speak at the UN, owes the people of Japan and the victims of the Nazism an apology.”

たこバンドメンバーは、ナチ親衛隊の髑髏をあしらった帽子かぶり写真ポーズを収めている。ナチ親衛隊は600万人のユダヤ人第二次大戦中のホロコースト殺害した中心組織だ。「彼らのコンサートで見られた旗はナチハーケンクロイツ酷似している。国連演説にも招かれるようなグループが、日本の人々、またナチズムの犠牲者に対し謝罪の責務を負うのは言うまでもない」

“But that is not enough. It is clear that those designing and promoting this group’s career are too comfortable with denigrating the memory of the past. The result is that on young generations in Korea and around the world are more likely to identify bigotry and intolerance as beingcool’ and help erase the lessons of history. The management of this group, not only the front performers, should publicly apologize,” Rabbi Cooper added.

さらラビクーパー師は、「それだけではない。このグループを作り、運営している人々が、過去について中傷することに無頓着すぎるのは明らかだ。その結果、韓国や、世界若者たちが、偏見不寛容をカッコイものと考えるようになり、歴史の教訓を忘れることを助長することになる。先頭でパフォーマンスをしている彼らだけでなく、グループ運営している人々も、公式謝罪すべきだ」と付け加えた。

---

まり報道されていない部分への個人的感想

この2点はかなり気になる――なぜなら日本人でも知らない「長崎広島キノコ雲の違い」を明らかにして非難していること、Mocking the victimsという表現を使って「被爆者侮辱している」とSWC認識していることを明らかにしていることから、決して「ナチの方は謝るけど、原爆部分は言いがかり」というメッセージを受け入れないという姿勢が伝わるからだ。はっきり言ってこのメッセージナチ部分がかすむほどに反核的に読み取れる。謝罪すべき対象については「日本の人々(被爆者)とナチズムの犠牲者」と「日本の人々」を最初に置く念のいりようだ――これはそういう流儀なのかもしれないが。

SWCがこのようなリリースを出すのは驚きに値する。「原爆終戦を促し無駄犠牲を防いだ」という史観にさえ抵触しかねないからだ。原爆を開発した科学者ユダヤ人が多く含まれいたことも鑑みると、このようなメッセージが出たことは極めて興味深い。少なくとも巷間マスコミはてなブックマーク等で言われるように「SWCが出てきちゃったよ、やれやれ」とかいった話ではなさそうなのである原爆開発に積極的に加担したユダヤ人代表するような団体が、「広島」と「長崎」を明示的に分けて「嘲笑した」と非難していることについて、多少の考えをいたして欲しい。

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

増田プログラマー養成講座 その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

増田プログラマー養成講座 その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-08-09

xyzzy 使いに 50 の質問

01. ハンドルネームは?

  増田

02. ご職業、年齢はいくつですか?

  なんでも屋さん、アラサー

03. xyzzyについて何かwebサイトを持っていますか?

  持っていません

04. 現在使用中の xyzzyバージョンは何ですか?

 0.2.2.253

05. xyzzy 使用暦はどれくらいですか?

  15年くらい

06. xyzzy を使うようになったきっかけは何ですか?

  昔のことすぎて忘れましたが、学校UNIX 演習で Emacs を使っていたので、Windows でも使おうと思っていて見つけたんだと思います

07. xyzzy 以外に使っているテキストエディタはありますか?

  Atom, McEditor

08. xyzzy を使う前に Emacs 系のテキストエディタを使ったことはありますか?

  はい

09. xyzzy を主に何に利用していますか?

  プログラムを書いたり設定ファイルをいじったり、テキストに関することならだいたい

10. xyzzy が関連付けされているファイルタイプは何ですか?

  txt, md, log, ini, bat, html, xml, css, less, scss, sass, styl, js, coffee, pl, php, py, rb, java, sqlかにもあるかも

11. xyzzy他人に勧めたことはありますか? また、結果はどうでしたか?

  使い始めた当時同級生が何人か使っていました

12. xyzzyフリーじゃなかったとしたらいくら位の値段になると思いますか?

  今なら3000円くらいなら買う

13. xyzzy を何と呼んでいますか?

  じじー

14. xyzzy の好きな点・嫌いな点はどこですか?

  好きな点:動作をほぼ自在カスタマイズできる点

  嫌いな点:動作カスタマイズするとき不自由なところがある点

15. パソコンを立ち上げている時間の内、xyzzy をどのくらい使っていますか?

  業務ときは3割くらい?

16. キーバインドWindows風ですか? Emacs風ですか? オリジナルですか?

  Emacs

17. .xyzzyに書く派ですか? .siteinitに書く派ですか?

  必要に応じてそれぞれに

18. 拡張Lispバイトコンパイルしますか?

  してます

19. セレクションリージョン、どちらを多く使いますか?

  リージョン

20. xyzzy を使っていて挫折したことはありますか?

  はじめのころ五目並べになかなか勝てなくて挫折しました

21. xyzzy の使い方をどうやって学びましたか?

  実際にさわりながら。LispGoogle 先生さまさま

22. xyzzy を使うにあたって一番苦労したことは何ですか?

  xyzzy 自体Lisp APIマニュアル化されていないところ

23. xyzzy を使って目からウロコだった機能は何ですか?

  Buffer Menu

24. 今の xyzzy に望むことはありますか? またそれは何ですか?

  矩形機能に影響が出そうだけどプロポーショナルフォントへの対応と、絵文字など最近 Unicode に追加された文字への対応

25. Lisp はある程度読み書きできますか?

  xyzzy自分の使いやすいようにできる程度には

26. Lisp のほかに読み書きできるプログラム言語はありますか?

  JavaScript, ES 2016, Coffee Script, Action Script 3, C, C++のごく一部, Objective-C, Rust, Swift, Perl, PHP, Python, Ruby, bash, xyzzy lisp

27. 自分で作った 拡張Lisp を公開していますか?

  GitHubGist にあるので探してください

28. 拡張Lisp で導入しているものは何ですか? (多い方は代表的ものをお答えください)

  clickable-uri, jscript-mode, markdown-mode など

29. これは外せない! という 拡張Lisp はありますか? またそれは何ですか?

  いろいろやるので今ある拡張機能がないと無理

30. NetInstaller を利用していますか?

  はい

31. 拡張DLL を導入していますか? またそれは何ですか?

  popup-dododo のための Cairo とか?

32. ドキュメント(info,reference等) は使っていますか? また、それは何ですか?

  使っていません。自分で改造してキーワードを全部 Web検索するようにしています

33. ネット関係拡張Lisp(www-mode,kamail等)を使っていますか?

  xyttr

34. アウトライン系のLispは使っていますか? またそれは何ですか?

  使っていません

35. メモ系(changelog-memo,howm等)Lispは使っていますか? またそれは何ですか?

  使っていません

36. xyzzy五目並べはやったことがありますか? また、結果はどうでしたか?

  今なら結構勝てます

37. キーボードマクロは使いますか?

  たまに。テキストの整形処理なら正規表現ゴリゴリやるほうが多いです

38. 辞書機能は使いますか?

  使っていません。国語英和・和英、英英辞典iPhoneアプリを使います

39. xyzzy のファイラは使いますか?

  毎日仕事に欠かせません。便利にカスタマイズしすぎてむしろファイラだけのために新しく xyzzy 自体を起動することもあります

40. フレームは使いますか?

  あまり使いません。新しく(Windows における)ウィンドウ

41. セッションは使いますか?

  使っていません

42. メーリングリストには参加していますか? また、メール送信したことはありますか?

  ありません

43. 2chxyzzy 関連スレッド書き込みしたことはありますか? また、その頻度はどのらいですか?

  大昔にどうしてもわからないことがあって書き込んだ記憶があります

44. xyzzywikiに書き込みしたことはありますか? また、その頻度はどのくらいですか?

  拡張機能実装に関してちょろっと書き込んだ記憶があります

45. xyzzyメニューは表示していますか?

  たまにほしくなるので表示しています

46. xyzzyツールバーは表示していますか?

  隠しています

47. xyzzyファンクションバーは表示していますか?

  表示していません

48. xyzzyバッファバーは表示していますか?

  表示していません

49. 色、フォントなどは変更していますか? またそれは何ですか?

  色は暗い背景色ハイライトカラーはできるだけ色相を離したパステルカラーです。

  フォントConsolas に源新ゴシック Regular を組み合わせています

50. 最後に、一言お願いします。

  まだまだ xyzzy は不滅です

2018-07-25

anond:20180725160741

こういうブコメがあった。

バカロレアの哲学問題に比べれば、日本は青少年を子供扱い。 - ko2inte8cuのコメント / はてなブックマーク

フランス(って書いてないけど、「バカロレア哲学問題」って言ってるから、それが毎年話題になるフランスのことだと思う)の文系バカロレア「bac-L」は、「誰でも受かる」ことで有名です。確かに問題のものは難しいかも知れないが、採点基準はとても甘いのでしょう。そう言う意味では確かに大人なのかも知れないけどね。比較に出すのはどうかなぁ。

フランスから帰国後しばらく経つ私であるが、久々に調べてみよ、と思った。

今年のbac-L哲学問題は以下の通りだったようです。翻訳は私訳です。ますだにフランス語が堪能な人がいるとは思うけどそんなに多くはないとは思うけど、ファクトとの対照という意味で、原文併記しておきます

(参照:BAC 2018 SÉRIE L SUJET ET CORRIGÉ PHILOSOPHIE

  1. 文化は我々をより人間的にするか?(La culture nous rend-elle plus humain?)
  2. 我々は真実を諦めることができるか?(Peut-on renoncer à la vérité?)
  3. 次の文章説明せよ(Expliquer le texte suivant)

Souvent nous ne savons pas ce que nous souhaitons ou ce que nous craignons. Nous pouvons caresser un souhait pendant des années entières, sans nous l’avouer, sans même en prendre clairement conscience; c’est que l’intellect n’en doit rien savoir, c’est qu’une révélation nous sembledangereuse pour notre amour-propre, pour la bonne opinion que nous tenons à avoir de nous-mêmes; mais quand ce souhait vient à se réaliser, notre propre joie nous apprend, non sans nous causer une certaine confusion, que nous appelions cet événement de tous nos vœux; tel est le cas de la mort d’un procheparentdont nous héritons.

Et quantà ce que nous craignons, nous ne le savons souvent pas, parceque nous n’avons pas le courage d’en prendre clairement conscience. Souvent même nous nous trompons entièrement sur le motif véritable de notre action ou de notre abstention, jusqu’à ce qu’un hasard nous dévoile le mystère. Nous apprenons alors que nous nous étions mépris sur le motif véritable, que nous n’osions pas nous l’avouer, parcequ’il ne répondait nullement à la bonne opinion que nous avons de nous-mêmes. Ainsi, nous nous abstenons d’une certaine action, pour des raisons purement morales à notre avis;mais après coup nous apprenons que la peur seule nous retenait, puisque, une fois tout danger disparu, nous commettons cette action.

SCHOPENHAUER, Le monde comme volonet comme représentation,1818.

3問目は長くて訳すの大変なのでご容赦ください。ショーペンハウエルみたいです。日本センター試験ショーペンハウエル文章のものが出るか、と言うと、出ることもあるかも知れませんが、まあ出ても4択問題だと思うので、確かに問題は難しいですね。

さて、確かにある意味難しい、難しいが、しかしこの試験は誰でも受かる。つまりちょっとウケ狙いなところがあることが否めません。多分これは「太陽は西から昇るか東から昇るか」と言う試験にしたとしても、おそらく受験者の点数分布は変わらないと考えられます。どうせ誰でも受かると言う状況下にある場合問題文そのもの難易度意味があるのかどうか不定になる、と言うある意味哲学的問いかけなのかも知れん。。。

いずれにせよそう言う試験な訳で、フランス人は誰もがこう言うレベルにある、と言うのはちょっと。そうは思えません。比較に出すのはちょっと間違いだと思います

ところでフランスではバカロレアセンター試験みたいなもので、一般大学はこれ以外に試験はありません。しかし一部のエリート希望の人は、準備学級を2年こなした上で、グランゼコール受験します。グランゼコール哲学は、本気で解くことを要求されます。こう言うとき問題難易度について論じる意味が出てくるのだと考えれます

グランゼコールの一つ、高等師範学校2015年入学試験は「説明せよ(Expliquer)」。この一問だけで、試験時間は6時間だったとのこと。

まあ、なんと言うか、ここまでくるとねぇ。

2018-07-14

痴漢についての日本人女性へのインタビュー動画が興味深い

What Japanese Girls Think of Chikan (molesting girls on trains)

https://m.youtube.com/watch?v=3yP0iGVNZmw

この動画が中々興味深い。

まず、インタビューを受けた女性のうち多くが、痴漢にあったことがあると言っている。

電車が揺れたからかなと思って距離を置いたら追いかけられた」という話も。

痴漢被害の多さに対して、コメ欄英語ばかりなのだが、ショックを受けた風の外国人コメントが集まっている。

Robzilla_92

Damn, it's really sad and heartbreaking to hear how many of them said yes to being molested...

更に、「痴漢はされた方にも悪いところがある。服装とか…」と答える女性もいた。(「スカート全降ろしの子痴漢されたので服装関係ない」と言ってる女子高生らもいたが)

それにショックを受ける外国人も多いようだ。

The comments that were the most shocking was that they would actually take part of the blame for the situation happening. Incredible

254

訳:「一番ショッキングだったコメントは、痴漢にあう方にも責任があるというコメント。信じられない」

Some Random Edgy Guy

Interesting, most women seem to think it's partly their fault, which is worrying. Maybe they're just too considerate and not wanting to give definitive judgement, but if someone molests then he (or she) is on the offensive, taking action and clearly to be blamed. It doesn't matter how short the skirt is or sth like that, if you grope - you're to blame.

2 か月前(編集済み)

18

訳:「興味深いことに多くの女性痴漢被害について自分にも非があると考えているのが心配だ。(略)スカートがどれほど短いかなんて関係ない、痴漢は悪であり、非難されるべきだ」


Taj Parker

It’s very depressing seeing the ratios. It should’ve been 100% the gropers fault. There’s things that i love about japan but the way they treat women brain washing them into thinking this is somehow their fault is unfathomable.

2 か月前

115

訳:100%非があるのは加害者側だ。日本について私が愛することは沢山あるが、女性痴漢被害者にも非があると考えるように洗脳されているのは恐ろしい。

更に、痴漢を捕まえたり訴えたりはしなかった、と皆答えている。

手続き煩雑から」「周りも見て見ぬ振りで助けてくれない」「現行犯じゃないと逮捕されないから」という答えに問題が詰まっているように思う。

Justin

Culture shock. Very passive attitudes toward sexual harassment.

2 か月前

24

訳:「彼女達の、セクシャルハラスメントに対する受容的な態度にカルチャーショックを受けた」

この動画インタビューを受けていた中には失礼ながらいわゆる美人とは言えない人もいた。

海外コメントは皆真剣に受け止めた内容だったが、日本人の反応は「自意識過剰だブス!」「冤罪が専用車両が」ばかりであろうことを考えると恥ずかしくなる。

案の定一つだけ冤罪がどうのというコメントあったけど、日本人の美少女アイコンオタクだったし。

2018-06-24

差別に関する利用規約を調べてみた

大雑把なまとめ

差別」や「ヘイト」などの表現が出てこないのは モバゲーNAVERniconicoYahoo!JAPAN ※すべて「他者権利侵害禁止」などの記載のみ

差別」の具体例が出てこないのは AbemaTVLivedoor小説家になろう

差別」の具体例が一番多いのが Facebookはてな11種 ☆はてな優秀!えらい!

ユニーク差別の具体例

Facebookの「移民ステータス」(移民の滞留資格のことでいいのかな?)

はてなの「収入

YouTubeの「従軍経験

メジャーサイト利用規約から差別に関する部分のみ抜粋ドメインアルファベット順)

対象にしたサイトはてなによく上がってきてコメント機能などがあるサイトをできるだけ網羅したつもりです。

URLがいっぱいあると投稿できないみたいなのでh抜きで書いてます

AbemaTV

ttps://abema.tv/about/terms

第8条(禁止事項)

(5)当社または第三者を不当に差別しまたは誹謗中傷する行為、当社または本サービス名誉・信用を毀損する行為

Ameba

ttp://helps.ameba.jp/rules/post_104.html

第13条(禁止事項)

4.本条第1項に定める禁止事項とは以下に定めるとおりとします。

(2) 他の会員や利用者、当社、その他第三者中傷したり、名誉を傷つけたりするもの権利侵害するもの

人種民族性別信条社会的身分居住地身体的特徴、病歴、教育財産等による差別につながる表現・内容の送信

Facebook

ttps://www.facebook.com/communitystandards/objectionable_content/

12. ヘイトスピーチ

Facebookが考えるヘイトスピーチとは、人種民族国籍信仰性的指向性別ジェンダー、性同一性、重度の病気や障がいなど、保護特性と呼ばれるもの理由に人々を直接攻撃することです。Facebookでは、移民ステータスに関する保護提供しています

GREE

ttps://pid.gree.net/?action=term_generic&amp;page=terms_pc

9. 禁止行為について

(1) 反社会的行為

i. 民族人種性別・年齢等等による差別につながる表現掲載行為

はてな

ttp://www.hatena.ne.jp/rule/rule

第6条(禁止事項)

2. ユーザーは、本サービスを利用するに際し、以下のような社会的不適切行為を行ってはなりません。

b. 人種民族信条性別社会的身分居住場所身体的特徴、病歴、教育財産及び収入等を根拠にする差別表現行為

Livedoor

ttp://www.livedoor.com/rules/

1.4 禁止行為

1.4.1 禁止事由

3.他者差別もしくは誹謗中傷し、他者名誉もしくは信用を毀損侮辱し、もしくは業務妨害する行為、または、そのおそれのある行為

モバゲー

ttp://www.mbga.jp/www/kiyaku.html

第5条 モバゲー会員記述情報について

1.~前略~モバゲー会員は以下の情報記述することはできません。

d. 特許権実用新案権意匠権商標権著作権肖像権その他の他人権利侵害するもの

NAVER

ttps://help.naver.jp/rules/

第3条(禁止事項)

(2) 公の秩序または善良の風俗を害するおそれのある行為(過度に暴力的表現露骨性的表現、その他反社会的な内容を含み他人不快感を与える表現投稿掲載、公開、送信する行為などを含みます。)。

(3) 当社または第三者権利著作権商標権特許権等の知的財産権名誉権、プライバシー権、その他法令上または契約上の権利を広く含みます。)を侵害する行為

niconico

ttp://ex.nicovideo.jp/base/guideline

3.コンテンツによる表現の自由は無制限ではありません

他者権利侵害する行為

例)

他者名誉社会的信用、評判、プライバシー侵害する内容

他者基本的人権著作権等の知的財産権、その他の権利侵害する内容

note

ttps://note.mu/terms

8.禁止事項

差別につながる民族宗教人種性別・年齢等に関するもの

小説家になろう

ttps://syosetu.com/site/rule/

第14条 禁止事項

3. 当グループもしくは他者を不当に差別もしくは誹謗中傷し、他者への不当な差別助長し、又はその名誉もしくは信用を毀損する行為

Togetter

ttps://togetter.com/info/terms

第6条 禁止行為について

4. トゥギャッター若しくは第三者を不当に差別若しくは誹謗中傷し、又はトゥギャッター若しくは第三者の信用若しくは名誉プライバシー権パブリシティ権肖像権若しくはその他一切の権利侵害する行為若しくは侵害するおそれのある行為

7. 国籍民族人種社会的身分性別思想、信教、又は年齢等に関する差別的な表現一般ユーザーが感じ得る行為

Twitter

ttps://help.twitter.com/ja/rules-and-policies/twitter-rules

攻撃的な行為ヘイト行為

ヘイト行為: 人種民族出身地信仰している宗教性的指向性別、性同一性、年齢、障碍、深刻な疾患を理由とした他者への暴力行為脅迫嫌がらせ助長する投稿を禁じます

Yahoo! JAPAN

ttps://about.yahoo.co.jp/docs/info/terms/chapter1.html

第1章 総則

7. サービス利用にあたっての順守事項

(2) 社会規範公序良俗に反するものや、他人権利侵害し、または他人迷惑となるようなものを、投稿掲載、開示、提供または送信(以下これらを総称して「投稿など」といいます)したりする行為

YouTube

ttps://support.google.com/youtube/answer/2801939?hl=ja

悪意のある表現とは、次のような特性に基づいて個人集団に対する暴力助長したり差別扇動したりするようなコンテンツを指します。

人種または民族出自

宗教

身体障がい

性別

・年齢

従軍経験

性的指向性 / 性同一性

2018-06-05

メルカリのデパコスのやつ

↓これな

http://b.hatena.ne.jp/entry/s/note.mu/marketing/n/n4e8afefe647d

想像力ないやつ多すぎて笑った。

特に公式通販してるし他のECでもあるから」って当たり前のように指摘してるやつが大量の☆ついてたけどさ、

そもそも公式通販してる」って発想まで行きつかないユーザーが多いかメルカリあんなデパコス売れてるんじゃないの?

あの記事本質メルカリユーザー世界の狭さを表してると思うんだ。

彼女らのインタビューを見てみればわかるけど、出てきている情報調達手段が「YouTuber」「twitter」「LIPS」「メルカリしかないんだぜ。

おそらく他の通販があるという考えを脳みそシャットダウンしているか思考停止してんだよ。

地元にはデパートが無い。という負の感情が「通販で買える」という考えを遮っている気がする。

消費者心理プロセスに「AIDMA」ってあるだろ。今は電通が「AISAS (注意・関心・検索・購入・共有)」として提唱してるやつな。

俺はこの記事を読んで、今はもう「AISAS」の時代じゃないって思ったね。

・Attention(注意)

・Interest(関心)

この時点で一旦思考停止するやつが多いんだよ。

からこの後に

・Given(与えられる)

が付いて、その後

・Search(検索

Action(行動、購入)

Share(共有)

が続く。つまり「AIGSAS」になってんだ。

他者から情報や知恵を与えられない限り動くことの出来ない奴が増えてるって怖くないか

これが日本だけなのか世界で起きてることなのかわからないが、日本だけで起きてんなら義務教育期間の教え方が悪いんだろうよ。

Siriかにオススメのディナーをとか言ってるやついるけど自分で調べろよって思うね。あれも与えられた情報に従って行動してるやつじゃん。

脳みそ停止してるやつら多くて怖くて震えるわ

2018-05-26

By Lick Watermelon May 25, 2018 588 米国驚愕法案下院を通過した。その名も「国民死刑制度」だ。これは相次ぐ銃犯罪への対抗策として提出された一連の法案の一部で、この法案国民は誰でも任意相手死刑にできるという衝撃の内容だ。法案を提出した野党連合代表ロバートエリクソン議員は「アメリカ潜在的世界中の銃犯罪の温床になってきました。国民銃社会を脱却するときに来ています。銃に代わって国民を守るのがこの法案です」と語る。同制度では各州政府に設置される投票箱にアメリカ人の氏名・年齢・住所・職業などを記入して投函すると、アイデンティティ確認された人物を無条件に死刑にできる。在職中のアメリカ大統領および議会議員など任期中の執行猶予されるというが、例外は一切認められていない。エリクソン議員によれば「現在では読み書きができれば銃を手に入れ、任意人物を射殺することができますが、実際には銃撃によって国民が半減するには至っていません。この制度でも同様の難しさであらゆる人物排除できますが、相互の信頼と隣人愛が正しく機能していれば乱用される事例は起こらないはずです」とのこと。また、執行事務処理などを経て早くて1週間程度を要すると見積もられている。

全文→https://www.nytimes.com/2018/05/25/us/politics/banks-gun-sales-republicans.html?rref=collection%2Fsectioncollection%2Fpolitics&action=click&contentCollection=politics&region=stream&module=stream_unit&version=latest&contentPlacement=3&pgtype=sectionfront

2018-04-19

ELECTRICAL COMMUNICATION

引き裂かれてる IMAGINATION

誰にも 邪魔させない

Sparkしてる ROCK ACTION

打ち砕け MEDITATION

狂った現実(いま)を焼き捨てたい

2018-02-25

さらPDCA時代はOODA

OODAループは「観察(Observation)・情勢判断(Orientation)・意思決定(Decision)・行動(Action)」の4段階からなる。

最初の観察では五感を駆使して現実をあるがままに直観し、暗黙知的に知覚する。

最新の脳科学でも知覚的な情報ほとんど身体が吸収し、脳はそこからしみ出る一部の情報認識していることが判明している。

次の情勢判断では、過去経験自身資質、身についた文化など自らが蓄積してきた暗黙知と新たに知覚した情報をもとに判断する。

そして、対応策を意思決定し、行動に移す。

OODAループ対照的なのがPDCAサイクルだ。「計画(Plan)・実行(Do)・評価(Check)・改善Action)」のプロセスのうち、計画(P)はOODAループ意思決定(D)に相当する。

富士フイルムホールディングス古森重隆会長は、PDCAサイクル見直し、See-Think-Plan-Do(STPD)というサイクルに改良したが、この前段階にあたる「See-Think(観察・判断)」の重要性を訴えているほどだ。

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