タグ

ブックマーク / blog.mah-lab.com (20)

  • 僕はSQLをこう学んだ | mah365

    いくらRDBの操作を抽象化してくれる便利なライブラリ(ORマッパーとか)を使っていても、それでもRDBを使う限りは、テーブル設計の考え方にしろ抽出ロジックの考え方にしろ、SQLを知っていないとやりづらいと思うのです。 でも正直、「SQLこう学べば一発でわかるようになるよ」と言えるほど教えるノウハウはない。なので、僕がどうSQLを勉強したか書いておこうと思います。 正直、情報処理の試験で問われるまでSQLを使う用事がなかった プログラミングの歴だけは長いのですが、SQLを勉強する必要が出たのは、新卒で入社した会社で「ソフトウェア開発技術者(現・応用情報処理技術者)を取りなさい」と言われてからです。 いきなりお勉強的なムードからSQLを学ぶ必要が出てしまったので、最初は全くやる気にならなかった・・・ので、これはいかんと思って、何とか手を動かそうと思って、手にとったのがSQL書き方ドリルという

    僕はSQLをこう学んだ | mah365
    kimihito
    kimihito 2017/10/11
  • メンテナブルにRailsのテストを書くならおさえておきたい8つのポイント | mah365

    メンテナブルなRailsのテストを書くために必要なポイントについて説明したA Guide for Writing Maintainable Rails Testsという記事を見つけたのでご紹介します。 1. ユーザーに近いところからテストを書き始めよう ユーザーに近いところ(受け入れテスト)からテストを書き始めることで、少しテストコードを書くだけで振る舞いの大部分をカバーすることができます。受け入れテストを書いてから、カバレッジの穴を埋めるような細かいテストを書くのが良いでしょう。 2. テストをDRYにするためにヘルパーメソッドを使おう 例えばユーザーログインなど、決まりきった処理はヘルパーメソッドにするとテストの見通しが良くなります。 3. コピペするな! 例えばRSpecのbefore内の前処理コードなんかは、重複することが多いですよね。でもそういった場合にコピペをすることなく、「ヘ

    メンテナブルにRailsのテストを書くならおさえておきたい8つのポイント | mah365
    kimihito
    kimihito 2015/06/03
  • 過去のmigrationをまとめてくれるGem「Squasher」 | mah365

    ずっと開発を続けていくと、どうしてもmigrationファイルがめちゃくちゃに増えてしまいますよね。あまりにも昔のmigrationファイルだと「とあるバージョンのGemを前提にしていたのだけど、Gemのバージョンが上がって実行できなくなった」みたいな事態が起こったりして厄介です。そういう訳で過去のmigrationファイルをひとまとめにしたいと思ったときに役に立つGemがSquasherです。 使い方 gem install squasherでGemをインストールしたあと、 squasher 2014 とコマンドを打つと、2014年以前のmigrationファイルをひとまとめにしてくれます。また、 squasher 2013/12 squasher 2013/12/19 などと、月・日を指定することで、「2013年12月19日以前のmigrationファイルをひとまとめにする」といった指

    過去のmigrationをまとめてくれるGem「Squasher」 | mah365
    kimihito
    kimihito 2015/01/06
  • AngularJSとRailsの丁度良い関係を探る:コード解説編 | mah365

    以前投稿したAngularJSとRailsの丁度良い関係を探るという記事のコード解説編です。前回はざっくりとしたアーキテクチャの紹介のみにとどめていたので、このエントリでサンプルコードの詳細について解説します。 バージョン情報 ruby 2.1.3 rails 4.1.7 devise 3.2.4 angularjs 1.3.2 ディレクトリ構造 app以下のディレクトリ構造は以下のような形です。 app ├── assets │   ├── images │   ├── javascripts │   │   ├── app │   │   │   └── tasks │   │   │   ├── tasks.controller.js.erb │   │   │   ├── tasks.html.erb │   │   │   ├── tasks.js.erb │   │   │  

    AngularJSとRailsの丁度良い関係を探る:コード解説編 | mah365
    kimihito
    kimihito 2014/12/24
  • 「一人でもコードレビューはできる!」Sendagaya.rbでコードレビューについてディスカッションしました | mah365

    先日デキるプログラマだけが知っているコードレビュー7つの秘訣というテーマでSonicGarden Studyというオンライン放送にてお話をさせていただきました。参加者が500人とかなり大盛況の放送だったのですが、その分流れる質問量も激しく、十分に質問にお答えできなかったなーという感がありました。そこでその放送の翌週にあたる8/18(月)にSendagaya.rbの場をお借りして(thanks @tkawa!)コードレビューについてディスカッションする機会を設けさせていただいたのでした@ソニックガーデンオフィスにて。 スライド 前半はこのスライドを元にざっくり15分ほどでSonicGarden Studyでどんなお話をさせていただいたかを紹介しました。3分ぐらいでざっくり、と前置きしたのに15分ぐらい話してた・・・。 話に上がった内容 いろいろと面白い話が上がっていたので、覚えている範囲でつ

    「一人でもコードレビューはできる!」Sendagaya.rbでコードレビューについてディスカッションしました | mah365
    kimihito
    kimihito 2014/10/08
  • 自分がメンテしないコードの品質を上げようとするわけがないよね | mah365

    先日、リーダブルなコードを保つためには、コードが読まれるような文化をつくらなければならないのではないかというエントリを書いたのですが、こんなことを思ったのもある思い出話があったからでした。 「どうしたらこんなコードを納品できるの!?」 僕にとってのはじめてのオフショア。外部設計書を書いて「これ作ってねー」と海の向こうへ投げるだけの簡単な仕事を引き受けまして、設計書を投げた後、いい感じの時間が過ぎた頃に「どれどれ」とコード(PL/SQL)を見てみたのですが、 「このプロシージャ、すごく・・・長いです・・・」 ・・・うーん、外部設計書の章単位でプロシージャが区切られています。 確かにまぁ、設計書通りっちゃ設計書通り。 しかしいろんなプロシージャ間での処理が書かれていてDRYじゃない。共通の設定を読み出すところもハードコードされているので、仕様変更したいときに死んでしまいそう。 「どうしたらこん

    自分がメンテしないコードの品質を上げようとするわけがないよね | mah365
    kimihito
    kimihito 2014/08/07
  • iOSアプリをつくって配布するところまで、ゼロから何を参考にすれば良いかのまとめ | mah365

    iOSアプリをつくって配布するためには、おおまかに分けてこんな感じの知識が必要だと思います。 開発環境の用意の仕方(Xcodeの用意、iOS developer programへの登録) アプリのつくりかた(Objective-C、標準ライブラリの知識と活用方法) アプリの配布方法(テスターへの配布方法、AppStoreへの登録) それぞれどこを見れば良いかまとめておくと便利だと思ったので、まとめておきたいと思います。 開発環境の用意の仕方 iOSアプリの開発をスタートするためには、まず以下の準備が必要です。 MacOS X(最新のもの) Xcode(最新のもの) iOS Developer Programへの登録(実機で動かすために必要) Xcodeの導入から簡単な開発方法まで Xcodeの導入から、使用方法交えての簡単な開発方法の説明がドットインストールにあるので、全くはじめての人はこ

    iOSアプリをつくって配布するところまで、ゼロから何を参考にすれば良いかのまとめ | mah365
    kimihito
    kimihito 2014/05/21
  • Rubyをより良く書けるようになるための課題演習のつくりかた | mah365

    実戦的なコードの書き方は、どのようにして身に付くものなのでしょうか? 文法を覚えること? それともオブジェクト指向言語であれば、オブジェクト指向自体を学ぶこと? 見方を変えて、関数型のエッセンスを学ぶこと? アンチパターン プログラミングを学ぼうとするときに、プログラミング言語自体を完璧に学ぼうとするのは、無駄ではないのですがそんなに効率的ではない気がしています。 Ruby技術者認定試験【Gold】模擬問題 例えば上記の問題集をきっちり解けるようになると、Ruby自体の振る舞いについては、はっきり分かるようになりますよね。ただ、仕様を聞いて「これを作ろう!」と思ったときに、やり方に困るのではないでしょうか。 「Rubyでプログラミングできるようになりたい」という要望は、「Rubyというプログラミング言語を学びたい」のではなく、「Rubyという生産性が高いと言われている言語を使ってプログラミ

    Rubyをより良く書けるようになるための課題演習のつくりかた | mah365
    kimihito
    kimihito 2014/04/29
  • 久しぶりにCordova(PhoneGap)を触っているけれども、あらゆる動作が簡単なコマンドラインで実行できるおかげで本当に使いやすくなった | mah365

    昔Cordova(PhoneGap)を試していた時は、今よりも大分使いにくいものだったという印象がある。 新しいプロジェクトを作るときも、~/dev_tools/phonegap-2.2.0/lib/ios/bin/create ...みたいな感じで各デバイスのライブラリパスから同じ名前のコマンドを実行させる形だったので、「え、これ、マルチプラットフォームとかどうやるのよ」と、ユーザーを相当悩ませる感じの仕組みだった。 そのためか、PhoneGap BuildやMonacaというビルドツールが大変便利で、むしろこういうビルドツールがないとやってられない状況にあったと思う。 (知らない人向けに)Cordova(PhoneGap)とは HTML+JavaScriptでiOSやAndroidといったスマートフォン向けのアプリを開発するためのライブラリ。歴史は長く、2012年代にかなりいろんなサイ

    久しぶりにCordova(PhoneGap)を触っているけれども、あらゆる動作が簡単なコマンドラインで実行できるおかげで本当に使いやすくなった | mah365
    kimihito
    kimihito 2014/02/10
  • rubypressでWordPressの情報をRubyから操作する | mah365

    そろそろこのブログも投稿数が増えてきたので、カテゴリを整理した方が良いかなと思い始めてきました。というのも、昔の記事にアクセスしようと思ってもなかなか上手く辿り着けない。書いてる人が辿り着けないレベルです。これはSEO的にも最悪だよなーと思い、ちょっと整理してみようと思った訳です。 で、全体的にどんな記事があるのか知りたいのでWordPressの投稿一覧を見てみるわけですが、いろいろプラグインを入れているせいかタイトルの視認性が良くないです。むしろExcelっぽい感じで見たい。むしろExcelで見たい。 そんな訳でWordPressの情報を引っこ抜く手段を探していたところで、rubypressと出会ったのでした。 WordPress meets rubypress rubypressというGemを使うとWordPressの情報にRubyから簡単にアクセスすることができます。XML-RPC

    rubypressでWordPressの情報をRubyから操作する | mah365
    kimihito
    kimihito 2014/02/09
  • 分かりやすいUIを考えるときに参考にしたい34のアイデア | mah365

    GoodUIというサイトでは、サイトのコンバージョンを上げるときに参考にしたい34のアイデアを紹介しています(どんどん追加されるようです)。とても参考になったので、タイトルだけ日語訳してお伝えしたいと思います。あえて意訳しているところもありますが、英語的に完全に間違っている部分があれば、ご指摘下さい。 マルチカラムレイアウトにするより、シングルカラムレイアウトにしてみよう。 すぐにクロージングするより、プレゼントを与えてみよう。 UIを断片化させるより、似たような機能を統合してみよう。 自分で自分自身を語るより、ブランドのある誰かに語らせてみよう。 重要なアクションは1回だけ見せるより、何回も繰り返して表示してみよう。 クリックできる・選択できるアイテムは、ぼかさず明確にスタイルしてみよう。 選んで欲しいものを並列で並べるより、オススメを強調してみよう。 いちいち確認を取るより、Undo

    分かりやすいUIを考えるときに参考にしたい34のアイデア | mah365
    kimihito
    kimihito 2013/12/23
  • PhoneGap + MiddlemanでサクサクiOSアプリを開発する方法 | mah365

    最近HTML5の技術でスマホアプリを開発する試みをしています。 開発時にはブラウザで動作確認したい(簡易サーバを立ち上げておきたい)。 コマンド一発でビルドしたい。 開発にはお気に入りのエディタを使いたい。 Railsと簡単に連携できると良い。 などなど・・・ といった要件で環境の整備を進めているのですが、PhoneGap + Middlemanの組み合わせがなかなか良い感じなので、ご紹介したいと思います。 PhoneGapとは? HTMLをスマートフォンのアプリとしてビルドしてくれるフレームワークです。 iOS向け、Android向け、WindowsPhone向けなど、様々なプラットフォーム向けにビルドすることができます。 これがあれば一つのソースコードでマルチプラットフォームにアプリを配信することができるんですね!(理論上は) Middlemanとは? いくらHTMLでアプリを作るとい

    PhoneGap + MiddlemanでサクサクiOSアプリを開発する方法 | mah365
    kimihito
    kimihito 2013/11/23
  • WordPressのブログをherokuで立ち上げて、何かメリットあるの? | mah365

    blog.mah-lab.comはWordPressに移行した上に、現在みんな大好きherokuで運用しております。 「なんでわざわざherokuなんかで運用するんですか? マゾなんですか?」 いえいえ、ライトに立ち上げるなら、わざわざVPSなんて借りなくてもいいんですよ! herokuで立ち上げるメリットは、たくさんあるんです。なんといっても、無料だしね。 以下のような人に多大なメリットがあります。 無料で運用したい。 FTPなんて前時代的なものは使いたくない。git push heroku masterとか、コマンド一発でリリースしたい。 WebサーバやMySQLの面倒を自分で見たくない。誰か代わりに運用して! ものすごい負荷が来たときでも(金さえ払えば)落ちないようにしたい。 無料で運用したい。 herokuは無料からはじめられます。上手くいくかどうか分からないものを、お金を払っては

    WordPressのブログをherokuで立ち上げて、何かメリットあるの? | mah365
    kimihito
    kimihito 2013/05/30
  • 日本酒大好きっ子に向けたアプリ、SakeLoverの開発で知るObjectiveC vs RubyMotion | mah365

    HOMEソフトウェア開発日酒大好きっ子に向けたアプリ、SakeLoverの開発で知るObjectiveC vs RubyMotion プロトタイピング with RubyMotion みなさま、RubyMotionという技術をご存知でしょうか? Rubyという言語でiOSアプリを開発できるビルドツールです。しかもTitaniumなどとは違い、ネイティブ動作するアプリが開発できます。SakeLoverでも開発初期から採用しておりました! 主な採用理由は以下の通り。 XCodeなんて知らんがな、ObjectiveCなんて知らんがなという状態でアプリを作ろうとしていたので、渡りに船だった。 出たばかりのRubyMotion、このビッグウェーブに(ry RubyMotionが出たばかりでライセンスの割引があったのと、期末で会社のお金に余裕があった(重要!) 期待通り、ほぼサンプルのパクりでそれな

    日本酒大好きっ子に向けたアプリ、SakeLoverの開発で知るObjectiveC vs RubyMotion | mah365
    kimihito
    kimihito 2013/04/16
    日本酒大好きっ子に向けたアプリ、SakeLoverの開発で知るObjectiveC vs RubyMotion - blog.mah-lab.com
  • 2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365

    ちょうど去年の今頃、SonicGardenにおけるherokuでのサービス運用構成をご紹介しました。去年の比較して、今ではheroku番運用されているサービスも増えているかと思いますが、実際の構成例はあまり紹介されていないようです。去年ご紹介した内容も少し古くなっていますので、2013年バージョンとして、再度ご紹介したいと思います! 去年からの変更点 去年と比較して大きく変わっている点は、以下の3点ですねー。 バックアップ取得方法の見直し & 監視の導入 Route53愛してる! ログ取得のアドオンをPapertrailに変更 バックアップ取得方法の見直し & 監視の導入 @interuが去年のJAWS-UG in Nagoyaで講演したように、「当にバックアップ取れてるの?」というのは重要な視点ですね! なので、バックアップを取得するところと、監視するところ、セットで構成するように

    2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365
    kimihito
    kimihito 2013/04/13
    2013年版! SonicGardenにおけるherokuでのサービス運用構成 - blog.mah-lab.com
  • SonicGardenにおけるherokuでのサービス運用構成 | mah365

    SonicGardenではいくつかのサービスをheroku番運用しています。herokuはステージング用途で利用されこそすれ、番環境として運用されている話はあまり見かけないと思いますので、どんな構成で運用しているのかご紹介したいと思います。 使用している外部サービス サービス名 説明

    SonicGardenにおけるherokuでのサービス運用構成 | mah365
    kimihito
    kimihito 2012/12/26
  • iOSとRailsを連携させたアプリの簡単なつくり方 | mah365

    ソースコードの置き場所 Rails側のサンプル https://github.com/mahm/iphone_note iOS側のサンプル https://github.com/mahm/Note 動作例 動作している様子を動画に録って見ました。 class ApplicationController < ActionController::Base protect_from_forgery unless: proc { @basic_auth_token_request } before_filter :authenticate_user! protected def authenticate_with_basic return unless params['token'] and params['token'] == "token" request_http_basic_authent

    iOSとRailsを連携させたアプリの簡単なつくり方 | mah365
  • ブログのエンジンを自作のものに差し替えました | mah365

    ブログのエンジンを自作のものに差し替えて、少しデザインも新調しました。totoのソースコードがアレすぎて、綺麗にするのに限界を感じました。。(特にルーティング部分) 他のブログエンジンを採用することも検討しましたが、以下の要件を満たすエンジンが見つからず、簡単なものなので自分で作った方が早いと思いました。 URIはtotoで運用していたときのものから変更したくない。 ブログのエントリはテキストベース(markdown)でやりたい。 herokuで運用するので、DBを使いたくない。(herokuDBは無料で5MBまでしか使えない。。) Railsを採用したのはオーバースペックだったような気もする。。Sinatraでも良かったかなという感じです。単にRails3.1を使ってみたかっただけだった。 ソースコードは例によってgithub上にpushしておりますので、どうぞご笑覧下さいませ。 新し

    ブログのエンジンを自作のものに差し替えました | mah365
  • 玄人向けブログエンジンtotoを使ってブログを作成してみた | mah365

    勉強会で@youheiさんにアツいブログエンジンがあるという話を教えて頂いたので、Rackアプリケーションとして動作する、このtotoというブログエンジンを使ってブログを構築してみることにしました。 ブログとして成り立つギリギリの部分しか実装されていないこのブログエンジンはかなりイケていて、 350行ぐらいで書かれている。 意外と使っている人がいる(githubのdiscussでそこそこ意見交換されている) herokuへのデプロイに最適化されている。 生Rack。 一応templateもある(dorothy) 350行ぐらいならハマっても、なんとか自分で対処できそう。 管理はローカルのコマンドラインで完結する。よくあるブログのうざったい管理画面ともおさらばできる。 と、良い事ずくめです。Bloggerはちょっとした特殊文字が記事の中に入っているだけで怒られるし、いろいろ面倒なので、この際

    玄人向けブログエンジンtotoを使ってブログを作成してみた | mah365
    kimihito
    kimihito 2012/12/15
  • Railsプログラマはこれを入れればすぐにズルいデザインをはじめられます! | mah365

    先日のプログラマ向けデザイン勉強会で発表された「少ない手間と知識で”それなり”に見せる、ズルいデザインテクニック」(by 赤塚さん)の中に書かれていたSassのMixinをRailsで使えるGemにしてみました。 zurui-sass-rails: https://github.com/mahm/zurui-sass-rails sample: http://zurui-sample.herokuapp.com/ うおおずるい!w RT @mah_lab: .@ken_c_lo さんのズルいデザインをGemにしてみました。 github.com/mahm/zurui-sas… サンプルはこちら zurui-sample.herokuapp.com (based on github.com/machida/Custom…) — TAEさん (@ken_c_lo) 11月 7, 2012 @m

    Railsプログラマはこれを入れればすぐにズルいデザインをはじめられます! | mah365
  • 1