省エネ

Flutter、vue3修行中。

Elixir Meetupへ行ってきました。

beam-lang.connpass.com

 

昨日はエリクサーの勉強会へ行ってきました。

 

会場はドリコムさん。

 

発表者3名、LT2名+飛び込み1名でした。

 

 

ドリコムさんでは、既に本番運用でElixirを使用しているみたいですね。

 

発表内容

・Elixir Production

 →現在運用中のElixirプロジェクトの話(はまったとことか)

 

・Elixir内部の話

 →実装コードの解説とか

 

・Power Assert Insert

 →の実装方法

 

LT

Javaメインの会社でエリクサーを流行らせようとしている話

 →Elixirを社内で使おうとして失敗して話

 →実績のない言語を使おうとすると社内決裁がおりなくて辛い

 

・Loggerの構造と拡張

 →Loggerをカスタマイズした話

 

もう一人、飛び入りでLTしてくださった方の発表内容を忘れてしまいました。。。

 

 

次回もあるみたいなので、次はもっとElixir勉強してから行きたいと思います。

 

 

 

【Android】zipalignがない…だと…

アプリを作ったら公開したくなるのが人間の性ですよね!

 

って訳で、全然インストールされないけど自分で使いたいアプリをモリモリ作って公開している者です。

 

ある日、Developer Consoleにアプリをうpしようとしたらzipalignかけてからうpしてねーって怒られた。。。

 

前回うpした時はこんなこと言われずにすんなりうpできたのにーーーー!!

 

どうした!?

 

そもそもzipalignとはなんぞや??

それはこちらを参照してください。

w. 最適化が簡単な Zipalign - ソフトウェア技術ドキュメントを勝手に翻訳

 

色々サイトを調べてみるとandrois-sdkのtoolsの下にzipalignがあるぞって書いてあるんですが、ないない、見当たらなーい。

 

ったら、ここにありました。

 

/sdk/build-tools/22.0.1

 

しかし、この下にあると何故かコマンドが打てないので、toolsの下にコピーしてきます。

したらば、無事にzipalignコマンドが打てました。

 

 

zipalign -v 4 変換前のファイル名.apk 変換後のファイル名.apk

 

 

ちなみに署名後のapkじゃないとダメですよー。

 

 

って訳で、無事にDeveloper Consoleにapkをうpすることができした。

 

 

 

DDD勉強会へ行ってきました

connpass.com

 

昨日はこちらのDDD勉強会へ行ってきました。

ちなみに、私はDDD完全に初心者です。

 

そして、30分遅刻していきました。。。

 

最初のセッションは、「実践ドメイン駆動設計」の社内読書会の中間発表だそうで。

私が入った時にはちょうど3章の説明をされているところでした。

以下、ざっくり。

 

3章

ドメインとコンテクストマップを作る。

上流と下流に腐敗防止層を作る。

 

4章

ヘキサゴナル(ポート&アダプター)にすることでドメイン以外の部分が綺麗になります。

クラウドデザインパターンを理解することがお勧め。

 

5章

なんやかんやでオブジェクト指向の話

 

6章

Value Objectを使う。

例えば電話番号ならInt型ではなくPhoneNumber型を作る、とか。

 

7章

アプリケーションサービスクソだった。

サービスはあまり多用しないようにね。

 

 

DDDとは、お客さんとのやりとりをそのままコードにするっていう考え方、らしいです。

 

 

2つ目のセッションは実際に開発チームでDDDを実践してみたお話。

 

某S者、出直しDDDってるってよ。

 

自社で作っているサービスや実際のソースコードなどを見せていただきましたが、開発者さんが.ネッターなので、いまいちピンとこず。

私が無知なだけですね。。。

 

つまりは、

ユビキタス言語を使う。

メソッド名、クラス名にはこだわる。

全員でモデリングする。

 

などなど、重要な点だそうです。

 

 

今回の勉強会に参加したことで、なんとなくDDDの一端が見えた気がしました。

【Ruby on Rails】Controller作成する

こんばんは、前回はmodelの作成をしたので、今回はcontrollerを作成します。

 

前回、私の環境ではuser_baseというmodelを作成したので、userというcontrolerを作成します。

 

rails generate controller user

 

これの最後のuserのところが作りたいcontroller名です。

これを打つとファイルがいくつか作成されると思います。

 

作られたファイルはコンソールを見るとわかると思います。

 

とりあえず、今から弄るのはこれ。

 

app/controllers/user_controller.rb

 

viewも欲しいので、app/viewsの下にuserディレクトリを作成します。

その下にedit.html.erbという名前のファイルを追加します。

 

ここにごりごりhtmlを書いて、userデータを登録する用のformを作ります。

 

 

本当はform_forを使いたかったのですが、なんだかう上手く行かなかったのでform_tagでなんとかそれぽく。。。

 

 

 

<%= form_tag("/create", method: 'post') do %>
<dev>
<%= label_tag(:name, "名前     :") %>
<%= text_field_tag :name %>
</dev>
<br>
<dev>
<%= label_tag(:name_kana, "名前(カナ)  :") %>
<%= text_field_tag :name_kana %>
</dev>
<br>
<dev>
<%= label_tag(:mail, "メールアドレス:") %>
<%= text_field_tag :mail %>
</dev>
<br>
<dev>
<%= label_tag(:authority, "権限     :") %>
<%= text_field_tag :authority %>
</dev>
<%= submit_tag "作成" %>
<% end %>

 

 

で、ルートファイルを編集(前記事参照)。

これを実行すると……。

f:id:qkuroneko:20151213211759p:plain

 

かなりダサい感じになってしまったので、次までにこのフォームにsccをつけてそれっぽくしたいと思います。

 

 

ちなみに、ソースはgithubにあげてますので、興味ある方はこちらを参考にしてください。

こちらは随時更新されるので、ブログに書いているソースとは異なる場合がありますのでご了承ください。

 

qkuronekop/ProjectTaskManager · GitHub

 

 

 

プロ生ちゃん、勉強会生放送

pronama.azurewebsites.net

 

いやー、面白かったですね。

前半2名のプレゼンしか聞けなかったのですが、とりあえずVS2015を使ってみたくはなりましたね。

 

しかし、我が家のPCのメモリ4Gしかないので厳しいかも。

動かない事はないだろうけど。

 

JavaScriptクロスプラットフォーム開発よかったですね!

あれは、やってみたい。

#CをやったことがないのでLINQの存在知らなかったのですが、なかなかの機能ですね。

なんと、そんなLINQの機能がJavaScriptで使えるLINQ.jsなるものがあるようです。

 

しゅごい。

 

さらにさらに、RxJSっていうのもあるんですね。

VSを使うとインストールもNuGetでらっくらく。

 

うーん。

10年位前にVSで開発したことありますが、なんかいいイメージなかったんで今まで使うの避けてましたが、何やら便利そう。

JSの補完してくれるのいいですね。

JSだけじゃなくて、HTMLやSCCの補完もしれくれるみたいです。

 

あ、あと、リップル?でしたっけ。

Chromeで使えるエミュレータ

 

win環境だけじゃなくて、AndroidiOSも使えるとか。

しゅごい。

 

これは、早速使ってみなきゃですね。

 

プレゼンされてた@biacさん、無償のVS2015を使用した開発例を発表されてました。

個人開発なら無償版で充分そうですね。

 

お仕事で使ったり複数のチームで使う場合には、ライセンスとか細かく決まってるみたいなので要注意です!

【Haskell】すごいHaskellたのしく学ぼう!の読書会に参加しました。

readhbon.doorkeeper.jp

 

前半は結構通ってたんですが、後半業務が忙しくてなかなか来れなかったのですが、最後だしと思って参加しました。

 

これが終わったらまた最初のページから改めて読み直してみますかね。

 

最後の章はZipperです。

 

Zipperとは、木構造がパターンマッチより美しく特定の要素を探すことができる機能……ですかね。

 

まぁ、よくわからなかったんですけどね。

 

復習が必要ですね。

この本の次に読むhaskellの本は何がいいですかねー。

って質問が飛んでたのですが、

 

www.amazon.co.jp

これとか、

www.amazon.co.jp

これとか、

www.amazon.co.jp

これあたりがいいらしいです。

下2冊は古いらしいので注意です。

 

 

1年くらい前から本を読んでいますが、haskell難しいです。

前半は割と楽しくやってたんですが、中盤からもうよく分からない。

 

ちゃんと復習して、haskell書けるようになりたいです。

 

そんなこんなで、割と面白かったです。

 

 

 

【Ruby on Rails】Cloud9でMySQLを使っちゃう

毎日更新の目標は早速達成できず。

お酒を飲んで帰るとPC見るのつらいんですよー。

 

さて、Cloud9でRailsテンプレートを作成すると最初はSQLiteを使うようになっていると思いますが、MySQLが使えるようなので、MySQLに変えちゃいます。

 

Gemfileを編集します。

 

 

# Use sqlite3 as the database for Active Record
#gem 'sqlite3'
gem 'mysql2', '~> 0.3.20'

 

最初は赤文字の行が記載されていると思いますので、ここを削除またはコメントアウトして、gem 'mysql2', '~> 0.3.20'を追加します。

※2015/12/6現在最新のgemを入れるとmodelが作成できないようです。。。ご注意です。

 

したらば、コンソールでプロジェクトのルートへ行き、

bundle install

 

と打ってみましょう。

 

bundle install はGemfile内で指定された依存性のインストールをしてくれます。

 

使いたいgemをGemfileに書くといい感じにインストールしてくれるってことですね。

バージョンを指定しなければ最新のが入ります。

 

 

databaseに接続する為には、config/database.ymlを編集する必要があります。

 

development:
    adapter: mysql2
    encoding: utf8
    database: c9
    username: <%=ENV['C9_USER']%>
    host: <%=ENV['IP']%>

 

今回はCloud9が用意してくれているDBを使います。

ローカルで動かしているなら、自分で作ったDB名とユーザー名いれて、hostにはlocalhostって入れれば接続できます。

win7だともしかしたらlocalhostでは繋がらない可能性もありますよね。

その場合は127.0.0.1でいけると思います。

 

 

したらば、とりあえずmysqlを起動しておきましょう。

 

mysql-ctl start

 

 

さて、DBも繋がったことですし、早速modelを作成しましょう。

 

コンソールで

 

rails generate model UserBase

 

を入力します。

 UserBaseは私がこれから使いたいテーブル名ですので、お好きな名前を入れてください。

 

すると、

db/migrate/20151205133900_create_user_bases.rb

app/model/にuser_base.rb

test/models/user_base_test.rb

test/fixtures/user_bases.yml

みたなファイルが追加されます。

 

次に、テーブルのカラムを決めます。

さっき作ったdb/migrate/20151205133900_create_user_bases.rbを編集します。

 

class CreateUserBases < ActiveRecord::Migration
    def change
        create_table :user_bases do |t|

            t.string :name, :null => true
            t.string :name_kana, :null => true
            t.string :mail, :null => true
            t.integer :authority, :null => true
            t.date :last_login, :null => true
            t.timestamps null: false

         end
    end
end

 

こんな感じで書きます。

 

んで、

 

rake db:migrate

 

ってするとテーブルとカラムが作成されます。

 

mysql> show tables from c9;
+-------------------+
| Tables_in_c9 |
+-------------------+
| schema_migrations |
| user_bases |
+-------------------+
2 rows in set (0.00 sec)

 

 

mysql> desc user_bases;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| name_kana | varchar(255) | YES | | NULL | |
| mail | varchar(255) | YES | | NULL | |
| authority | int(11) | YES | | NULL | |
| last_login | date | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+

 

次回は、実際にrailsからDBの書き込みと読み出しをします。