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

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

俺姑問題

年末年始は嫁の実家に行っていた。

もっぱら子供達の世話をしていたのだが、嫁の実家は家が広いので長女がうろちょろしてるとエンカウントしにくい為、隙を見て勉強したり、久々に漫画を読んだりと結構充実できた。
 
ただ、一個だけきつかったのは俺とむこうの姑(というか正確には嫁のおばあちゃんなので大姑か)の相性が悪い事。

子供の生活リズムやテンポを崩したり、言ってる事が二転三転したり嘘いってたりと結構子供が振り回された。
1、後で遊ぼう問題
子供というのは純粋で、「後であそぼうね~」なんて言われたら、その日はずっと「いつ遊ぶの?」「まだ遊ばないの?」と、遊ぶまで約束を忘れないものだ。
でも、大人は結構後で遊ぼうねーとそこだけやりすごして放置プレイする人が多い。
こういう事を何回も繰り返されると子供の心が不安定になるので、本当にやめてほしい。
 
ほかには
 
2、まだ寝ないの?問題

夜になるとうちの赤ちゃんはふにふにし始め、22~23時になると最後のミルクを飲みほして寝に入るのだが、まどろんでいるところにおばあちゃんが来て、「まだ寝てないの?早く寝ないとだめでちゅよー!」と話しかけて完全に起こして去っていく。

せっかく今まで育ててきたこの子のリズムがめちゃくちゃになってしまう!!!

と、憤慨しながら目がギンギラになった赤ちゃんを寝かせるのは非常にストレスでした。

僕は男だけど、こんなちょっと滞在しただけで思うところがいろいろあるので、世の同居している奥様たちは毎日が地獄だろうなあ…。

 

愚痴はここまで

--

  • フロントエンドの勉強
嫁実家滞在中は、もっぱら短い時間で書いて確認ができるjavascriptやwebのフロントエンドを勉強した。
どうもフロントエンドの技術は素人の人のブログも検索結果に混ざってくる。
検索ノイズが多すぎてうざったい。
そこで、最近のフロントエンドの本を調べて、以下のを買うことにした。
 
 
この本はタイトル通りモダンなサイトの裏側を見せてくれるかんじなので、数ある実装方法の中でプロが使ってるワザを教えてもらえる。
 
さらっと読んだだけでも自分のサイトに使える技術がたくさん出てきて、すごく楽しかったし、読みやすかった。
 
cssの疑似要素を用いたclearfixパターンとか、スマフォ対応で最近よくあるシングルページレイアウトなどが出てきた。
僕はどれも見たことはあるけどやり方は知らなかったので為になった。
また、例題のWebサイトもおしゃれで説得力があった。
すごくこの本を気に入ったので、同じ会社から出ているjavascriptの本も買おうと思う。
 
ほかに見た中では下のJqueryの本が良い感じだった。
よくあるサイトの動きをJqueryでやるとこうなる。という風に解説されている。
ふるまいだけ羅列したリファレンスもどきの本よりずっとイメージしやすかった。
 
 
前の会社では勉強などしたことがなかったので、初めて気づいたけど
やっぱり技術本は実際に目で見てじっくり読み比べないと良し悪しがわからないという事。
本のレベルもそうだし、表現がその人にあう/あわないが非常にでかいので、じっくり見比べて自分に合った技術書を選ぶのが良いと思う。
amazonのレビューはあてにしちゃだめです。

夜のお昼寝問題

最近、7ヶ月の次女がまとまって寝る様になってきた。

よし!これで寝てからコーディングできる!と思いきやなんと21時から一時間ほど昼寝をおっぱじめる。
大体23時に起きて少し飲んでまた寝るのだが、おかげで完全に寝かせたころには24時になってることが多い。

また、夜にコーディングしてそのまま寝るとアドレナリンが出てるのか、夢の中でもコーディングしてしまう。
非常に寝苦しい。大抵途中で起きる羽目になる。
どうしたものか。


プログラマと発達障害

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

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

その人はパートナーの社員さんだったのだが(仮称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構成も考え済みなのであとは打ち込むだけ

 

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