「プログラマー」を含む日記 RSS

はてなキーワード: プログラマーとは

2018-11-20

デスクトップの開発なんて、大した雇用を生まないだろw

しか電子カルテとかPOSのクソみたいなUIVBで作ってるけど、企業としてはLinuxサーバー管理できる人の方が欲しいのでは?

Mac Serverなんて失敗に終わってるし、Windows Serverはメジャーとは言えない

DockerだってLinuxを分割するものであって、それWindowsカーネルでもできるよ、とかMSが言ったのはその後

世の中のシステムは基本Webベースになって、デスクトップまでElectronとかになってきてるけど、Electronでフォトショが作れるか?というと、まだまだ無理だと思う

無理だと思うが、ちょっとしたGUIを作るのにHTMLXAMLは便利だ

でも、XAMLだのQtだのクロスプラットフォーム考える前に、システムトータルで考えると、Webベースですむことがほとんどに思う

そうではない画像処理なり、ネイティブでないとハードがいじれなかったり、という分野はあるが、そんなに雇用を生んでない

あと、ブコメにあるMSの命はOfficeとともになんてとんでもない嘘だ

現在MSAzureなどに主軸を移してる

WindowsOfficeは基本サブスクリプションで、使うときに金を払うか、ほぼ無償のようになっていく

そうでないと、無償Web版のOfficeなんか作らん

デスクトップアプリを買い切るビジネスモデルはもう崩壊してる

崩壊させたのはApple

Appleはかつての汎用機のようなビジネスモデルソフトハードのおまけ、を復活させた

しかし、Appleはそれを維持するためには、永遠に使い捨てハードを開発し続けることになる

魅力的なガジェット永遠に作り続ける、ものづくりは基本的ソフトサービスよりリスクが高い

その辺にApple終焉が隠れている

MSは、どちらかというとGoogle寄りのビジネスモデルに変化していく

といっても、Bingはクソだw

が、圧倒的に現在MSがかつてと違うのは、自分たち技術の中身をかなり開示したり、オープンソースに貢献したり、GitHubへの出資もその一貫であり、参照実装なども惜しみなく公開して、プログラマーを惹き付け、大きなコミュニティーエコシステム形成しようとしている

.Net coreなどもその一貫であり、ASP.NETはそこそこ実用段階に思う

デスクトップ系は前途多難だが、ネットサーバー管理周りはLinuxであれ、応用が効く

そこで特にAzureとの併用効果が発揮される

Azure管理PowerShellなどで行える

この辺はOSまり関係なくなってくる

現在MSにとって、デスクトップソフトウェアは門のような役割になっていく

もう主役ではないのだ

この動きはオープンソースXamarinのような戦略を加速させる

.NETもよりオープンものになっていく

.NET coreの成果がWindowsに逆流していくこともあるだろう

もう、デスクトップアプリ成功する時代は終わってる

一部の勝ち組を除いて、デスクトップアプリしかも箱で買い切らせるようなビジネスモデル成功する分野は限られてる

AdobeAutoCADサブスクリプション方式

この流れはどんどん加速する

ソフトウェアは基本無償になっていく

AdobeOfficeサブスクリプション方式であり、他のデスクトップアプリも使うとき使う時間だけ払うようになる

ちょっとしたデスクトップアプリでは金が取れない

主役はクラウドコンピューティング、というか計算機資源を売る時代になる

これも考えようによってはサブスクリプションである

すべてはサービス化していく

所有する時代は終わる

MSは二手三手先をちゃんと読んでる

WindowsOfficeが主役から脇役になる時代を分かっている

2018-11-19

1ヶ月でJavaをマスターする学習カリキュラム

どうやったらプログラミング経験者を1ヶ月で一人前のJavaプログラマーにできるだろうか?

 

基礎

 

応用

 

これらを1ヶ月程度で詰め込むことは可能なのだろうか?

1ヶ月でJavaマスターした人がいたら、教材とか順番を教えてください。m(__)m

 

Railsエンジニア研修

はてなブックマークでバズってた宣伝を見ると、4ヶ月の研修Railsエンジニアを育成していた。

研修の成果を3行で

 

ざっくりスケジュール

4月
5月6月
7月

かなり余裕のあるカリキュラムで、OOPの基本を学ぶなら、(静的な型付けがないけど)Rubyはいいよね。

Java最初に覚えるべき知識が多過ぎて、初心者学習用途には向いてないと思う。

PythonRubyなど、グル言語LLプログラミングの基本を理解する。その後にJavaで肉付けする。という順番が良いと思う。

 

でも、いきなりJava現場に放り込まれたら、そうも言ってられないわけで、無理矢理でも1ヶ月でJavaマスターするしかない。

この無理ゲークリアするためには、教材と順番を工夫するしかないだろう。

どうだろ?

増田プログラマー養成講座 その22 データベース設計 概念物理

前回は、DB設計の(1)要件定義を学びました。

今回は、DB設計の(2)概念設計、(3)論理設計、(4)物理設計を見てみましょう。

 

DB設計の流れ

  1. 要件定義
  2. 概念設計
  3. 論理設計
  4. 物理設計

 

DB設計の教材

データベース解説本やWeb記事を調べてみた。

  1. 本「スッキリわかるSQL入門」 第12章 テーブル設計 https://book.impress.co.jp/books/1111101167
  2. Web記事「できるエンジニアになるためのちょい上DB術」 https://www.edifist.co.jp/lecture/dbdesign/

 

スッキリわかるSQL入門」のDB設計説明コンパクトにまとまっていて、分かりやすいと思いました。(是非一度読んでみてください。)

 

 

 

概念設計論理設計物理設計概要

スッキリわかるSQL入門」第12章の説明(p.374)を参考にしてみよう。(詳しくは本を読んでみてください。)

 

概念設計

管理すべき情報はどのようなものなのかを整理します。

データベースシステムに関することは考えず、要件に登場する情報だけをザックリと把握します。

たとえば、家計簿データベースであれば、扱うべき情報として「利用者情報」や「入出金情報」などがあることを明確にします。

また、情報間で関連がある場合、どのような関係があるかも併せて整理します。

 

論理設計

概念設計で明らかになった各情報について、RDBを使う前提で構造を整理し詳しく具体化していきます

論理設計では「どのようなテーブルを作り、それぞれのテーブルにどのような列を作るか」まで明らかにすれば十分です。

型や制約など、付随的な部分については考えません。

 

物理設計

特定DBMS製品(たとえばMySQL)を使う前提に立ち、論理設計で明らかになった各テーブルについて、その内容を詳しく具体化していきます

すべてのテーブルのすべての列について、型、インデックス、制約、デフォルト値など、テーブル作成必要なすべての要素を確定させます

この物理設計に基づいて、CREATE TABLE文などを含む一連のDDL文を作成し、最終的にデータベース内にテーブル作成することができます

 

本書の「図12-4 データベース構築のおおまかな流れ」も参考にして欲しい。

入力 お客様要件(全国の倉庫商品があって、その在庫管理したいんだけど~)

 

 

●処理 DB設計作業

 ・概念設計:(商品)(在庫)(倉庫) …ER図を作成

 ・論理設計:[商品][在庫][倉庫]    …正規化

 ・物理設計:[SHOHIN][ZAIKO][SOUKO]  …使うDB仕様に合わせてテーブル定義表を作成

 

 

●出力 DDL

 ・CREATE TABLE

 ・CREATE VIEW

 ・CREATE INDEX

 

 

 

(2) 概念設計

 

ER図とは?

ER図とは、「Entity-relationship Diagram」(実体関連図)の省略形だ。

 

ER図の用語

コンピューター用語英語ばっかりだから日本語にして欲しいよねw

 

ER図の書き方
  1. エンティティ―」は四角い箱で書く。
  2. 箱の中にエンティティ―の詳細な中身=「アトリビュート」を書く。
  3. 箱と箱を「リレーション」の線でつなぐ。
  4. 線の両端に「カーディナリティー」「オプショナリティー」の記号を書く。

 

ER図で使う記号は、「IE記法」や「IDEF1X記法」など、いろいろな規格がある。

情報処理技術者試験のデータベーススペシャリストの問題では、「UML」という図の記法も使われる。

 

 

 

(3) 論理設計

 

正規化とは?

正規化 Normalization」とは、データの形を「正規形」(Normal form)に変えること。

ざっくり言うと、テーブル(表)を分割して、データの重複や不整合を解消する作業だ。

 

テーブルの形を変えていくステップには、第1~第5まで5段階ある。

  1. 第1正規
  2. 第2正規
  3. 第3正規
  4. 第4正規
  5. 第5正規

それぞれの変形方法について理解しておこう。

実務では第3正規形まで正規化できればとりあえずOK

 

第3.5正規形(ボイス-コッド正規形)

第3正規形をより厳密にした「ボイス-コッド正規形」という形もある。

第3と第4の間なので「第3.5正規形」とも呼ばれている。

(ボイス-コッド形もカウントに入れたら、第1~第5、+第3.5で計6段階になる。)

 

非正規

正規化を進めると、SQLJOIN」の利用が増えてくる。JOINを多用する処理は遅い=DBの性能低下につながる。

第3正規形まで分割しても、実際に使ってみて遅い場合は、第2正規形や第1正規形に戻して使うこともある。これを「非正規化」とか「正規化を崩す」などという。

 

RDBでは処理速度が遅くなる場合、代わりに「NoSQL」を使う場合もある。

 

 

 

(4) 物理設計

 

時間がない場合、先にGUIDB管理ツールでデータベース作成してしまい、その後でテーブル定義表を作成することもある。

 

DB設計に慣れてきたら上記の各段階はすっ飛ばして、いきなりデータベースを作れるようになるだろう。

 

ここまで、SQLの使い方やデータベース設計について学びました。

次回は、その他のSQLに関連する話も見てみよう。

 


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:20181119224031 増田プログラマー養成講座 その22 データベース設計 概念物理 ←★今ここ★

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

2018-11-18

未踏プログラマー東大指導教官の下に就いて、東大卒って自称してる人がいるけど、俺もそうすれば良かったか

俺はロンダリング目的じゃなかったんだが、院進学で大した成果もないよりは肩書きを得た方が人生有利になるんだよなあ

な~にが「学生の頃にもっと勉強しとけばよかった」だ

ただの愚痴

もっと子供のころ勉強しとけばよかった」自分はこの言葉に疑問を感じる。

そして親に「だからあれほど勉強しとけと言ったのに、いう事を聞かなかったお前が悪い」と言われると大人げながらカチンとくる。←親元にまだいるんかいという突込みはなしでお願いしたい

自分は確かに学生の頃勉強を全くせず親から勉強しろ!!」と言われ続けたが全くしなかった。

とにかく「勉強はつまらん」という感情が強すぎて大人になったら勉強なんて絶対しないだろうなと思っていた。

しかし、予想とは裏腹に大人になった今は勉強がそこそこ楽しい

専門学生時にプログラミングに触れ、もっとできるようになりたいという要求が膨らみ

必死になってプログラミング言語を学んだ(本当に基礎的な部分)。

プログラム言語をある程度自由に使えるようになると次は何かを作ってみたいと思うものだ。

そこで初めて、英語(APIやらライブラリの使い方やら)と数学の壁にぶち当たる。

ここで学生時代にしっかりと親の言うことを聞き、英語やら数学やらを勉強していれば、

しかしたら超絶ホワイト高収入会社就職できるほどのプログラマーになれていたのかもしれない。

しかしだ、自分は今でも「もっと勉強しとけばよかったー!!」なんて思ったことはない。

しろ学校教育とかやっぱ糞だわ」とか言っているぐらいだ。

学生の頃はただ点数のためだけに勉強して、

教師が「社会で役に立つ」と言う割には具体的な例を出す先生はいなかった。

理科歴史国語(特に漢文)なんてマジで使わん。

なぜやりたい人だけにやらせないのかと疑問に思うばかりだ。

それをすることでどんなメリットがあるかもわからないのに、

淡々勉強をするなんて自分には絶対に無理。

どうせなら、日常生活に役立つ知識を教えてくれよ。

自分学生の頃に、英語数学ができればプログラミングもっと上達できることを知っていたら。

日本とは違い、外国人のノリがめちゃくちゃ良い(人間性は別として)なんて知っていたら、

もう少し変わった人生を送っていたのかもしれない。

しかに親には「勉強しろ」とは言われた。

だけど!

そんなこと言う親自体が、未だに英語数学ができないのであれば人に言う資格はない!

仮にでも人のために思って言っているのであれば、なぜ自分が今勉強をしない!!

勉強しないという事は「勉強する必要がない」という事を証明していることに気づいてくれ!

なにか違う愚痴になっている気がするが...

話を戻そう。

もっと早くに必要性に気が付いていれば...

と思っていても、こればかりは環境によるとしか言いようがない。

我が家にはPCなかったから、プログラミングしようなんて全く思わなかっただろうし。

必要性がわからなければやらない。

しかし、必要性や楽しさがわかればどんな人間でも勉強は楽しくなると思う。

勉強しとけばよかった」

それを思ったんなら今からやろうぜ!

学生の頃に戻っても、記憶がなかったら絶対やらないしw

記憶がある状態で戻っても、理科とか化学家庭科とか、

自分勉強したいこと以外のテスト勉強もしなきゃいけないんだぜ?嫌だろw?

からさ、そんなことで嘆かずに今からやればええねん。

もう年だからとか関係ないよ。

パチンコとかはできんじゃん? 新台がでてもルール覚えるやろ(我が家おやじ)

興味があることがない?

やったことないやつ片っ端からやってみろ。

一つぐらい「実は偏見面白かった」はあるはずだ。

何も考えずに大声で言いたいこと叫ぶ感じで、匿名日記も悪くないw


ちなみに親との仲は悪くはないぞ!

お金欲しい。

2018-11-15

anond:20181115064814

天才プログラマーが生まれる生まれない以前にやりがい搾取をやめるのと労働者IT離れを防ぐのが先だと思うが?

頭がいいだけじゃ不足で、経験勉強の積み重ねが必要なのに、その前に使い潰されて去っていくからな。

天才プログラマーとなりえたやつだって、その前に潰れてIT業界を去ればただのおっさんで終わりだ。

将棋廃止するべき

将棋プロ創造性、記憶力、判断力集中力論理的思考力などの能力が突出している。

せっかくの天才頭脳将棋などという、生産性ゼロのくだらない無益な遊びに費やすなんてどうかしている。

羽生善治藤井聡太だって将棋が無い世界に生まれていたら、天才プログラマーになって世界を変革する素晴らしいサービスを生み出していただろう。

将棋なんてくだらないものがあるせいで貴重な才能が失われている。将棋を今すぐ廃止するべき。

2018-11-12

anond:20181112083520

安心下さい。

私もそういう仕事をしてきた一人です。おそらく旦那さんはとても有能なシステムエンジニアプログラマーなのだと思います。ひょっとするとフリーランス複数会社から仕事を頼まれ活躍されているのかもしれません。こういう人はいろんなお客さんから引っ張りだこなので電話メールもひっきりなしに鳴りますしたまには会社に泊まり込みで仕事をされていますが、ご心配いりません。「優秀な技術者」としてお客さんから人気があるだけです。ひょっとすると年収は3000万円くらいあるかもしれません。

なお、自宅にある巨大なパソコンは「サーバー」という業務用のパソコンで、通常はお気づきの通り「データセンター」という専用の建物に設置するものですからものすごく音も大きいし電気代もかかります。くれぐれも電源コードに足を引っかけて電源を落とさないようにお気を付けください。(これをやると復旧と顧客へのお詫び行脚のため旦那さんが1か月は帰宅困難になります

2018-11-11

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

前回まで、データベースを使ったWebアプリ作成して、SQLの使い方を学びました。

今回からデータベース設計について学んでみよう。

 

参考書

これらの参考書ガッツリ読めば、データベース設計のやり方は分かる。

 

リレーショナル・データベースは昔からある枯れた(=安定した)技術なので、鉄板ノウハウが蓄積されている。

先人の知恵に沿って使うなら、データベース設計で悩む余地は少ない。=攻略は意外と簡単

 

データベーススペシャリスト教科書

経済産業省認定情報処理技術者試験で「データベーススペシャリスト」という資格もある。

 

データベースエンジニア」という肩書きを名乗れば、ただのプログラマーよりも高給取りになれる。勉強した後、自分知識棚卸してみるつもりで資格を取ってみるのもいいだろう。

データベーススペシャリスト試験教科書には、浅く広くDB知識網羅されているので、1度眺めてみたらいいかも。

 

 

 

データベース設計の流れ

データベース設計(database design)は、ソフトウェア開発工程においてデータベースの詳細なデータモデルを作る工程である

 

  1. 要件定義:「CRUD表」の作成
  2. 概念設計:「概念モデル」の作成 → ER図(実体参照モデル)の作成
  3. 論理設計:「論理モデル」の作成 → テーブル定義表の作成
  4. 物理設計:「物理モデル」の作成 → 論理モデルを実際にデータベース上で作成インデックス作成など

(分類方法にもよるけど)データベース設計は、このようなステップを経る。それでは順番に見ていこう。

 

 

 

1.1 永続化するデータを決定する

いわゆる「要件定義」だ。

実際にシステムを使うことになるユーザーヒアリング調査して、データベース内に永続化(格納)すべきデータを決定する。

 

CRUD表とは?

データCRUD操作(Create 追加、Read 参照、Update 更新Delete 削除)が、いつ、どこで発生するか?をまとめた表のこと。

 

データベース 設計 CRUD表」等のキーワードGoogle画像検索してみよう。どんな表か分かる。

↑このページの「図2 標準的CRUD図(例)」みたいな表を作って確認すれば、扱うデータの過不足がなくなる。

 

複雑なシステムだと、完全なCRUD表を作るのは面倒だよねw

だが安心して欲しい!

押さえておくべきポイントはあるので、そこだけ手抜きをしなければ、大失敗は避けられるだろう。

 

マスタートランザクションの違い

実は、後でテーブルを作るときに、データ更新頻度によって2種類に分類できるんだ。

 

 

トランザクションデータの扱いは、気を付けないとデータベースの性能低下に直結する。

どっちのタイプデータなのか?要件定義の段階から見分ける癖を付けておこう。

 

要件定義練習

試しに、Amazonのような通販サイトなら、どんなデータを扱うことになるのか?想像してみよう。

仕入先、在庫数、受発注配送会社顧客情報商品カテゴリー、商品スペック、などいろいろあるだろう。

いつどこでCRUDが発生するか?どれがマスターデータで、どれがトランザクションデータだろうか?

 

 

 

(ここまでの説明URLを8個も貼ってしまったので、続きは次回にしよう。)

次回は「概念設計」以降のステップを見てみよう。

 


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:20181119224031 増田プログラマー養成講座 その22 データベース設計 概念物理

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

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

anond:20181110122835

単純作業連続を厭う怠惰なやつじゃないとプログラマーは勤まらんと思ってる。

単純作業ならスクリプトしましょうよ、抽象化して汎用的に使えるメソッドを作りましょうよ。

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

プログラマーになってもQoLは上がらないぞ

たまに話題になるのでこの際はっきり言わせてもらうがプログラマーになる≒幸せって図式はない。

世の中にいるIT系共が自分たち仕事楽しいと言ってるのは典型的なワーカーホリックで、実際彼らの人生幸せかと言えば、まあ幸せでは有るんだろうが一般的幸せとは程遠い。

ワタミで働いている痩せこけたガイコツが目をランランと輝かせながら、自分宗派を広めるための献身ドーパミンどばどばになっている姿を幸福と思えるのなら、君もIT業界の門を叩くべきだろう。

それは幸福ではないと思っているのなら間違ってもそっちに行ってはいけない。

たとえ君が情報系の専門学校をもうすぐ卒業するとしてもだ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

うける。

anond:20181107032904

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

うける。

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

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

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

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

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

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

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

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

2018-11-06

プログラマーになったら幸せになれるか」を確認したい

かい方法いかな。

今の仕事をやめたり休んだりすることなく、転職してプログラマーになったとして果たして幸せになれるのかを確かめたい。

そもそも30過ぎのおっさんプログラマーじゃなくてSESしかなれないなら諦めるけど。

工程管理ごっこだったら今の仕事で散々やっているし、その虚無さも嫌というほど知っていて、だからこそ手に職をつけたいと思っているわけだし。

javaにも負けず

javaにも負けず

Cにも負けず

javascriptにもPythonの難しさにも負けぬ丈夫な頭を持ち

欲はあり

決していからず

いつも静かに笑っている


一日に一時間RubySwiftと少しのPHPをやり

あらゆることを

自分勘定にもちろん入れて よく見聞きし分かり

そして忘れる


実家の二階の自分の部屋の小さな一角の隅にいて

東にサイトUIあればアレ拡張機能欲しいと言い

西にプログラマー募集あれば行ってやりたいと叫び

南に酷いUIあればスタイルシート独自に変更を加え

北にアプリゲーム作りたいと思わばすぐさまとりかかり


ようやくできたプログラムに涙を流し

完成したゲームバグオロオロ潰し

みんなに「すごい」「なんやコイツ天才やんけ」「神か」と呼ばれ

褒められ

みんなから尊敬してもらえ

そういうもの


私はなりたかった…

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