Ich habe hunger

あふりかエンジニア、アフリカ向けのB2BのSaaSを開発する

「社長と経営者は違う。その差はなにか」

diamond.jp

社長ではなく経営者にならなければ株主や従業員、あまたのステークホルダーへの責任を果たせない。

 その弱い会社の経営者の最大の任務は、「見切り」だ。見切りこそが、結果責任だけの社長を経営者に変えると言ってもよいほどだ。

 だから基本的には出たとこ勝負だ。それを猛烈なスピードで繰り返す。そしてダメだと思ったら即座に見切る。それを促す覚悟に満ちた経営者の力こそが、小さな企業が大きな企業に負けない力だ。

自分の認知の範囲での情報に基づいた結論付けをするのが判断だと思っているけど、ここで出てくる「見切り」というのは自分の認知外も含めたものに対して覚悟を決めた上で行う決断なんだと思う。

決断というのは、どうしても論理的に正しくなかったり、先が見えづらいものであるけども、自身の責任においてその選択を実行するというのが決断。この決断は失敗することもあるけど、その失敗した時に何が失敗したのか兆しは見えていなかったのか、など集中し振り返ることを繰り返すことで研ぎ澄まされてある種の超能力のように見える第六感のようなものが身に付くのだと思う。超能力欲しい。

rubyで初心者が間違いそうな間違いしてしまった(まぁ、初心者みたいなもんだけど)

あるあるなのかもしれないけどやってしまった。

RailsでUserモデルがあって、そこにenumでrolesみたいなのを定義している。
しかし、roles内にあるadmin権限は我々スーパー管理者しか触れないようにしたい。
なので、一般ユーザーには目に触れもしないようにしたいため、こうしていた。

    %tr
      - User.roles.delete(:admin)
      %th= f.label :role, "Role"
      %td= f.select :role, User.roles.map{|r| [r[0], r[0]]}

が、しかしこれをするとUserモデルのrolesから:adminから消し去ってしまって、二度と出て来ない。
つまり、スーパー管理者の編集画面ですら:adminの設定が見えなくなってしまって、admin権限を持つユーザーを作成することができなくなってしまった。


さすがにこれはまずい、と以下のように修正した。

    %tr
      - roles = User.roles
      - roles.delete(:admin)
      %th= f.label :role, "Role"
      %td= f.select :role, roles.map{|r| [r[0], r[0]]}


が、問題は解決されない。
で、なんだろうと思ったがこれにも問題があった。

User.roles.object_id
roles.object_id


と調べてみると同じobject_idを保有している。ので、deleteをrolesにかけたところでUser.rolesから:adminが消え去る現象は改善されない。
つまり同じオブジェクトに操作していることになっているので、cloneする必要があるので以下のようにした。

    %tr
      - roles = User.roles.dup
      - roles.delete(:admin)
      %th= f.label :role, "Role"
      %td= f.select :role, roles.map{|r| [r[0], r[0]]}


が、実はこれにも問題(以下略

結論から言うと、今回はこれでOKなんだけども、

User.roles[:admin].object_id
roles[:admin].object_id

は同じなので、実はまだヤバい。
rolesの中から(インデックスとして)消し去るだけなら良いんだけど、:adminの持つ値を自体を変えるとUser.rolesの中の:adminの値まで変わってしまうことになるっぽい。

    %tr
      - roles = Marshal.load(Marshal.dump(User.roles))
      - roles.delete(:admin)
      %th= f.label :role, "Role"
      %td= f.select :role, roles.map{|r| [r[0], r[0]]}

じゃあ、どうすんだよ!って話なんだけど、こうすると良いっぽい。


参考はこちら

qiita.com

SMSデータテックに遊びに行ってきました₍₍⁽⁽(ી(*゚▽゚*)ʃ)₎₎⁾⁾

株式会社SMSデータテック | SMS Data Tech Corporation.

友人の職場訪問って面白いですねw

開発室の一つを見せてもらったのですが、5人ぐらいの部屋できちんと区切られていて静かだしめちゃめちゃ仕事しやすそうでした!ああいうのうちの会社にも欲しーーーと思ったけど、ウガンダだし、東京に居るメンバーはリモートなのでそもそも不必要でした(´・_・`)

Pepperのブログも書いてるし、社内にPepperが居るのは知ってたんだけども、見せてもらった開発の部屋に2体も居るとは思いませんでしたw

dev-pepper.blogspot.jp



まともにPepperで遊ぶの初めてだったんですが、とりあえず年齢を測ってもらいました!

f:id:sugi511:20160209170755j:plain


見た目30歳超えてる僕としては最高の結果が出ました₍⁽⁽(ી(*´ω`*)ʃ)₎₎⁾⁾

ウガンダな環境(@日本)で働きたいエンジニア募集中です!(フルタイムじゃなくても良いよ!)

友人に「エンジニア足りないんだよねー」という話をしたら「昔みたいにアフリカの事業のブログ記事を書けば?」とのアドバイスを頂きました。しゅんすけありがとう。





もう忘れ去っていたんだけども、むかーし、むかしにこんな記事を書きました。
これはもう2社も前の話なんですが、この記事のおかげさまで2人から応募が来まして2人とも採用しました。本当にありがとうございます。

sugi511.hatenablog.com

最近の話と今やってること

2015年6月からフリーランスをやっています(一応継続中)。成長中ベンチャー企業のバックオフィスとかにエンジニアとかで入り込んで、業務フローの改善提案とかそれに伴う社内システムの改修・開発なんてところをやっていて、人の工数を激減できるところが面白くて、その辺を業務委託でやったりしています。

その一方で、7月から株式会社アフリカインキュベーター(以下Afri-inc)という会社にジョインしました。当時は、まだ登記もされてなかったんですが、学生時代の先輩から代表を紹介され、あれよあれよと開発メンバーとしてジョインして、今はCTOという肩書きで開発をしています(特に開発には変わりない)。書いてて、なんだかんだでもう半年近くになるのかぁ、と思うとしんみりします。




Afri-incは何をしているのか

タイトル、上述の通り、まずアフリカのウガンダ(アフリカの東の方)で事業をしています。現在は、東アフリカの流通市場で、現地メーカー・卸 ⇄ 小売店の間で使用されるB2Bのアプリを開発しています。ざっくり言うと、自社(現地メーカー)のプロダクトと顧客をWebとかAndroidで登録しておいて、営業先で売ったものもAndroidで登録し、その場で領収書をプリントアウトしたり、在庫管理できたりするツールです。Webは管理者向け、Androidは営業向けという風に分けてますがこんな感じです。

今まで全くなかった、ということはないんですが、それでも紙で配ったり、手書きだったり、記録がアナログだったりというものをデジタルにすることで、もっともっと便利にしていこうぜ!ということです。

しかも、流通周りって人の暮らしに直結していて、めちゃ面白いんですよね。都市部での配送がより効率化されて、同じ人員の数でも、都市部から遠いところへの配送ペースが1ヶ月に1回だったのが3週間に1回になって、品切れ状態が軽減されたりするとすごくないですか?しかも、同じ人数で多分売上も上がってるんですよね。じゃあ、もしかしてもしかすると、きちんと物が届く状態を整えることと売上が伸びて、人が足らなくなって、さらに雇用を生み出すことになるとかになると、それを引き起こす基盤となっているのが僕らの開発しているツールですってカッコ良すぎでしょ。(と、僕は思っていつもワクワクしてます。)


開発って何するの?

まず、安心してください。日本で働いてますよ。
これ、よく聞かれるんですが「今って一時帰国中なんですか?」ってやつ。今のところ開発メンバーは全員日本に居ます。
ちなみに、ウガンダで開発したいんだけど・・・みたいなのは全然OKというか大歓迎な感じです。マジ、現場の声をズレなく聞きたい。




で、開発って何するのか?ってとこなんですが、上述のツールの開発がメインです。というか、今はそれが全てです。
具体的には、Web側(APIサーバー含む)はRuby on Railsでゴリゴリしてて、Androidは営業さん向けにゴリゴリ作ってます。

■Afri-incで用いている言語・ツール
Ruby on Rails 4.2, Android Studio, Git, GitHub, Slack, Heroku, Deploygate

Ruby on Railsで作っているWeb側は、顧客情報や製品情報の管理と取引情報の管理などで、ほとんどがAndroidアプリを通じて登録されるものなので、本当に管理画面を作っている感じです。難しい技術が必要というよりかは、それを誰がどのタイミングでどういう意図で見るのか、っていうことに基づいてよくある管理画面を作ったり、そのデータを元にヴィジュアル化したグラフなどを提供するようになっています。

Androidアプリでは、Webで登録された情報を元に、お客さんのところで行った営業活動の登録(主に取引)や自分の業績を閲覧できたりと、こちらも(機能としては)シンプルになっています。とはいえ、まだまだスマホの普及率も高くない中、どういう風に見せたり遷移すると初見でも使いやすいか、などは考えることがたくさんありますし、実際の現場からの声からも必要部分はともかく、十分にはまだまだ届いていないな、という感じです。



開発の現状

今のところ、ウガンダでどんどん営業をかけていて、使ってくれてるお客さんからのフィードバックを元に機能改善をしまくっているのですが、手が足らないので本当に誰か手伝ってー状態です(´・_・`)というのも、開発メンバーが現状4人でフルタイム(週5)というコミットが出来ないのでなかなかやりたいことまで手が回らない、というところです。

結構早いスパンでリリースを繰り返していて、その度に解決する問題と、新たに出て来る要望(つまりは期待)などを早く早く収束させれるように、今どんどんと機能改善をしています。ちなみに、Web側もアプリ側も足りてませんので「あれ?週2ぐらいでもいいなら興味あるかも」みたいに思った方は僕まで連絡ください。マジ嬉しす。



開発体制というか、今はオフィスに集まって開発〜とかではなく、みんなリモートで仕事してます。
Google Spreadsheetで現地で出た要望等を取りまとめて、開発が必要ならgithub issueに登録、pull request出してマージ、というよくある感じになっています。コミュニケーションはSlackでとっていて、SkypeMTGをしたりしています(たまにウガンダ側にノイズ乗り過ぎて何言ってるか聞こえないときある)。


会社のメンバーとかとか


現在居る主要メンバーは、なかなかピカピカのレールあったのに突然外れたアウトローみたいな人が多い感じがしてカオス感あっていいです。代表とか、ウガンダでドラム缶風呂とかしてるしマジ謎。僕を誘ってくれた先輩は昔は味噌売ってたし、アフリカで米育ててたのはFBで見た。アフリカでも味噌作ってるのかな?ちなみに開発チーム以外は基本ウガンダに居ます。開発メンバーは偶然にも全員が日本ですが、別にどこでもいいです。アメリカでも、イタリアでも、ナイジェリアでも、グリーンランドでもグンマーでも。


これはWantedlyで募集してた当時の話はこちらです。
www.wantedly.com

早く予防接種受けないといけないんですが、僕も今年前半には初ウガンダ行ってきます。アフリカとか行ったことねーし、まじ想像つかねーーってところから、ちゃんと実感値を一段階アップさせます(笑)(実はまだウガンダ行ったことないんです・・・早く行けよって話ですよね、マジで。)

ここからはちゃんとした話


タイトルの通りなんですが、一緒に働いてくれるエンジニア、募集してます。Web側もアプリ側もどちらも足りてないし、パートタイム(週末とか終業後とか)での受け入れももちろんありなので、興味があればご連絡いただけると嬉しいです。
開発の話のところに書いた通り、開発内容としては割と普通というか技術的チャレンジというのは、DMPとかブロックチェーンとかAIだとかっていうのは未だ出て来てないしまだ見えないので、スーパーマッチョマンが欲しいっていうよりかは、普通に普通の開発が出来る人が良いのかもしれないです(あまりに好奇心旺盛だとそういう点では物足りないかも)。
とはいえ、お恥ずかしい話ですが僕はまだまだ技術力や経験が足りないばかりに、うまくいかないこと、苦労をおかけすることはたくさんあると思うんですが、「ちょっとぐらい手伝っても良いかな?」とか「こういう事できるけど、役立つ?」とか「仕方ねーなー、オレがサーバーサイドちょっと手伝ってやるよ」とか思っていただけたなら、働くかどうかはともかくとして、TwitterアカウントにDMでも飛ばしてもらえるとおうちで小躍りします₍⁽⁽(ી(*´ω`*)ʃ)₎₎⁾⁾

twitterhttps://twitter.com/sugi511



正直、僕はこの時期にアフリカというかこの事業に関われていることは幸運だと思っていて、なおかつインターネッツが大好きなので、僕が作るもの、やってることを通してアフリカの人(というと主語がでかいけど)が僕らとは違うフェーズのインターネットを通じてどうなっていくのか興味津々で溜まらないです。



まだまだ会社としても小さいしスタートしたばかりです。この後、100%の確率で大変なことが待ち受けてるのは分かっては居るんだけども、それでもなお「止められないな」とも思うし、「止まってはいけない」とも思うし、「止めてもいけない」とも思ったりします。大変だけど、面白い。人にオススメできるチームや事業ドメインだと思うので、ぜひ一緒にお仕事しませんか?というか、お手伝いでも大歓迎ですのでぜひご連絡をお待ちしております(っ・ω・)っ


よろしくお願いします!!!!

国際交流とかいうテーマで今度話すことになったので

色々整理してみたいと思う。

国際交流とか海外経験

国際交流とか海外に触れて変わったこと

  • いろいろと寛容になれた
  • 同じ○○人の中でもみんな違う
  • 定時出社定時帰りが当たり前
  • 当たり前の基準が違いすぎ & 慣れ過ぎて、日本で違和感バリバリ
  • 当たり前を疑うフックが自分の中にできた
  • 海外に対するハードルはかなり低くなった
  • 選択肢に海外が含まれるようになった
  • 日本のことを知らないことを知った
  • 自国や都市のことを語れる人が多い
  • 発言しないと仕事回って来ない

エピソードのフックとか

  • フィリピン人の「次はどこの国で働こうかなー」発言
  • フランス人との言葉通じないけど楽しかった日々
  • ドイツ人の働き方
  • ドイツ人大学生の「もっと勉強したいから5年生もやるよ」発言
  • 日曜日はお店があいてないドイツ
  • 花粉症に怯えてシンガポールに移住
  • ウガンダ事業の話
  • 外国人は都市の人口聞いてくる

ツールを学ばない人たち

自分のことでもあるんですけど、最近気をつけないとな、ともったいないよな、と思ってることがあります。

最近は、業務委託でウロウロしているおかげで業務でExcel使う人とお話をすることが多くなってます。そこでいつも思うのが、「みんなExcelのこと知らなさすぎ」。

「え?それ、countifで出来ますよ」
「Vlookupで参照すればレポートとかほぼ1分で出来ますよ」
「その集計、ピボットを使えれば良いんじゃないんですか?」
「一番下にいくにはCtrl+↓で良いですよ」
「貼付ける時に特殊貼付けにして、縦横入れ替えればいいんじゃないんですか?」

と色々ありすぎて書ききれないんだけども、こういう事多すぎ。
それでいて忙しいとか時間がないってそりゃ忙しいでしょwwとなってしまう。

よく文字打つ業務なのに、圧倒的にタイピングが遅すぎてヤバい、というのも一緒。寿司打でもやってろってなるよね。

Flashタイピング 【寿司打 - SushiDA -】


多くの時間を要する作業は、だいたい同じようなことで困ってる人が居るので、どうやってその時間を減らせば良いかを考えれば良いし、多分ほとんどの人はまずツールの使い方を勉強するところから始まるような気がする。

新しいことを始める時には、まずそのために用意されてるツールがどういうことが出来るのかを頭に入れてから取り組もう。そして、必要があれば学んでいかないと時間は無限になくなっちゃう。

「新入社員のゆとり」に対して文句言う人

f:id:sugi511:20151009095234j:plain

4月頃になると、ゆとり限らないんだけど「新入社員」がどうのこうのという話は出てくる。常識がないだの、マインドが云々とか。最近だとFaxの送り方すら学生は知らねーぜ、みたいな話とか出てきた。

www.nikkei.com

だいたい毎年思うんだけども、小さい会社ならいざ知らず、大企業様ともあろうところからも「最近の新入社員は使えない」みたいな話がどっかの誰かが取材して記事になったりする。記事内容としては、昔から連綿と続く「若者sage」の内容でありそれ自体は良いのかもしれない。

しかし、僕がそれを毎年見て思うのでは、『「最近の新入社員は使えない」みたいな話になるけど、その新入社員を採ってるのは御社の人事ですからね!?』ということ。よくよく考えればそうで、自社の社員は自社の人事部とさらには上の役員の方々等の試験をパスしているはず。それをディスるというのは、遠回しに「うちの人事ってイケてる人材採ってねーんだよなー」って言ってるも同じなのでは、と。多分だけどそういう意図はないとは思うんだけどね。

まぁ、僕は残念ながらそんな大層な会社には勤めたことはないので、そういった方々の気持ちや環境というのは正確には計り知れないとは思うんだけども、そういう記事とかを見ると「あー、あそこの会社は採用条件がうまいこと擦り合せれてない会社なんだな」と思ってしまうので、そういう風に思われることもあり得る、という話でした。知らんけど。