2016年8月15日月曜日

ミドリ グラスルーラー紹介(Amazon アソシエイトを使ってみる)

今回は、Amazon のアソシエイトを使ってみることを名目に商品の紹介をします。

Designphil Design Project - Glass Ruler
http://www.designphil.co.jp/designphilcollection/products/glass_ruler.html

かなり前から Amazon のアソシエイトには登録していたのだが、blogger の アドセンスと共存してよかった物かわからなかったので、使っていなかったけど、なんとなく両方使って問題なさそうなので使ってみます。
以下に、ミドリのグラスルーラーのリンクを貼ってみます。

多分出ているかな。。。

さて、この商品は見ての通り定規なんですけど、強化ガラスを使用した定規となっており、非常に見た目が美しくなっています。
ただ、無駄に重く、雑に扱うと割れそうなので気持ちに余裕がないとちょっと厳しい商品となっています。
また、付属で専用ケースが付いています(肌触りとしてはスエードっぽい)。
このケースも結構タイトに作ってあるので、出し入れの時に結構な抵抗があります。
使い続ければ慣れてくるかと思うので、暫く様子見ということで。

定規にしては、かなり高価なものにはなりますが、定規なんてそうそう買い換えるものではないので(用途によりますが)、年齢的にも多分最後の定規なんじゃないかと。
まあ、ガラスなんで割れたら別ですけど、その時も多分これを買うでしょう。
それくらい魅力のある商品です。

頻繁に使うものでもないけど、使うときに少しうれしい感じがいいので、大人の文具といった感じでしょうか。
気になった方お一ついかがですか?

Rails に慣れる方法

Rails を使うようになった。
まだまだ使いこなせている感が出ていないけど、Rails に関しては全くの白紙の状態から今の段階まで早く到達する方法を自分なりにメモって置きます。

大きく分けると以下の 3 つ

  1. 大量に情報を詰め込む
  2. Ruby 自体を理解する
  3. 利用できる gem を知っておく

1. 大量に情報を詰め込む

Rails ぐらいになると、Web には山のように情報がある。
当然これを活用しても良いが、まずは書籍を数冊購入し読み漁る(この手の本は無駄に高いので会社で購入か持っている人に借りるかをした方がよい)。

なぜ書籍なのかというのは、書籍の場合は使用している Ruby や Rails のバージョンが固定されているので、少々分からなくても次々とすすめることが出来る点が良い。

悪い点は、最新の情報に対応していない場合や、もっと言えば使用している API 側でバージョンが変わってしまって本の通りにプログラミングしても動かなくなってしまう可能性がある点。

話が若干それたが、書籍である程度の知識を得る。
その後、動画や Web 記事などを見るとそこに書かれてある内容が把握しし易い。

結局、出てくる語彙をいくら知っているかが肝で、Web の記事などを読んでいて、? マークが出た時に調べていたら本筋に戻れなくなってしまうのでそれをやらないためにも事前知識を蓄えておこうと言うことです。

自分なりに良かった媒体を下記に記します。

2. Ruby 自体を理解する

Rails は結局 Ruby を使っているので(なんか言い方悪い気がする)、本体の Ruby を理解しないとデバックの時に困るし、そもそもロジックが記述できないので本質的な部分を抑えましょうという話。

上記の書籍類には大体 Ruby の説明箇所がとられているので、本を読む時にはそれほど Ruby を感じる事はないけど、実際に自分で製品を作る段階に牙を剥いてくるので知識を得ときましょうという話。
Rails のエラーが出た時にも知識の有無でデバッグのスピードが異なる。

3. 利用できる gem を知っておく

Ruby の原則(?)として車輪の再発明はしないというものがある。
ちょっと小慣れてくるとどうしてもロジックを書きたくなるものだが、実はその時間が無駄だったり(頭ごなしに無駄とは思っていませんよ)、より良い物が世の中にはあったりする。
これらは、gem というもので提供されているので、まずは gem を探してからなければ実装とすればグッと開発時間が短縮できる可能性があるという話。

欠点としては、gem 自体に問題が有った場合。
知識がないと採用/不採用の判定や、修正ができる/できないが判断できない点。
まわりに、聞ける人がいれば良いんだけどね。


以上がざっと Rails の習得の時に過去の自分に会えるなら伝えたい内容です。
あとこれ以外なら開発環境は IDE を使ったほうが良いというぐらいかな。

ただ、Rails と言わず Web サービスを作るにあたっては、サーバーサイドだけでなく、HTML や CSS、JavaScript などのクライアントサイドや、サービスAPI に関する事や、サーバー自体の環境に関することなどもあるので一筋縄には行かない。

ちょっとした内容を読むには、英語も必要だし、込み入ったサービスなら仕様自体の理解も必要と考えるだけで、ちょっとしんどかったりもする。

とはいえ、チームで開発すると思うのでその部分は助け合いながら開発できれば良いかな。。。
(コミュ障気味な自分には厳しいなぁw)

Written with StackEdit.

2016年5月3日火曜日

RubyMine でコントローラを作るときに spring 関連のエラーになる

RubyMine からコントローラの作成などをしようとするが、「`to_specs’: Could not find ‘spring’」こんな感じのエラーが出て作成できない。
実際に発行されているコマンドを見ると
 
.../awesome_events/vendor/bundle/ruby/2.2.0/bin/spring rails generate controller welcome index -s

となっている。

メッセージにも、コマンドにも spring とあるので、spring 関連は明白。

エラーメッセージには spring がインストールされているか確認せよ!とあるので、 Gemfile を見るが記述はあるし、インストールフォルダも存在するのでインストールはできている。
他の spring が関係しているのか? と思い停止(bin/spring stop)などをしてみるが変化ない。

そもそも、bundler 経由での rails コマンドのはずが一切無視されているのが非常に気になる。 ターミナルを使って、コントローラの生成をしてみると上手くいく。

RubyMine の Run > Edit Configurations… の関連しそうな項目(Ruby とか Rails とか)の bundler タブの Run the script … にチェックを入れてみても変わらず(一体どうなってんの???)

色々と探ってみた所、どうやら spring の設定は、Preferences の Languages & Frameworks > Ruby SDK and Gems の設定に引っ張られるようで、この項目に指定してある rbenv の右の窓にある gem 群に spring がないとダメみたい。

“+” ボタンを押して、大量に出る gem の中から spring を探しだし(なぜここには検索窓が無いのか?)、インストールすることで、コントローラ生成コマンドが動くようになった。




しかし、bundle install の設定はいつ効いてくるのだろうか・・・
(rbenv 2.2.3 にも spring がなかったので同様のエラーが出るかと期待したけど、この環境で作った場合には spring を使わないようになっていた。正直意味不明。一体どこで指定するのだろうか。)

この手の環境で悩まされるのを解消するためもあって IDE を使っているのだが、逆に IDE の設定で悩むとは本末転倒な気がしてならない。
動き始めると便利だけど、ちょっとしんどい。

2016年4月24日日曜日

愛媛の IT 関連 Slack 紹介

IT 関連の情報を入手する事困っていませんか?
私自身も IT 業界の人間ですが、正直あまりこの手の情報の入手に長けているわけではなく、人伝いに聞いたり、Web で情報を見たり常々感心するわけです。
まあ、早い話貪欲さが足りないというか、、、

と、言うわけでどうすればイケてる話題が入手できるかですが、本来なら興味あるコミュニティへ参加するのが手っ取り早いと思うのですが、いかんせん億劫でかつ最前線は当然の事ながら英語と敷居が高い状態です。

次点として、コミュニティに参加はしないまでも、某の方法(セミナーとか今回の本題のSlack等)で自分より詳しい人の話を聞く、または情報交換をするがよく、その次は Web 記事を確認、最後に書籍を読むなどでしょうか。

書籍については、正しい情報が載っているのですが、この時代のスピードでは厳しい状態になってきています。
(先日 Swift の本を購入しましたが翌日には新しいバージョンが発表されたという事がありました。。。)

で、今回は次点の部分で地元の IT 関連の Slack があるので紹介しようかと。

ehime IT Slack
https://ehime-it-slack.herokuapp.com/

愛媛の IT 関連の方々が参加している Slack チャンネルです。
参加については上記のページでメールアドレスを入れることにより招待メールが届くのでそれで参加の形となります。

興味のある方は参加してみてください。

2016年3月19日土曜日

入力れた文字をかな変換する(Swift)

テキストボックスに入力された文字をかな変換する機能を実装必要が出てきました。
内容としては、iOS 標準アプリの電話帳とかにある、姓名を漢字で入力したら、よみがなが自動的に入るあの機能です。

ものすごく単純に考えると、入力された値を保持して「かな」に変換してやれば良いかと思ったのですが、部分削除等の操作を考えると、頭が混んがらかってきたので、多分違う方法があるだろうと思って調べてみました。

すると、正にやりたかったことが実装されているページがありましたので参考にさせて頂きました。

[OSX][iOS]読み仮名を得る(Cocoa練習帳)
http://ameblo.jp/bitz/entry-11859904155.html

Objectiive-C で書かれたコードですが、Swift に置き換えても問題なく動作しました。
素晴らしい。

実装内容としては、入力された値をトークナイザーを使用して解析し、ローマー字に変換後、かな変換すると言った物です。
Swift 変換のコードを下に載せておきます。

func kanaHenkan(text: String) -> String {
    let inputText: NSString = text
    let outputText = NSMutableString()

    let range: CFRange = CFRangeMake(0, inputText.length)
    let locale: CFLocaleRef = CFLocaleCopyCurrent()
    let tokenizer: CFStringTokenizerRef
                   = CFStringTokenizerCreate(kCFAllocatorDefault,
                                        inputText as CFStringRef,
                                                           range,
                              kCFStringTokenizerUnitWordBoundary,
                                                           locale)

    var tokenType: CFStringTokenizerTokenType
                   = CFStringTokenizerGoToTokenAtIndex(tokenizer, 0)

    while (tokenType != .None) {
        let latin: CFTypeRef
                   = CFStringTokenizerCopyCurrentTokenAttribute(tokenizer,
                                                                kCFStringTokenizerAttributeLatinTranscription)
        let romanAlphabet: NSString = latin as! NSString
        let furigana = romanAlphabet.mutableCopy()
        CFStringTransform(furigana as! CFMutableString, nil, kCFStringTransformLatinHiragana, false)

        outputText.appendString(furigana as! String)

        tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer)
    }

    return outputText as String
}

メソッド化して、与えた文字列をかな文字で取得するようにしています。
うまく置き換えができるか心配でしたがなんとかできてよかったです。

Written with StackEdit.

2016年2月14日日曜日

携帯キャリア変更によりGoogle の二段階認証ができなくなった話

先日、キャリアの2年縛りが終了するとのメールを受けて、嬉しげに iPhone 6s に変更しました(実際にはそれほどでもなかったけど)。

そこで、ケチってキャリアごとの MNP を行って金額を安くする方法を試みたのですが、それが仇となり今回のタイトルの様な自体が起こってしまったのです。

二段階認証の確認コードが数時間前に解約したキャリアメールに飛ぶ画面を見た時のやっちまった感は、なかなかのものでした。

実際は、この二段階認証は、キャリアメールだけではなく、バックアップコードを取得しておけば、それを使ってログインできる様になっているのですが、パット見ナンノコッチャな印象で放置していました。
問題が発生してから事の重要に気がつくという、よくあるパターンです。
なので、バックアップコードは入手するようにしましょう。

バックアップコードの内容としては、これを作成すると、パスフレーズが複数個入ったテキストファイルを入手することができるので、二段階認証の画面でキャリアメール以外の方法を選択すれば、このコードが使用できるといったものです。
まあ、このファイル自体もなくしてしまうと意味無いですけどね。しかし、作っておくに越したことありません。

さて、今回やらかしたのは、通常の Google アカウントと、Google Apps を使用して独自ドメインで使用していたサイト管理のアカウントです。

Google アカウントについては、検索すると割りとヒットしますので、そちらを参考に。。。

MNPしたらGoogle認証(ログイン)の2段階認証が出来なくて悶絶した。
http://d.hatena.ne.jp/gonsuke777/20150924/1443095404

Googleアカウントにログインできない問題を解決した方法
http://tarohibi.com/google-noenter

たぶん大体の人は復旧フォームを使用しての対応になるかと思いますが、
結構復旧には厳しい質問(アカウント使用開始日だとか、最終ログイン日だとか、良くメールを送るアカウントだとか…etc)が続くので覚悟が必要です。

たまたま、パスワード管理ソフトを使用していことも有って最終使用日がそこに書かれてあったと言うのと、twitter のアカウントと大体同じぐらいの時に開設したアカウントだった事を思い出し復旧ができました。
これでだめならどうしたら良いのか分かりません。

次に Google Apps の方ですが、こちらはどうにかして、Google 宛に二段階認証が行えない旨の内容をフォームで送ることから始まります。

Google Apps for Work
https://apps.google.com/intx/ja/

どこからフォームを送ったのかわからなくなったのですが、多分ログイン画面で、ログインできないを選択してフォームにたどり着いたと思います。

内容については詳細を記述する所があるので、包み隠さず内容を書いてください。
(自分の場合は若干焦っていたこともあり、最初の内容は若干内容が薄いと感じて再度内容を送りなおすという事をしてしまいました。
同じ内容で送ると質問番号がグチャグチャになるのでやめてくださいと、お叱りのメールをいただきました。。。)

送信完了画面には、48- 72 時間までに返答をしますという事を書いてあり、また真夜中(23時)に送信したので、明日もしくは明後日、ひょっとしたらスルーされるかもと思っていたのですが、ものの 1 時間後には連絡のメールが届きました。

そして、そこには管理者としての証明を行う確認方法が書かれてあり、証明が確率したら一定時間の解除コードを教えていただけるという内容で復旧が行えました。

サラッと書きましたが、サイトを作成した時から暫く放置していたので、証明作業に結構苦戦しました。しかし、担当の方の気遣いもあり不安なく作業することができました。

正直、Google と言う企業、冷血な企業と思っていましたが、先程も書いたとおり、フォームを送ると直ぐに回答が返ってきたり、夜中の対応、そして朝には電話での連絡も頂くなど、ものすごく手厚いサービス。
何より日本人のスタッフが担当してくれて、言語の不安も安心と、全くの不安はありませんでした。

すげぇや Google !!

と、久日に企業に対する感想を持ったのでした。

まあ、これで次やらかしても安心などとは思いませんが、質問することの憂鬱感は無いのは確かです。
もし、同じ状態になった方がおられた場合は、一旦 Google に問い合わせをかけて見るのが良いかもしれません。

最後にまとめてとして、携帯を変更する場合に気をつける点を書いて置きます。

  1. キャリアメールの二段階認証をしていないか(している場合は一時解除)
  2. バックアップコードは入手しているか
  3. その他の代替手段の設定はしているか(モバイルアプリやバックアップ用電話番号の指定もできる)

私のように馬鹿な事をしないように皆さん気をつけてくださいね。

Written with StackEdit.

プログラマ向けノートアプリ Quiver

Markdown 使っていますか。
さて、今回は Mac 専用のアプリとはなりますが、プログラマ専用のノートアプリがあることを教えてもらったので、記録がてら残しておきます。

名前は Quiver。
日本語で言うところの矢筒ですね。

Quiver
http://happenapps.com/#quiver

AppStore から購入でき、この記事を書いている時点では 1,200 円です。
今回トライアル版があるので試して見ました。

ちなみに、似たようなコンセプトに、和製の Boostnote があります。
こちらは今のところ Free で使用できます。

Boostnote
https://b00st.io/jp/

その他は、Github が提供している GitBox でしょうか。

GistBox
http://www.gistboxapp.com/

こっちは完全 Cloud でスニペットを格納するので、ちょっと違うかもしれません。

Quiver の特徴としては、Markdown が使える、コードシンタックスが使用できる、LaTex もサポート、エディタが良い?、ファイルリンク、全文検索、テーマのカスタマイズ、オートセーブ、JSON フォーマットでのエクスポート、Dropbox や、iCloud Drive、その他のクラウドサービスとの同期が行える、更にはチームでも使用できるなど、至れり尽くせりで。ナレッジを格納するには持って来いの内容のようです。

実際に使ってみると、素晴の一言。
ジャンル分けもでき、tag 付等もできる。
また、Inbox や Recents とかまであるので、なんとなく GTD ツールっぽくも使えるかも。

いい点としては、区間をセルで区切り、そのセル内にどの形式(Markdown/Text/Code…)で記述するかを指定することで、その形式に適した表示を行えるという点。この方式は実に良いと思います。
これまでの Markdown エディタは、一つのファイル内で一形式だったので、テキストの装飾が面倒だったり、コードはそれなりの指定で囲む必要があったりと、扱いが面倒だったのですが、この方式なら簡単操作で切り替えることができストレスなく作業できそうです。

二の足を踏む点としては、似たような内容を TrunkNotes というアプリでやっている点でしょうか。ただ、こちらはコードシンタックス等がなく(どうにかすればできるかもしれない)、また見せ方も Wiki なのでやや見づらい点があり悩んでいたところでした。
現状の不満点としては、iPhone 版のアプリが無いという点。
実際 iPhone で編集等はしないのですが、書いた内容を確認できるという安心感というか達成感というかが欲しいと言うのが自分には大事な部分となっています。

Trunk Notes
http://www.trunknotes.com/

とはいえ、クラウド連携があるので、組み合わせれば最高の環境が出来そうな気がしてきました。
もう暫くトライアル版で試してみてから購入を検討したいと思います。

追記:
クラウド連携の確認をしてみたところ、例えば Dropbox であれば、Mac にDropbox のアプリを入れて同期出来できる状態にしてそこに Quiver のファイルを置く内容みたいです(このアプリから Dropbox 連携をするわけではないみたい)。
あと、ファイルは専用ファイルになるので、Trunk Notes で作成した Markdown のファイルを読み込めるようではない(インポート機能)ようです。
折角の資産(といっていいかわからないが)が活かせないのは残念。

Written with StackEdit.