仕事で作ったものが自分でも使えるようなものだったら楽しそうだな、と時々ふと思う。
自分はプログラミングそのものが好きっていうよりかは、作って動かして考えて直すっていう一連の活動が好きなのかもしれない。
追記
ドッグフード食べつづけてるうちに味覚が鈍ってこれが旨いんだと思い込む問題もある。たしかになあ…
仕事で作ったものが自分でも使えるようなものだったら楽しそうだな、と時々ふと思う。
自分はプログラミングそのものが好きっていうよりかは、作って動かして考えて直すっていう一連の活動が好きなのかもしれない。
ドッグフード食べつづけてるうちに味覚が鈍ってこれが旨いんだと思い込む問題もある。たしかになあ…
@sairoutine さんに教えていただきました。激アツでした。
世界チャンピオンになった後に挫折、麻雀、そして介護の仕事を挟んでからの復帰というストーリーがアツかった(実話ですが)。
おすすめ本お待ちしています。
明日から仕事なので、新年ぽいことを書きます。
昨年の目標は「インターネット捨てない」みたいな感じでした。達成できたと思います。 インターネット捨てないおかげで、自分の興味範囲だけでは手を出せなかった面白いことを見聞きすることができました。ギークハウス・JSON Schema・PBL・はてなインターン・REPL駆動開発・Rasberry Pie・関数型プログラミング・LISP...どれも自分では積極的に知ろうとすることがなかったと思います。
こう振り返ると、やっぱりPodcastを雑に始めてみたのはよかったです。ブログの影響力が1だとするとPodcastの影響力は3くらいあると思う。影響を与える側としてはいいことだけではない(間違ったことを伝えたり自分の無知を撒き散らしたりすることもある)のだけど、影響を受ける側としてはお得でした。
2016年はどうしようか。
昨年は平日8時間以上働きながらあれもやってこれもやってというのが想像以上に大変だということを実感したので、心身を壊さない程度に頑張りたいと思います。
応援してくれるという人は、http://yomomo.net/u/gaaamii にこれ読んどけ的なおすすめ本をそっと追加しておいてくれると嬉しいです。
このブログ未だに誰が読んでるのかよくわからず誰に向けて言っているのかよくわかりませんが、今年も宜しくお願い致します。
yomomo.net にて、Amazon Product Advertising API を叩いて 良い感じの キーバリュー(Hash)オブジェクトを返してもらう処理を、これまでに2回引越しました。
yomomo.net は、Railsの素晴らしいコード生成とRailsで金を稼いだことがない素人同然の僕が設計らしい設計も考えずに作った雑追加実装でできています。そのため、ここにそれ書くの?というものがあちこちに散らばっていて、その一つが今回 ResponseGenerator という名前でmoduleにした部分でした。
Amazon の商品API叩いて得た情報詰めてJSON返すためのオブジェクト作るやつ ResponseGenerator って名前のモジュールにしたけどこれで良かったのかよくわからない
— gaaamii (@gaaamii) 2015年12月25日
ResponseGenerator は冒頭にも書いたように、「外部の書籍情報APIへのアクセスを行い, ハッシュオブジェクトを返す」処理です。以前はこれを app/controllers/items_controller.rb に書いていました(Yomomoの「おすすめ」はコード上では Item というモデルとして存在していて、items_controller.rb はこれに対応するコントローラです)。ただ、考えてみると「外部の書籍情報APIへのアクセスを行い, ハッシュオブジェクトを返す」処理はこのコントローラだけに必要なものというわけではなさそうです。コントローラ全体から利用出来るようにしたい。けれどもApplicationController に処理を生やすというよりはもう少し独立したものとして扱った方が良いような気がしてました。
何より、ApplicationController を見てみたら、404ページをrenderするためのメソッドやら現在のユーザーを返すメソッドやらが生えていて、なんだか秩序が無い雰囲気でした。これ以上散らかしたら、あっという間にぐちゃぐちゃなプログラムになってしまいそうでした。
そこで、よくわからないので lib/ 下に response_generator.rb というファイルを作り、そこにmodule で名前空間を切り、config.autoload_paths += %W(#{config.root}/lib)
で lib ディレクトリを読み込むように設定して利用できるようにしました。
(参考) easyramble.com
ただ、app/controllers/ の下に concerns/ というのもあったな、あれはどうやって使うんだと調べていったらこちらの方が適切っぽかったので移動した、というのが今回の流れでした。
書き途中です。
行ってきました。他の参加者の方々がすでにもっと有益な感想を書かれているかもしれませんが、自分なりにでも感想書いたほうがいいような気がしたので書きます。
という感じのワークショップ。初心者向けだというのを半信半疑で参加したら本当に初心者に親切なワークショップになっていて驚きました。ありがたやありがたや。
deftest
の使い方)ワークショップの内容とはズレますが、ワークショップ後の雑感も書いておきます。
他の参加者の方々も散々書かれている通り、本当に良いワークショップでした。 あやぴーさん、TAの皆様、当日の準備や食べ物を提供して下さったサイボウズスタートアップス株式会社様、ありがとうございました。
※もっと有益情報あった気がする。何か気付いたことがあれば書き足していきます。
23歳になった。
孔雀の本を読んでいます。
第2章がClojure一巡りということで、言語の基本的な文法について説明されている。といってもそのほとんどが自分には何がなんだかわからず、以下の様な説明に頭を抱えました。
let 特殊形式はまさにレキシカルな束縛を作り出すためのフォームだ。
let が何だかはわからないけど、JSのvarのような何か、変数を宣言するための何かだろうと思っていた。けれども、レキシカル・束縛・フォーム、すべて意味を知らなかったので説明を読んで苦しくなった。
ドキュメントにはこう書かれている。
clojure.core/let ([bindings & body]) binding => binding-form init-expr Evaluates the exprs in a lexical context in which the symbols in the binding-forms are bound to their respective init-exprs or parts therein.
なるほど。とはならなかった。
どうやら「その関数内でのみ有効な」というような意味合いらしい。スコープの文脈で使われる言葉で、対になるのがdynamicという言葉っぽい。static とか local に近い感じがする。
これまた馴染みのない表現だけど、宣言のようなものらしい。ただ、他の言語と考え方が違う。
a = 10
普通の手続き型的なプログラミング言語で、aという変数に10という値を設定する、というようなことをするけどClojureではそうではなく、
(let [a 10])
10にaというシンボルを束縛するという考え方らしい。
普通にローカル変数の感覚で使って良さそうです。
(defn real-price [price] (let [tax 0.08] (+ price (* tax price)))) (real-price 19800)
21384.0
たったこれだけのことだけど、REPLで試しながらあーとかうーとか言いながら試せるようになりました。何か作るにはまだ遠いけど、頭の中でプログラムを動かすことができない頭の悪い自分にとって、書いたコードをそのまま評価するREPLは相当有難い機能なんじゃないかと思います。
あと、ドキュメントをすらすら読んで理解できない場合にあたる情報としてClojureDocsというのが使い勝手が良いというのをこの前のClojure座談会で教わったので、それを当たりながらチュートリアルやら何やらを楽しみたいです。
サイボウズスタートアップス社で @_ayato_p さん主催のClojure勉強会が行われました。餃子とビールとご飯を頂きました。本当にごちそうさまでした。
座談会ではほとんど話についていけなかったのですが、自分なりに勉強になった部分のメモを残しておきます。感想も混じってます。 テキトーなこと書いていたらご指摘下さい。
自分と今日来てた他の人達との知識のギャップが大きくて良い刺激になりました。ああいう話ができるようになるまでに何冊本を読んで、コードを書いて、どれだけ経験を積めばいいんだろう。
刺激が云々とか気持ちの話をいつまでも言っていてもしょうがないので、粛々と本読むのと酒飲んでわけも分からずコード書くのを繰り返してどうにか前に進みたいです。
Clojure触りだして、とりあえずLeiningenっていうのを使って何かするらしいというのを知った。
lein new myapp (プロジェクトの雛形作る。)
やら
lein deps (project.cljに記述したライブラリ群をインストールする)
やら
lein ring server 3000
というのを打ち込んだ。RubyでいうところのBundlerっぽい何かだというのがわかった。
lein ring server 3000
だけど、REPLの他にプロセス立ち上げるのは無駄が多いとのこと。じゃあサーバーどうするのかというと、
REPL の外じゃなくて中でサーバーを起動させれば JVM はひとつだけで済むのでマシンに負担かからないし良い
とのこと。REPL駆動開発という言葉もあるらしい。
つまり、プログラムを作りながら、横でREPLを起動しておき、その関数をロード(またはリロード)して実際に使ってみて、さらに修正して、使ってみて、ということができる、ということです。
サーバサイドアプリケーションだとどうなのでしょう。サーバを起動しないとだめなのでしょうか。
いいえ。
ClojureのサーバサイドプログラムはおおむねRingという環境上で動きますが、そこで使うClojure関数は、リクエストを受け取りレスポンスを返すただの関数であり、そのリクエストというのは、ただのAssociativeなので、マップを渡せば呼べるのです。関数は環境に依存してないのです。セッションすらも、Associativeの中の:sessionというキーにバインドされたAssociativeにすぎません。なので、REPL上で簡単に呼べるのです。Associativeって、つまりマップですからね。
楽しそうだ。
寝坊して体調も悪かったので午後から行ってきた。 東京駅の八重洲口からまっすぐ歩いてったら、途中で「Perlが〜Pythonが〜」という話をする人たちの集団がいたので付いていったら着きました。
モチベ高まるのでたまにはこういう大きい勉強会行くのもいいなと思いました。
0冊でした。やばい。
素晴らしいコメントだと思いました。
Ruby on Railsはプログラミングではない! | それでも人は夢を見るほとんどの初心者は君が思ってるような疑問にぶち当たらないしそれだけでも才能あると思うよ。まずはRubyの基本的な文法とSQLを書けるようになってはどうか
2015/11/03 21:55
ブログ記事を書いた人も、けっこう叩かれてるけどコメントでちゃんとツッコミ受け入れて反省してるし立派だと思う。見習いたい。 テックアカデミーのブートキャンプは高すぎだと思う。