つよつよにあこがれるプログラマの日記

子育てとかプログラムとか日々の事をここに残します。ぼちぼちやってます。

プログラマと発達障害

昨日の世界仰天ニュースで、発達障害のことをやっていた(正確には多動性障害とアスペルガー症候群を持った人のドキュメンタリー風)

以前の職場で全く同じ症状の人と仕事をしたことがあり、思い起こしながらテレビを見ていた。

その人はパートナーの社員さんだったのだが(仮称Nさん)、変な発言や一人で作業をしているときの暴走が多かった。
でも、僕はある程度仕事を一緒にするにつれてNさんの特性がわかってきて、伝え方を気を付けたり、レビューをなるべく挟むようにして細かくチェックしたり、彼がストレスを感じにくい様にしていた。

しかし、まわりのおじさん先輩社員たちは、Nさんと同じチームで仕事したくないとか言ったり、Nさんを無視したりしていた。

最終的に「皆、Nさんを無視しちゃうから、お前しか面倒見れない。頼むぞ。」というクソ上司のトンデモ発言のあと、Nさんはずっとぼくのチームで働くことになった。

--
当時は発達障害という言葉はあまり知られてなかったけど、僕は適材適所で工夫して、Nさんと一緒にちゃんと働けていたと思う。

でも、相手の特性を理解したり、相手によってしゃべり方を変えたりというのは、相手が発達障害の人じゃなくても普通にしていることだと思う。

そこで、発達障害という言葉に少し疑問を感じる。
よく紹介される発達障害は、多動とか、頭が固い(言われたことしかできない)とかそういうものだ。

すぐキレて怒鳴るおじさん、NoといいたいけどNoがいえず何でも安請け合いしちゃうマネージャーとかは違うのか?
彼らは結構生活に支障出てると思う。

この違いはなんだ?基準が曖昧じゃないか?

人は誰でも特性があるよね?長所か短所かは他の人が判断することかもしれないけど。

頭が固いとかは、正直自分の世界だけでいったら誰にも迷惑かけてないし、別に良いことなんじゃないの?

もしかして「一緒に生活してて自分にちょっとでも不快なことをする可能性のある奴ら」を全部障害者あつかいしてないか?

Nさんの例で出てきたクソ上司のように、心が狭く他者の違いを強烈に受け入れられない人がいる。
また、無視するまでいかなくても受け入れられない人が結構な数いる。

この心の狭い人たちが常識(大多数の意見)という曖昧な観点から「相対的に見て変!」という理由で張り付けたレッテルが発達障害ということなんじゃないのか?なんかずるくないか!?

障害者扱いしないと一緒に生活するのが苦痛ですか?

もしかして発達障害は、ある程度常識が発達した今の日本の現代病なのかもしれない。


最近の事

最近日記がかけていなかった・なんていうか子育ては大変だ?

下の子寝ない問題

下の子は今生後6か月
一応夜から朝にかけて寝るサイクルは決まってるんだけど、寝に入る時間が遅い
22:00からチョイ寝をして、0:00時ころにミルクでなく。

これは、21時にあげてようが20時にあげて間隔があいていようが関係なく、
絶対0:00付近でミルクを欲しがるので、前倒しはできない。

上の子はお母さんが添い寝しないとまだ寝れないので、俺が一人でめんどう見る必要がある。
勉強時間が取れないのが最近の悩み(かれこれ一年くらいだけど・・・)

java基礎を勉強中

会社のプロジェクトでjavaが一本あるので、javaを勉強中
やっぱりこういうのは基礎からやった方がすごく良い
StringとStringBufferの違いとか、local変数のスコープとかそういう基礎ができてるのが重要だと思う。
ただ、Playでscalaをちょっと使ったこともあって冗長な表現がかなりキツい HashMap<String,String> map = new HashMap<String,String>();
みたいの書いてると、もうバカなんじゃないかと思えてくる。
でもデザインパターンとかもjava覚えれば理解が早いと思うので頑張る。

javascriptも勉強中

昔はカオス感が好きじゃなかったけど、やっぱり基礎を学ぶとすごく良いものに思えてくる。
特に、javaのMapみたいなクソみたいな冗長性がないのでむしろ好きになってきた。

大腸カメラ

なんだありゃ
あんなもん人類は発明してしまったのか。バカじゃないのか
神の領域に片足突っ込んでる感がハンパなかった。けつからカメラ入ってくる状況に耐えられなくて最初笑っちゃってたけど後半は痛すぎて見かねた看護師さんに鎮痛剤、鎮静剤を打たれてそこからは気絶
まさにいま終わって帰ってきたけど何にもする気が起きないし眠気がすごい。
今日は閉店休業です。

人はそこまで馬鹿じゃない

最近、GoogleNowでおすすめされる記事を流し読みするんだけど、Railsがプログラムだとかプログラムじゃないとかそんなブログ記事を読んだ
関連するブログもついつい読んだ

Ruby on Railsはプログラミングではない!

Railsはプログラミングではない!の炎上を受けて補足

・今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」

読んだ感想だけど、
人間はそんな馬鹿じゃないから、遠回りなんてなくて、みんなちゃんとやったらやった分だけ身になると思うんだよ
無駄な事なんてこの世にないんだよ

仮に遠回りだったとしても気づく事があるんだし、あんまりそう他人を頭ごなしに否定してやるなよ

自分の知ってることを知らない人をみて、他人がマイナスだと思うのは傲慢だろうに

Railsでbootstrap使ってアプリ作ったって結局スマフォ対応するためにviewportとかきっと調べることになるし
Bootstrap使うってことは少なからずjavascriptも使うしcssも覚えるよね?

PaaSにデプロイするってなったら鍵暗号学んで、実際デプロイするにも苦労があって、デプロイしたのも遅くて「あーあ、これならサーバーたてた方が制約なくて楽そうだな~」
なんてCentOSとか勉強しだして、IPアドレスとかプロトコルとか、DNSとかネットの基盤を学ぶわけじゃん

記事書いた人だって、結局Rails学んで基礎が足りないって気づいたんだろ?
Rails様様じゃないか

「Frameworkはブラックボックスすぎるから使うな!」って上から目線で言われても、今の若い子にそんなの無理だろ

時間は有限だし、みんな違う人間なんだからなんでも自分のものさしにあてはめてやるなよ

プログラム始める人はやりたいことがあって始めるんだから、そんな遠回りしろって言われても納得できないって

ピュアjava知らない素人がAndroidアプリ作ってプログラムハマるとか普通のことだし、ゲーム作る人はUNITY使った方がいいに決まってるじゃん

プログラムのキャリアちゃんと積んだできる人だって、複雑なアルゴリズムに直面したと「あーあ、数学の基礎知っときゃ楽だったな~って基礎覚え直したりするじゃん

人はやったことはちゃんとどこかで役に立つ
もう一度言うけど、時間は有限なんだよね

基礎を勉強しないよりしたほうがマシに決まってるじゃん
やるやらないで言っちゃったらなんでもやった方が良いに決まってるよ

みんなそれぞれ自分の環境にあわせて、優先順位つけて取捨選択してるんだから、そこは
他人が口だすところじゃないよ
大人なんだからそれくらい考えてるってば

そもそも、Framework作ってる側の人の目的もあるだろう
プログラムの敷居を下げたいがためにFramework作ってる人もいるでしょ

新生児のお守りして0時に寝かしつけて、洗濯機回して、洗濯物たたんで食器洗ってから1時までしか開発できないのに、LINUXでサーバー立ててサーブレットで実装とかやってられないから、俺はPlayframeworkです。

PlayFrameworkをherokuにデプロイするときにハマったところ(2015/10/24)

さて、Playで作成したアプリをherokuにデプロイしたのですがだいぶハマりました。
解決する際にやったことを書いていきます。(2015/10/24現在の内容です。)
書いてる事は初心者向けだと思います。自分が初心者なので…

最初に

herokuのエラーがでたら、herokutoolbeltからlogsを確認しましょう。
そのほか、パスが間違ってるときはLinuxコマンドでディレクトリを確認しましょう

<問題解決に使ったコマンド>

  • heroku logs
    →ログを確認する【超重要】

  • heroku config
    →heroku上の環境変数を確認できる

  • heroku open
    →アプリのページを開く

  • heroku run {xxx}
    →{}にLinuxコマンドをかいて動かせる
    (例)heroku run "ls -l target/universal/stage/bin/"

Procfileの編集

まず、僕は以下のテキストで勉強を進めています。
www.amazon.co.jp
これが初心者にもめちゃくちゃわかりやすく、とっても読みやすい
演習も正直に従っていけば素直なPlayアプリが作れるようになると思います。
で、これなんですがherokuへのデプロイ方法が少し古いため、実際はherokuのドキュメントを見ながらProcFileを直す必要があります。

ProcFileはPlayのバージョンごとに3パターンの書き方があるので、公式ドキュメントを見ながら合わせて書きましょう。

ProcFileの書き方:
https://devcenter.heroku.com/articles/play-support

自分がデプロイしようとしてるplayのバージョンがわからなくなった人は(いないと思うけど) projectのplugins.sbtにあるので見てみましょう (play自身がsbtのライブラリであるため、plugins.sbtの中に定義がある)

Playの構成:
https://www.playframework.com/documentation/ja/2.3.x/Anatomy

ProcFileの編集は慎重に

heroku logsで確認したときに、環境変数が置換されずに設定ファイルそのままの文字列でてたら、スペルミスの可能性が高いです。

Bad application path: -Xmx384m

ProcFileからJAVA_OPTの一文を消しましょう。 これが書かれていると「Bad application path: -Xmx384m」とでてエラーになります。 (コンパイラが二つ選ばれちゃう?よくわかんない)
scala版とJava版は自動で判断してくれるので公式ドキュメントにしたがって勇気をもって消しましょう。

で、最終的にできたProcFileの中身がこれ

web: target/universal/stage/bin/xxxx-1234 -Dhttp.port=$PORT -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL

target/universal/stage/bin/xxxx-1234: No such file or directory

めちゃくちゃはまりました。
herokuのアプリ名{xxxx-1234}に合わせても、全然うまくいかない
StackOverFlowとかでもたくさん引っかかります。

で、これが何かというと、playをpushしたタイミングでビルドが走り、 そのときにtarget/universal/stage/bin/xxxx-1234というディレクトリ構成でフォルダ生成するんですが、 そのディレクトリ名は「build.sbt」にあるNameをもとに作ります。
 なので、Nameを修正します。

・build.sbt name := "SampleApps"
→name := "xxxx-1234"

PostGreSQL使用時のUserテーブル

PostGreSQLを使用する場合、Userがテーブル名にあるとPostGreSQLでは予約語になっているため、エラーとなる User→Accountにリネームしよう(Eclipseリファクタリングで) hakobera.hatenablog.com

あとがき

自分は、herokuもplayもわかんないって状態でチャレンジしたので本当にハマりました。
いやーでもデプロイできて感動でいっぱいだー 最高の気分だーーー!!

しかし…
子供達が完全に寝てからちょこちょこ調べながらデプロイ作業を行っていたけど辛すぎる!!
一歩進んで二歩下がる的な感覚に陥ってフラストレーションがたまる!
やっぱりこういうのって時間とってやるのがいいのねー…

子育ての合間に

夏休みからずっと出ずっぱりで疲れた

娘1は高熱を出し、娘2は新生児のためタイマ割り込みで泣き叫ぶ

二人をいなしつつ勉強時間を確保するのは至難の業だ

最近では電車の中の時間は設計に回し、家に着いたらコードを打ち込む日々

やっぱり自宅で勉強用に開発するとはいえ、なんだかんだでその都度考えながら打ち込むとうまくいかない

 

僕の場合、経験不足なので最短距離でコードが書けない

なので設計の結果をそのままアウトプットすることにしてみた

するとどうだろう、嘘のようにはかどる

画面、DB構成も考え済みなのであとは打ち込むだけ

 

設計って当たり前のことなんだけど自宅開発だとどうもすっ飛ばす事が多く、よくないねというお話です。

 

安保法案から見るコストの押し付け

テレビを見ていて、安保法案に関する市民のコメントを見て唖然とした。

 

「理解できてないけど、~だと思う」、「説明が足りない」、「民意が反映されてない」

どのコメントにも思うところはあるけど、特に気になるのが「説明が足りない」

理解する気がないならないなりに黙ってればいいものを、なんで相手のせいにするんだろうか。


今はネットもあってちょっと調べれば情報が腐るほど出てくるのになんで説明する方が悪いみたいな言いぐさなんだ。

コストの押し付けじゃないのか。

 

昔っから思っているけど、日本でムカつくのはたいていコストの押し付けだ。

コストを本来支払うべき人が支払わず、第三者に押し付ける。

コストの押し付けがどういう事かというと大体こんな感じ

 →本来会社が払うべき賃金を労働者に押し付ける

  •  ベルマーク

 →労働コストを保護者達に押し付ける(切り取り、集計)

  • 年金

 →将来もらえない若者に老人を支えるコストを強制する

  • メーカーが作るクソみたいなマニュアル

 →稚拙な文章説明能力を誤魔化して、説明責任を果たさずに読み手に押し付ける

 

こういったコストの押し付けに、日本人の悪いところが凝縮されている。

特に、サービス残業はひどい。

よく、労働時間あたりのGDPを比較すると、ドイツは日本の1.5倍の生産性だとかそういう話があるけど、実際は1.5倍どころじゃないと思う。

日本人はすぐにサービス残業してしまうので、日本の実際の労働時間はさらに2倍くらいにした方が良いだろう。

とすると、ドイツは実際には日本の3倍くらいの生産性になるんじゃないだろうか。


話がそれました。
では、安保法案について説明が足りないという人は、どういう説明なら納得するのだろうか


おそらく、池上さんあたりが解説してくれないとだめだろう。
お茶の間でテレビをボケーっと眺めながら、オレオでも食べながら池上さんが教えてくれないと理解できない。
こんな人たちに忙しい国会議員さんが付き合う必要はあるのかはなはだ疑問です。

 

そしてもう一つ、「民意が反映されていない」という人は選挙そのものを否定しているわけだが、どういう形なら納得するのだろう。

全員の民意を反映するとしたら、法案を決めるごとに毎回国民全員で一か所にあつまって、○×クイズよろしく全員で多数決
そんなのが理想なんでしょうか。

まとめ

まとめると日本人は

「テレビで池上さんが教えてくれた後に、全員で一か所にあつまって○×ゲームで多数決しないと納得できない。
 そういうシチュエーションを用意してくれない国・社会・自分以外の全てが悪い。」

これが言いたいんじゃないだろうか。

そう、自分以外の全てが悪いのだ。


理解する頭を持たず、話すだけの素養がなく、最後は相手のせいにして第三者にコストを押し付ける。


なんとも素晴らしい考え方ですな。

フレームワーク

うちの嫁は、技術者ではない。

どこにでもいる専業主婦だ。
 
昨日、こんな会話があった
 
---
 
嫁「ねえ、Gitって何?」
僕「ソース管理のツールだよ。ソフトって言えばいいのかな」
 
嫁「playframeworkって何?」
僕「javaっていう言語のwebフレームワークだよ」
 
嫁「??フレームワークって何?」
僕「プログラムを書くために言語があって、プログラムを書く時に使う便利ツールみたいなやつ?いや、違うな」
僕「主婦業で例えると、収納ってのが言語で収納術がフレームワークかな?」
 
嫁「コジマジックってこと?」
僕「コジマジック?だとなんか違うな…もっとピンポイントで、箱が言語で、"箱を使った収納術"かな?わけわかんなくなってきた」
 
嫁「料理でいったら"めんつゆ"ってこと?」
僕「それだ!!!!」
 
僕「昆布だしとるところからだと大変だから、時短でめんつゆを使うんだよ!!!!!」
嫁「なるほど、じゃあめんつゆ料理の勉強会に参加するのね」
僕「はい」
 
---
お分かりいただけただろうか
俺にはよく分からなかった
以下のまとめを持って今日の日記を終わりにします。
 
 1. 機械語は昆布
 2. C言語は昆布だし
 4. playframeworkはめんつゆ