2015年 年始の状況
最近、またGitHubにソースをアップしだした。 作りたいものはたくさんあるので、忘れないようにブログに記録していきたい。
BaaS
今、BaaSを使ってみたい、Parse.comが使いたいという気持ちが高まっている。(DBの管理をしたくない) とりあえず以前作った、AWS APIの習作であるaws-portal に認証機能を付けてみたい。
betahikaru/aws-portal · GitHub
aws-portalは、「AWSマネジメントコンソールわからん!」「必要なとこだけみしてよ」という自分の不満を解消するために作った。 自分のアカウントのEC2やElasticBeanstalkの情報を確認したり、インスタンスを起動したりできる。実装言語はRubyで、フレームワークはSinatraを使っている。
現時点では環境変数にIAMの情報を登録して使う形になっているが、Basic認証すらないため、アクセスした人すべてが何でも操作できてしまう。 Parse.comの提供している認証周りのAPIを使えば、楽にアカウントごとにIAMの情報を登録できるようになるのでは??Twitter連携とかも何も考えずに作れるのでは?という妄想をしている。
関連書籍は、パーフェクトRuby、WEB+DB PRESS plus Ruby徹底攻略、他。
- 作者: Rubyサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 角征典,成瀬ゆい,そらは(福森匠大),田中哲,笹田耕一,村田賢太,まつもとゆきひろ,松田明,後藤大輔,浦嶌啓太,高橋健一,柴田博志,近藤宇智朗,大和田純,白土慧,原悠(yhara),伊藤直也,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/12
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Swift
今度、2人暮らしをする事になった。こまごまとしたタスクやスケジュールを常に見える場所に置きたいな〜ホワイトボード買う?ほかに何か無いかな〜と考えていたら、会社のデジタルサイネージが目に入った。
家庭内デジタルサイネージ作りたい。
ちょうどいい事に、iPad miniも最近手に入れた。リビングにiPad miniを置いて、デジタルサイネージ的な情報が表示されてたらかっこいいのでは!?
ネイティブアプリの開発者は供給が足りていないと聞くし、いっちょSwiftでiOSアプリ作れるようになりたい! (ぶっちゃけ、作るとしても普通のWebアプリかWebビューのネイティブアプリになるとおもう。)
関連書籍は、 WEB+DB PRESS Vol.84 のSwiftの @__gfx__ さんの記事、(と、iOS5時くらいの古い書籍…)
- 作者: 藤吾郎,桑野章弘,福永亘,谷井靖史,野村晋之介,蛭川皓平,岡田友輔,藤本真樹,伊藤直也,宮崎靖彦,佐藤健太,高橋俊幸,佐藤太一,海野弘成,佐藤歩,泉水翔吾,渡邊恵太,舘野祐一,中島聡,橋本翔,はまちや2,竹原,伊賀敏樹,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/12/23
- メディア: 大型本
- この商品を含むブログ (2件) を見る
- 作者: アーロン・ヒレガス,ジョー・コンウェイ,Aaron Hillegass,Joe Conway,木南英夫,上堀幸代,内橋真吾
- 出版社/メーカー: ピアソン桐原
- 発売日: 2011/12/21
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 175回
- この商品を含むブログ (11件) を見る
JavaEE
そうはいっても、学生時代からずっとJavaをやってきて、仕事でもJ2EEサーバを使っている自分としては、Javaの最新情報も知っておきたい。 つい最近までJava6だったし、JSFなんて存在さえ知らずJSP使っていたしで、かなり乗り遅れている感がある。 とりあえずやってみたいが、JavaEEはとりあえずやるには重厚すぎる…?とくにEJB。
Spring Bootとかは、軽め?に見える。転職サイトの使用フレームワークにもSpringは結構あった。 Play Framework (+ Scala) とかは、正直面白そうだが、多分やらないと思う。
関連書籍は、Javaエンジニア養成読本、わかりやすいJavaEE ウェブシステム入門。
Javaエンジニア養成読本 [現場で役立つ最新知識、満載!] (Software Design plus)
- 作者: きしだなおき,のざきひろふみ,吉田真也,菊田洋一,渡辺修司,伊賀敏樹
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/11
- メディア: 大型本
- この商品を含むブログ (6件) を見る
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2014/11
- メディア: 単行本
- この商品を含むブログを見る
まとめ
とりあえずHelloWorld程度のリポジトリを量産して放置、というのが続いている。 aws-portalで○×ゲームレベルのものは作ったが、胸を張って人に見せれるレベルまでは行ってない。
自分の代表作というか、ずっとメンテしていく価値のあるものを作りたい。
parse.com のrubyラッパー
Parse.com を使いたい。 Parse.comのSDKとして用意されているのは以下。
また、Parse.com 上で処理するCloud Code (Node.js with Express)もある。
ただ、Parse.comのSDKは、アプリ固有のキーを使って初期化する必要があるので、Javascriptのように外部にキーが公開されるのはよろしくない。やっぱりサーバサイドで処理を書きたい。。。
javaな人なのでrubyは勉強中ですが、今回SDKを組み込みたいソフトウェア(拙作のaws-portal)がruby製なので、Parse.comのREST APIのrubyラッパーがないか?と探してみた。
Parse.comのrubyラッパー
たぶん以下の2つが主なGEMだとおもう。GitHubのページ見たら、作者が同じだった。
- parse_resource | RubyGems.org | your community gem host
- ActiveResource風味
- 最近のissueのコメントを見ると、こちらは積極的にメンテせず、parse-ruby-clientの方をチェックしてみてくれと言っている。
- parse-ruby-client | RubyGems.org | your community gem host
parse_resource
RailsのActiveRecordのようなインタフェースでREST APIを使えるActiveResourceというgemのがあるのだが、ActiveResourceのインタフェースっぽくParse.comのAPIを使える。というものらしい。最新versionは 1.8.0(2013年リリース...)。
README.mdから、使い方を引用します。
modelはこんな感じに定義したり、検索したり、保存できるらしい。
class Post < ParseResource::Base fields :title, :author, :body validates_presence_of :title end p = Post.new # validations p.valid? #=> false p.errors #=> #<ActiveModel::Errors:0xab71998 ... @messages={:title=>["can't be blank"]}> p.title = "Introducing ParseResource" #=> "Introducing ParseResource" p.valid? #=> true # setting more attributes, then saving p.body = "Ipso Lorem" p.date = Time.now p.save #=> true # ActiveRecord style find commands Post.find_by_title("Uncrunched") #=> A Post object # batch save an array of objects Post.save_all(array_of_objects)
ユーザ作成(Sign up)とログイン・ログアウトはこんな感じ。
# app/models/user.rb class User < ParseUser validates_presence_of :username fields :name, :bio fields :email end # create a user user = User.new(:username => "adelevie") user.password = "asecretpassword" user.save #=> true # check if a user is logged in User.authenticate("adelevie", "foooo") #=> false # A simple controller to authenticate users class SessionsController < ApplicationController def new end def create user = User.authenticate(params[:username], params[:password]) if user session[:user_id] = user.id redirect_to root_url, :notice => "logged in !" else flash.now.alert = "Invalid username or password" render "new" end end def destroy session[:user_id] = nil redirect_to root_url, :notice => "Logged out!" end end
すごく、"Railsっぽい"という印象。
parse-ruby-client
今多分一番使われている?っぽいGEM。公式のSDKと同じような使用感になっているっぽい。ところどころ"TODO: Implement this!"となっているのがやや気になるが…。 こちらも、README.mdから、使い方を引用します。
オブジェクトの作成は以下。
#ruby game_score = Parse::Object.new("GameScore") game_score["score"] = 1337 game_score["playerName"] = "Sean Plott" game_score["cheatMode"] = false result = game_score.save puts result
これ、Javascript SDKとかiOS・Android SDKのものと凄く近い。
// JavaScript var GameScore = Parse.Object.extend("GameScore"); var gameScore = new GameScore(); gameScore.set("score", 1337); gameScore.set("playerName", "Sean Plott"); gameScore.set("cheatMode", false); gameScore.save(null, { success: function(gameScore) { // ... }, error: function(gameScore, error) { // ... } });
// Ojbective-C PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"]; gameScore[@"score"] = @1337; gameScore[@"playerName"] = @"Sean Plott"; gameScore[@"cheatMode"] = @NO; [gameScore saveInBackground];
ユーザの作成(Sign up)、ログイン・ログアウトは以下。
# sign up user = Parse::User.new({ :username => "cooldude6", :password => "p_n7!-e8", :phone => "415-392-0202" }) user.save # login user = Parse::User.authenticate("cooldude6", "p_n7!-e8") # sign up by twitter o-auth twitter_user = Parse::User::Twitter.new({ "id" => "12345678", "screen_name" => "ParseIt", "consumer_key" => "SaMpLeId3X7eLjjLgWEw", "consumer_secret" => "SaMpLew55QbMR0vTdtOACfPXa5UdO2THX1JrxZ9s3c", "auth_token" => "12345678-SaMpLeTuo3m2avZxh5cjJmIrAfx4ZYyamdofM7IjU", "auth_token_secret" => "SaMpLeEb13SpRzQ4DAIzutEkCE2LBIm2ZQDsP3WUU" }) twitter_user.save
あれ、ログアウトは、userをnilにすればいいのかな。 関係ないけど、rubyのnullってnilだっけ?swiftはnilだけど。
まとめ
とりあえず parse-ruby-client を使えばいいんじゃないかな。