misocaが弥生の子会社になった
さかのぼること3年ほど前、弊社はmisocaで請求を出していました。 misocaはRailsでできていて、中の人とも面識があるので、 いろいろと応援していたところがあったのですが、 消費税の対応が遅かったのと、当時は有料プランがコロコロ変わって 結果的に高いなということが重なって、業を煮やして 社内で請求管理しシステムを作り上げてしまったのでした。
ベンチャーキャピタルから出資を受けて、 ひたすら出口へ向けて邁進するというベンチャーそのものだったので、 出口まで到達したのはすばらしいことだと思いました。
弥生はこれからのクラウドに時代にfreeeやマネーフォワードに 顧客が流出するのを抑えておくためにmisocaを囲っておきたかったのかなと思います。
会社はどの形態を目指すのかを考えて経営方針を決めていかなければなりません。
- ライフスタイルカンパニー
- プロフェッショナルファーム
- ベンチャー
http://www.pref.fukushima.lg.jp/uploaded/attachment/34133.pdf
この中でライフスタイルカンパニーからプロフェッショナルファームへの移行を目指していくのが 一般的な会社なのですが、ベンチャーだけは異質です。 ひたすら上場もしくはどこかに買収されるために 走り続けていく必要があります。
弊社はベンチャーは目指さないことにしたので、このままの経営で行きます。 なので出口戦略はありません。ただ、こういう買収の話を聞くたびに、 自分の経営方針を振り返ってこれでいいのかを確認するために思い出すのでした。
- うちはベンチャーではない。
参考までに、うちで自社開発している請求管理システムです。 売れるんじゃないかと言われますが、misocaとかマネーフォワードに喧嘩を売るのは面倒なのでやりません。
アーロンチェアーが壊れたので修理に出します
長い間使っていた中古のアーロンチェアーですが、 酷使しているためか、ついにガス抜けしてしまいました。 修理できるのか見ると、ハーマンミラーがちゃんとオーバーホールしてくれます。
http://storesystem.hermanmiller.co.jp/fs/hmjapan/AVMINFAEOVERHAULstoresystem.hermanmiller.co.jp
ああ、新品みたいになるんだったらやってもらおうと思って、 申し込みました。送料が高いのですが、 新品買うよりも、動作する中古を探すよりも安いです。
これって、一部が壊れたアーロンチェアーを安く買って、 オーバーホールするのが勝ち組なんじゃないかと思いました。
社内勉強会を開催しました
ラビックスは土曜出勤をはじめました
以前は仙台でRails勉強会を開催していたのですが、 Rails勉強会をやってもなかなか続けるのは難しいと思っていました。 理由としては、Railsを休みの日に勉強したい人なんて うちの会社と同士数名しかいないんじゃないかと思ったのが大きな理由です。
うちは震災後に福島から仙台に移転して、福島に再移転してきました。 福島でも勉強会を開催したいと思ってはいたのですが、なかなか人を集まるかどうかわからず、 一人でやっても勉強会にならないと思ってはいました。
また、私は積極的に勉強会に参加していたのですが、自分だけスキルアップしても 属人的なスキルが身につくだけで、それって会社全体のためになっているのか微妙だなと思っていました。 将来私がいなくなってしまったら速攻で終わってしまうような会社だったら、 そもそも存在が迷惑だからないほうがいいと思います。 やはり、私がいなくなった程度で傾かない会社にしていきたいと思っていました。
さて、そのためには、会社を回していく、ワンランク上のスキルをみんなで取得していく必要があります。 会社の業務は直近の実務をこなすのは当然大切ですが、将来的なものに投資するのもとても大切です。
緊急度大 | 緊急度小 | |
---|---|---|
重要度大 | 今すぐにやらなければならないことい | そのうち必ずやらなければならないこと |
重要度小 | 減らしていかなければならない | やってはいけない |
タスクには上の表のように緊急度は低いけど、重要度は高いタスクがあります。将来的な投資です。 この、緊急度は低いけど、重要度が高いタスクをどれだけこなしていくかで、その人や会社の将来が決まります。
社内でも直近の業務から離れて、将来的な投資を行うような時間をつくりたいと思って、 土曜出勤を月に1度設けることにしました。その時に必ず一人1回のプレゼン発表をさせ、 最近勉強したことなどを発表してもらうことにしました。また、プレゼン資料を作ったり、 発表をする機会を作るのは本人のスキルアップにも大いに役に立ちます。
勤務の中で行うので強制です。
スタッフには自己投資をしなければならないという話をそうはいうものの、 なかなか休みを潰して勉強会に参加したり、セミナーに参加するというのはやりづらいものです。
ですので、スタッフに了解を得たうえで、土曜出勤を設けて、勉強会の日にしたのでした。
勉強会の内容
午前中は、全員が何かそれぞれテーマを決めて、発表します。 仕事に関する何かです。業務をこなしている限りは 何かは発表するネタがあると思うので、やってもらいます。全員に役に立つ内容とかって思うと 非常にやるづらくなるので、一部のスタッフに聞いてもらえればOKの内容でやります。
持ち時間は20分です。質疑応答が10分です。 5名なので、9時に出勤し、10時からスタートして、12時半に全員の発表は終わりました。
発表内容は
- Railsでのbootstrapの使い方
- 学術集会システムについて説明します(うちの業務を新人に教えるためのテーマです)
- 広報活動についての実践内容と報告
- 基礎Ruby on Railsをひと通りやってみて
- Railsアプリを時間内で作ってみます
こんな感じです。
午後の部
お昼はみんなで蕎麦を食べに行き、午後からはうちの新人向けにペアプロのような形式で 簡単なアプリを作るところを実践しました。
Railsの研修会のようなかたちです。何をやろうか、みんなそれぞれ勉強したいことを考えて頂戴。 新人2人に対しては、Railsの研修をやろうと話していたのですが、全員参加になってしまいました。^^
午後は講師役なので、ものすごく疲れました。でも、ものすごく楽しかった。 その後は用事があった一人を除いて、飲みに行きました。
参考までに、スタッフの感想をひとりずつ載せてみます。
- 午後のはよかった。共通のテーマで勉強できたことがよかった。
- 他のスタッフの発表を聞いて、わかっていたつもりだったけど、わかっていなかったものが結構出てきて、勉強になった。
- 発表したことで、自分がわかっていなかったものを他のスタッフに理解してもらえて、教えてもらうことができたのがよかった。
- 自分の復習にもなって、勉強にもなりました。
最後に
こんな感じで勉強会をやることにしました。将来は社外に開放して、誰でも参加できる勉強会にしたいねという話をしています。 まだ開放するかは決定してないですが、参加してみたい人は私に何らかの形で声を届けて下さい。@xibbar まで。 もしくは、facebookやブログのコメントなどで。
次の勉強会は2/20にすることにしました。9時から17時まで、丸一日つかってやります。
私はとてもよい勉強会になったと思いました。次回以降もしっかり続けていきたいと思っています。
vimで複数行のインデントを削除して1行にまとめる(改行を削除)
<ul> <li> ほげ </li> <li> ふが </li> </ul>
これをほげの上下含めて3行を選択して、次のように1行にまとめたいわけです。
<ul> <li>ほげ</li> <li> ふが </li> </ul>
この場合、
:vmap 0 <Up>:s/\n *//<CR>:noh<CR>
しておくと、3行を選択して、0を押すとインデントが削除されて、1行に収まります。 .vimrcに書いておくと便利だ。
今年を振り返る7大ニュース
目が悪くなった
私は目はパソコンをさんざん見てきた割にはずっと視力2.0できたのですが、ここ数年で一気に悪くなってしまいました。見えそうで見えない。そもそも疲れやすい目で、あーもう疲れたって感じで目を酷使できない感じだったのです。それで、疲れ目がもう全然取れない感覚で、目の焦点が合わない感じになってしまい、これはマジでおかしいと。
それで眼科に行きました。結果が、乱視。近視も遠視もなく、乱視のみ。小さい文字を見るのが辛いので、メガネをつけて仕事をすることにしました。読書力も完全に落ちてしまい、これでは自分の人生に大きなマイナスだと思います。年が開けたらレーシックしに品川近視クリニックに行こうと思います。
車を乗り換えた
車を乗り換えました。もともと、ギャランのVR4を乗っていた頃はさんざんサーキットに行っていたのですが、ギャランを手放してからはそういうのはやめていました。ギャランはターボでかなりパワーをあげていました。乗り心地もちょっと足回りが硬かったので、家族カーとしては使えない車でした。
今回、春に一度MPVを買って、それが古い車だったので家族にはかなり不評でした。車検がもともと半年しかなかったので、もう一度、同じ車の新しい型に乗り換えることにして、10年乗るつもりで自分の好きなスペックを選びました。それが、MPVの23Tです。もう、久しぶりのターボで、パワーにも足回りのしっかりさにも大満足です。パワーいいね。どっかんなのでじゃじゃ馬感がありますが、私はやっぱり好きです。
ジムでレッスンを受けるようになった
もともと健康維持のためにセントラルウェルネスクラブの法人会員なのですが、レッスンは全然受けたことがありませんでした。 ちょっと前から自主筋トレをはじめていて、ちょっとずつ筋肉がついてきていたので、 3月から筋トレのレッスンを受けるようになりました。これが結構楽しくてはまっています。 レッスン名はシェイプパンプです。バーベル使って体を鍛えています。
痩せた
ラーメンを食い歩いているうちについに一瞬ではあるものの、6月に体重が100キロを超えてしまい、これはマジでやばいと思いました。
7月から低糖質ダイエットを開始しました。今は体重は91kgまで減りました。低糖質の食事のために、いろいろなメニューを発明した気がします。適当に写真は撮っているので、要望があれば晒します。
また、飲み会などでビフォーアフターの写真を人に見せてはライザップみたいだと言われています。こちらも要望があれば晒します。
じいちゃん亡くなった
口うるさいじいちゃんでしたが、1月に亡くなりました。
会社が再び大赤字に
ちょっと失注の大きい物を2つ重ねてしまい、またもや過去最大の赤字を出す予定です。 キャッシュ的にはまだ死なないのですが、スタッフと一丸となってなんとかします。
不動産の方はそれなりに安定
ラビックスとは別に経営している不動産賃貸業は順調に推移していて、今期はラビックスと売上が逆転です。
講評
相変わらず浮き沈みしながらやっているなぁ。来年はまたがんばります。
さくらのクラウドに立ち上げたサーバをスクリプトでDNSに登録する
少し前にさくらのクラウドにDNSができました。 これは何がいいかというとAPIがあることです。 早速、さくらのクラウドからサーバとIPアドレスを引っ張ってきて、 クラウドDNSに登録するというスクリプトを組んでみました。
まず、準備
- 設定からAPIキー行ってAPIキーを登録しておきます。
- そのキーを環境変数TOKENとSECRETに登録しておきます。
- クラウドサーバあるゾーンを環境変数ZONEに登録しておきます。(石狩1だとis1aです)
- クラウドDNSにゾーンを登録し、リソースIDを環境変数DNSIDに登録してきます。
- ネームサーバはゾーンを登録した時に決定されるので、 変更しておいてください。
前提
- クラウドサーバはdb.example.comのような名前と、Ether0と1にそれぞれIPアドレスをクラウドコンソール上から設定します。
- グローバルIPはdb.example.comのように登録されます。
- ローカルIPはdb.lan.example.comのように登録されます。
require 'saklient/cloud/api' require 'pp' TOKEN = ENV['TOKEN'] SECRET = ENV['SECRET'] ZONE = ENV['ZONE'] DNSID = ENV['DNSID'] URLBase = "example.com" URLPrefixGlobal = "" URLPrefixLocal = "lan" # クラウドDNSに別枠で追加しておきたいレコード AdditionalRecordA = { "db.mn": "192.168.1.1", "db.ln": "10.0.0.1", "www": "192.168.1.2", "@": "192.168.1.3" } api = Saklient::Cloud::API.authorize(TOKEN, SECRET, ZONE) dns = api.common_service_item.get_by_id(DNSID) new_record = [] # クラウドに登録されているレコード一覧(使っていない) cloud_record = dns.raw_settings[:DNS][:ResourceRecordSets] # クラウドのサーバ一覧からレコードを取り出す cloud_servers = api.server.find cloud_servers.each do |server| name=server.name.sub(URLBase,'').sub(/\.$/,'') server.ifaces.each do |iface| if iface.ip_address new_record << {Name: "#{name}.#{URLPrefixGlobal}".gsub(/\.\./, '.').sub(/\.$/, ''), RData: iface.ip_address, Type: "A"} elsif iface.user_ip_address new_record << {Name: "#{name}.#{URLPrefixLocal}".gsub(/\.\./, '.').sub(/\.$/, ''), RData: iface.user_ip_address, Type: "A"} end end end AdditionalRecordA.each do |key, val| if key==:'@' new_record << {Name: key, RData: val, Type: "A"} else new_record << {Name: "#{key}", RData: val, Type: "A"} end end pp new_record dns.raw_settings[:DNS][:ResourceRecordSets] = new_record dns.save # これをやらないと保存されない