書き置き。

ほぼ勉強の記録みたいなもんです。

Spika の MySQL 対応を見てみた

Spika-Server の MySQL対応が終わったということなのでコードを見てみた。

cloverstudio/Spika-Server at develop

MySQL対応 の関連処理

  • init.php
    • MySQLの接続設定をdefineしている
    • クラウドに置くことを想定してか、$_ENV に設定があればそれが使われるようになっている
  • src/Spika/Db/MySql.php
  • 【追記】DB接続まわりは Doctrine/dbal が使われている。
    • 一部のメソッド createUseraddContact等で SQLではなく配列を渡してINSERT文を発行している。

雑感

DB関連

  • お仕事や個人プロジェクトでも、DBを使うときはORMやクエリビルダ的なものを使うことが多かったので、SQL文を直書きしているのが(自分にとっては)斬新だった。
    • それが悪いという意味ではなく、SQLでぱっと見何をしたいメソッドなのかわかりやすかったので、これはこれで良いと思う。
  • DBアクセスを1ファイルに集約
    • 今後ファイルが肥大化して管理が大変そう。
    • 見通しも悪くなってしまう。

その他

  • クラスやメソッドのコメントが殆ど無い
    • 特に個人プロジェクトで、集中して一気に作っているとやってしまいがち。
    • とはいえ数カ月後の自分にグーパンチされないためにも、(オープンソースで公開するならなおさら)コメントはできるだけ書いたほうが良いと思う
  • インデントがバラバラ クラス毎、メソッド毎というわけでもなく、1行の中でタブとスペースのインデントが混在しているのは、統一したほうが良い
  • PHPUnitのインストールが重複
  • composer を使ってインストールするのであれば、Vagrantfile に書かれたセットアップ用シェルスクリプトに書かれている pear でのインストール処理は無くても良さそう
  • インストーラー画面ができてる、イイネ!

初期のサーバー側ソースコードが酷くて話題になってたプロジェクトだけど、その後のフレームワーク導入やMySQL対応、インストーラー作成など、対応早い。この調子で頑張って欲しい。手伝えるとこあったらPR送るかも。

昨日、布団の中で見つけてgithub上でソースコードを眺めながら寝落ち、今会社でお昼休みに書いてるのでまだ動かしてみてない。今晩時間が取れたら動かしてみよう。

[メモ]

Spika 作者の @cloverstudio1 さんにこのブログが見つかってツイートされてた。大したこと書いてないのに申し訳ない、、、、。

Marionette.js のチュートリアル ふたたび

前回ひと通り写経し終わって、消化不足感があったので、もう一度yomenでappをgenerateするところからやり直してみた。

サーバー側ソースの1箇所対応漏れが原因でtitleが保存されてない問題があったので、今回はサーバー側コードは前回のを使い回し。

require.js の読み込み指定が抜けてて前回ハマったのは、少しカンを取り戻してなんとかはまらず切り抜けた。

今回ハマったのが一箇所 、view を new するところでクラス名が間違っていた。
意図しないところで意図しない引数で呼ばれたviewクラスがその後の処理でエラーになっていて、原因を突き止めるのに時間がかかってしまった。

全体の雰囲気は掴めてきたような気がする。
次はこれにもうちょっと機能追加したくらいのものを自力で作ってみようかな。

Marionette.js のチュートリアル その3 終了

ようやく3部作の最後まで写経終了した。

同じようにやってるはずなのになんだかうまく行かなかった原因は、サーバー側のコードが1行間違っていて、titleを送ってもmongoDBに保存されていなかったので画面表示も出ないのだった。validateもかかってないからtitleナシの_idと finished だけのデータが多数登録されてしまっていた。

先週末の#hokkathonを間に挟んだ関係でちょっと時間が開いてしまったのもあって、最後のほう、RouterやControllerが出てきたあたりが駆け足で消化しきれていない感じ。処理の流れが掴みきれていない。

サーバー側はともかく(自分が作るならPHPでやるので)、クライアント部分はもう一度通しでおさらいしたほうが良い気がするな。

HOKKAIDO アイデアソン&ハッカソン2014 に参加してきた ハッカソン編 #hokkathon

「HOKKAIDOアイデアソン&ハッカソン2014セミナー」の開催について|経済産業省北海道経済産業局

HOKKAIDO アイデアソン&ハッカソン2014 - (株)北海道ソフトウェア技術開発機構

前回に引き続き、ハッカソン

昨年は1日目にアイディアソン、2週あけて2日目にハッカソンで2日目の最後に発表会、という構成だった。

今年も1日目と2日目の間に2週間あるのは変わらないが、
1日目に 1st demo & 2nd demo
2日目にも 3rd demo & 4th demoで終了
という4回もdemoを行う構成となっている。

アイディアソンでたくさんアイディアの種を出したあとにその場でチーム編成をした去年に対し、
今年は参加応募時点でチーム単位での申し込みになっていた。(個人でも申し込み可能 という前提条件。

去年は事前に誰が参加するのかもよくわからず参加して、その場でチームを組んだところ、プログラマ2人だったのでずーっと”デザイナーが欲しい” と繰り返し言ってた。

その反省を活かして今年はプログラマではない方を誘ってチームを組んで参加した。

ハッカソンのテーマが "1クリック(タップ)以内で勝ちを生み出すもの" と事前に発表されていて、1周間ちょっと悩んで悶ていた。 でもハッカソン当日アイディア出しをしていたらをしていたら、ほんの十数分で作るものが決まった。

このくらいのペースで作るものを決めて作り始めないと、1st demoまで時間がない。 画面イメージを書きながら考えていると1クリックじゃなくて写真もつけたいからもう1クリックしたい・・・ と訴えたりもした。

お昼ごはんを食べながら、連携するアプリを使ってみたり画面イメージを話合ううちに、前日のセミナーで聞いたコアの部分を小さく作り始めるという話を思い出し方針転換。それまで1クリックでやろうと思っていた部分は既存アプリに任せて、余力があったらこれもみれるようにしたい といっていた、大量に蓄積されているデータの中でほしい部分だけ見るアプリ に特化することにした。

前回のように1年たっても作り終えられないのだけは避けたくて、機能を半分以下に減らしたけど、冷静に自分のチカラを考えると2日間でできるのはこれでも多いかもしれない、と思えたのだった。

早いうちにスモールスタートのコア部分を見つけられたので、1st demo ではまず画面イメージを作るところに注力した。
パートナーにメインの画像を作ってもらいながら、自分は使えそうなjavascriptのライブラリを調査。

時間ギリギリではあったけど、1st demo までにHTMLで画面イメージを作り終え、これから2日間で作るプロダクトのコア部分をプレゼンすることができた。

無事 1st demo が終わったところで、次の 2nd demo の目標をどこに定めようか、と考えた。 ほぼ完成形の画面イメージをすでに出してしまったので、もうあとは実装を始めるしか無いと思って調査を少し進めていた。

途中、最終的にはスマートフォンアプリにして世に送り出したい(少なともパートナーとその他知り合い数人には喜んで付かてもらえるアテがついていた)ので、HTMLで作っていたものスマートフォンアプリにすることを考えた。
そこで以前少し調査していて機会があれば使ってみたいと思っていた PhoneGap を思い出した。数カ月ぶりだったので情報の探し方に苦労しつつも 2nd demo の十数分まえにビルド成功。 2nd demo では PhoneGap の説明少々と 1st demo でプレゼンした画面を シミュレーター上で動くアプリの形になったものをプレゼンすることができた。

最初は無理のように思えた2回のdemoだったけれど、終わってみると時間が決められたこのdemoのお陰で、次までの目標が明確にしないと発表できるものがないというケツに火を付けられた状態で力を発揮出来たように思う。少なくとも切羽詰まらないとやる気がでないタイプの自分にはこれが合っていた。

この先は、自分でもあまりやったことのない jsでOAuth認証という一つ大きなハードルが残っているので、次回のハッカソンまでには乗り越えて挑もう。

HOKKAIDO アイデアソン&ハッカソン2014 に参加してきた セミナー編 #hokkathon

「HOKKAIDOアイデアソン&ハッカソン2014セミナー」の開催について|経済産業省北海道経済産業局

HOKKAIDO アイデアソン&ハッカソン2014セミナー - (株)北海道ソフトウェア技術開発機構

セミナー

Yusuke Wada さん @yusukebe

2007年くらいから webでちらほら見かけるようになってブログ読んだり、1981年生忘年会で気になってる方、でした。ようやくお会いできたのに、あんまり話しかけたりできなくて残念。

自分はつくることを諦めた

サービスとして成り立たせるためには、"つくらない"人の存在が必要

作る人はお金のことを心配しないで作ることに没頭するのがしあわせで、そのためには"作らない人"のサポートが大事 という話が印象にの強く残っている。

作り方も設計も、手を動かしながら 考える

これは人それぞれ性格によるところも大きいところ。

自分も先に手を動かしたいこのタイプだと思った。
次の中村さんの話に出てきた "デキる人は7時間考えて最後の1時間でコードを書く" っていうタイプと、両方いると思う。

中村さん @r7kamura

価値のある最も小さいものを作る

今までを振り返ると、ハッカソンやもくもく会に参加しても目標が大きすぎて何も動くものが残らないで終わってしまう、ということが非常に多かった。時間内で作り上げられたことなんてなかったかもしれない。

目標が大きいのはいいけど、まず最初に作るところはプロダクトのコアの一番重要な部分だけをつくる っていうのが重要だと再認識した。

@darashi

ゆっくりと、ポエムを朗読するかのような話し方をする @darashi が印象的だった。
スライドに使われている朝焼け(夕焼け?)の写真がとってもステキ。

aun: カンファレンス用サイネーズシステム

rubykaigi 用に作られたプロダクト
メインスクリーンで講演者の発表を投影するのと別に、サブスクリーンで来場者に告知するものを遠隔操作するためのシステム。
大規模イベント運営者ならでは、のプロダクトだと思う。

あの時これがあれば・・・ と思ったイベントも少なくなかった。
だれでも使えるように準備している という話だったので使えるようになったら使ってみたい。

この技術、あれに使えるのでは

自分もわりとこのAPIでデータをあーしてこーして、、、、とか考えてネタを考えることが多いので、似てると思った。

今つくれるものを(ちゃんと)つくる どんなに小さくても動くものを。

ほんと、そうだと思う。
先の中村さんの講演でも言われていたけど、なんだかんだ考えてるだけとか、壮大な計画で作り始めたけど全部出来上がるまで何も使えないのより、
機能的に未熟でもちゃんと動くものを世に送り出すのは重要。

セミナー編、おわり。 アイディアソン&ハッカソン編に続く。

おまけ

http://miil.me/p/22w14 ばんごはん。 その1

http://miil.me/p/22w3d

毛ガニでーす!! (ひとりひとつ

昨日のまとめと体操

1ポモドーロ目

Marionette.js のチュートリアル その2 & 3

昨日のまとめ書いてた。

体操

みんなの体操 + ラジオ体操第一

起きるのがちょっと遅かったのでこれだけで終了

HOKKAIDOアイデアソン&ハッカソン2014セミナー

「HOKKAIDOアイデアソン&ハッカソン2014セミナー」の開催について|経済産業省北海道経済産業局

HOKKAIDO アイデアソン&ハッカソン2014セミナー - (株)北海道ソフトウェア技術開発機構
HOKKAIDO アイデアソン&ハッカソン2014 - (株)北海道ソフトウェア技術開発機構

今晩はこれの1日目で、明日から始まる アイディアソン&ハッカソンオリエンテーションを兼ねたセミナー に参加予定。

セミナーの講師陣は、アイディアを思いついたらその場でサクッと作っちゃうすごい人たちばかりなので、すごく楽しみ。

HOKKAIDO アイデアソン&ハッカソンは、平成25年2月に公的機関として  
道内初めての取り組みとして第1回目が開催されました。
昨年の第1回目の開催では、 「北海道を元気にする!」をテーマに  
クリエイターやエンジニア、アプリ開発者など総勢25名が参加し、  
10グループ、10アイデアが決定し短期間に実際にアプリ開発等を行い  
発表しました。

去年参加した時に作り始めたサービスがまだ完成してないのが心残り。 今回は年を越さないように、欲張り過ぎないでさくっと作ってサクッとデプロイできるようにしたい。

第2回目の今年は、「1タップ(クリック)以内で価値が生まれるもの」  
をテーマに、参加チームごとにアイデア出しから開発までを行います。

申し込みしてからずっとこのテーマで何ができるか考えてたけど、1クリックってなかなか難しい。明日のアイディアソンでどんなアイディアが出てくるのか、楽しみ。

Marionette.js のチュートリアル その2 & 3

朝は生産性が高いとか言うけど、それでも気を抜いてしまうとどうでもいいことについつい時間を使ってしまいがち。
前にちょっと使っていたポモドーロタイマーを導入してみた。

Tomato Timer

1ポモドーロ = 25分、5分休憩してまた次のポモドーロ開始。
25分間は、仕事や勉強など目の前のやるべきことにとことん集中する。
しばらく続けてみよう。

1ポモドーロ目

Marionette.js(Backbone.js)のチュートリアル with yeoman その2(Modelと基本View側実装編)

Taskモデルと新規登録の入力フォームを作成。ここは特にハマリポイントもなく、さくさくと。

railsのような (CakePHPのbake のような?) generator を使ってファイルを作れるのが便利。慣れるまでは、ファイル名やクラス名を間違ってハマることがよくあるので、こういう便利なものは積極的に使っていきたい。

本格的にコードを書く量が増えてきたので、作業スペースをgit管理するようにした。ローカル管理だけでも、エラーでおかしくなった時にどこを変更したかのdiffが見れるのが便利。

本筋とは関係ないけど、mocha-phantomjs がインストールされていなくて、grunt を起動しているターミナルでエラーになっていたのでインストールしておいた。

$ npm install -g mocha-phantomjs

2ポモドーロ目

Marionette.js(Backbone.js)のチュートリアル with yeoman その3(Marionette.View実装編)

中盤のまでいった。

えーっと、ここまでで、多分、その1で保存したデータが初期表示されてるはず。

初期表示されてるはず、、、、だったが動かなかった。
というところでタイムアップ。

休憩

Eテレでやってるテレビ体操。 今日はラジオ体操 第1・第2 だった。

それぞれ始まる前に1アクションをピックアップしてポイントを解説してくれる。
また別な日はラジオ体操ではない体操を5分くらい + ラジオ体操 第1 の日もあった。 中学校の体育の授業で、君らのラジオ体操は全然なってない、と、一から覚えさせられてから少しはまともにできるつもりだったけど、改めて手本を見ながらやると、意外と間違って覚えているところが出てくる。

最近運動不足すぎるから、これくらいの運動は続けよう。

3ポモドーロ目

チュートリアルの完成コードを見ながら、読み込みエラーを1つずつ潰していった

https://github.com/lxyuma/todo-mario/

require.jsを使って関係ファイルを読み込む設定が各所で足りてなくて、クラスが読み込めていなかったのが主な原因。 答えをカンニングしつつ、カンを取り戻していった。

25分できずにタイムアップ。続きはまた明日。