ヨーロッパで働くIT土方社長のブログ

クロアチアのザグレブって所で受託会社やってます。Webサイトはこちら https://clover.studio/

PHP製の軽量CMSの紹介

現在会社のマーケティング改革を行っていまして、会社のWebサイトを作り直したり、製品の個別サイトとかもリニューアルしています。 で、なんかチョイ前まではWordpressでいいじゃんって風潮だったと思うのですが(今もかな)、前回Webサイトをリニューアルした時に 自称Wordpress知ってるマンを雇って、のちのちはデジタルマーケティングをやってもらおうと思っていたのですが、ものすごい時間がかかった挙句に ありえないHTMLを吐き出していて、デザインもよく見るとマージンとパディングが所々バラバラでそれはもう酷い物でした。

で、結局僕が自分でHTMLを書き出してブログ部分だけ適当なテンプレートを入れたWordpressを使ってサクッと終わらせました。

何が悪かったのかその酷いWordpressのテンプレートとかを見てみたのですが、VisualEditor的なプラグインが入っていて、WYSIWYG方式でやっていました。 それで、要素ごとにStyleパラメーターでマージンやらパディングやらを設定していました。。

Wordpressが悪いわけじゃないけど、全体的にそういう使われ方をしているのがなんかWeb標準(古っっw)時代のWebサイトの制作に合わない気がして、なんかいい感じのCMSが無いかなーと思って探して下記の2つを実際に使ってみました。

getgrav.org

picocms.org

どちらも主な機能的にはこんな感じです。

  • データベースを使わないで、ファイルとフォルダの構造でコンテンツを作っていく

  • Markdown形式でかける

  • テンプレートはTwigフォーマットが使える

どちらも素晴らしいのが、DBを使わないのでGitでコンテンツも管理できるところですね。 Gravの方が所謂CMSっぽくて機能は豊富です。管理画面とか簡易アクセス解析も入っていたりしますが、僕のおすすめはPicoですね。 なんか3日くらいで自分でも作っても良いんじゃないかってレベルの薄さなのですが、それが逆によくて、シンプルなサイトだったらこれでいい気がします。 ブログとか入ってくると厳しいので、その場合はGravで良いと思います。

なんか流れ的にはWordpressみたいにリッチなものよりもこういうシンプルなものが主流になってくる気がします。 新しくWebサイトを作るときに参考にして見てください。

ReactNativeがAndroidTVアプリをサポート

なんとなく0.55のリリースノートを見ていたら。

Building For Apple TV · React Native

Android TV device support

ってしれっと書いてあるじゃないですか。AndroidTVアプリって動画関連の自社サービスでもやっていない限りそこまで本腰を入れて開発する物でも無いと思うので、ReactNativeでサクッと簡単にかけるとなると色々アイデアがありそうな気がします。オフィスにある無駄にスペックが高いのに使っていないテレビ用になにか表示したりとか。。

やってみたいなー

グローバルでみるエンジニア単価

とりあえずモチベーションが高いうちに書いておこうと思います。 前の記事は1000ブクマとか行って、お陰で仕事も手がつかないし、夜も眠れませんでした。。。 今日はガッと書いて仕事するまじ

エンジニア単価について書くとか言ったんだけど、考えれば考えるほど意味が無いと思ったんですよね、 同じ地域でも業種職種によっても変わってくるし、スキルによっても変わってくるので。 だから、ググってまとめようと思ったんだけど、それじゃ誰でも書けるし、自分が書く意味が無い気もするし。。 ということで自分の観測範囲で書くのが一番おもしろいし、有益かなと思ったんで、自分の観測範囲の話という前提でお願いします。

前提
  • BtoBの場合 (会社が会社またはフリーランスに発注する時の価格)
  • toC寄りのサービス
  • アプリ開発
  • フロントエンド ( SPA全般 )
  • バックエンド ( NodeJSとかRubyとかPHPとか ) と言う感じですかね、まぁスタートアップ的な感じです。 あとちなみに、単価は $/hで書きます。日本だと人月表現がメジャーなので、x160してください。
$150/h〜
  • 北欧
  • スイス

まぁしょうが無いね的な。。スタッフとスイスに出張に行った時に、金が無いからバーキンでいいよねってお腹いっぱい食べたら5000円位かかって泣きたくなりました。 北欧は税金でごっそり持ってかれるしね。んじゃ北欧から受注すればウハウハと思っては居たのですが、まぁ向こうも値段感知ってるしボッタクれる訳じゃない。 ただ、ヨーロッパ内なんで仕事は非常にやりやすい

$100/h〜$150/h
  • US都市部
  • ドイツ都市部
  • UK都市部

US都市部だけはちょっと自信無いかも、ただアメリカ国内でIT受託やってるところのレートは大体こんな感じだった。 サンフランシスコエリアで $30/h とか言ってたら間違いなくインドに飛ばされる案件ですね。

$80/h 〜 $100/h
  • US平均
  • ドバイ、シンガポール
  • オーストラリア
  • カナダ
  • 西ヨーロッパ都市部

まぁまぁこれはこんな感じでしょうね。特にコメントなし

$50/h 〜 $80/h
  • 日本都市部
  • 西ヨーロッパ平均
  • 中国都市部

東京もこんな感じだよね?? 中国都市部はちょっと自信無し。

$30/h 〜 $50/h
  • 日本地方
  • 東ヨーロッパ全般
  • 中欧(クロアチア)
  • 南米、アフリカ
  • 中国平均

ここらへんがグローバルで見る平均になると思う。 アフリカ南米はこの下だと思われがちだけど、意外とそうでもないんだよね。 ナイジェリア、南アフリカ、メキシコの客が居たけど、クロアチアと同じような給料感でした。 まぁITエンジニアは給料高いからだとは思う。

$20/h 〜 $30/h
  • インド
  • ウクライナ
  • ベトナム

今の時点のオフショア3強だと思う。

てな感じですかね。ほんと自分の観測範囲なんで、違う場合はブクマのコメントでどんどん突っ込んでください。 日本の価格感も自分が居た頃と大分変わってると思うから違うかもね。。

単価ってなんだろう

もうこの業界に20年居るけど、未だに単価って良くわからないよね。インドとかに見積もりお願いするとふつうの感覚だと1人で出来る仕事を3,4人で見積もってくるし、単価が安い = 安いって訳ではないのはみんな知ってることだしねぇ。でもそう言っちゃうとコスト感なんて測りようが無いし、無いよりかはマシ程度ですよね。

まぁここ2,3年は安けりゃいいってマインドセットの発注先はガクンと減ってきた気がするんですよね。値段交渉で「ウクライナは半分の値段ですよ」とか言ってくる人居るけど。多分リモートでエンジニアに発注したりリモートで働く環境が整ってきたから、エンジニア単価も全体的にグローバル価格に収束している気がします。しかも結構早いスピードで。10年後はガラッと状況が変わってる気がする。

日本で海外の仕事をリモートでやるとなると、値段感的には$30/h〜$50/hが現実的な気がしますね。 日本ブランドは未だ健全なので、やってみたい人はぜひチャレンジしてほしいなー

気が向いたら、次回は特に英語も喋れなかった自分がどんなことして海外から仕事を受注するのに成功したかでも書こうと思います。

追記

上記にも書いたけど、BtoB時の値段ですからね。この価格から諸経費を抜いたのがエンジニアの給料でそこから源泉徴収を抜いたのが手取りです。国によって違うけど手取りは1/3から1/2ですね。

日本のエンジニアの質について

www.megamouth.info

 

日本のエンジニアの実力はかなり低いと感じています。

 

これに関してです。ブックマークのコメントだと気持ちが足りなかったので、結構グローバルにIT土方としてやってる自分の考えを書きたくなりました。

 

自分の所謂受託の会社をクロアチアという国で経営していますが、社員は今20人位で、客は主にアメリカ、ヨーロッパー各国で、去年あたりから中東、アフリカの案件も増えてきました。まぁこれだけいろんな国とやり取りしてるってことは、億単位のデカイ案件とかじゃなくて、まぁスタートアップ的な会社とのやり取りが多いです。自分が日本人なので、日本向けの所謂オフショア開発としてスタートしたけど、辛すぎて日本との取引はもう受託はやっていないですね。製品販売は日本でもやっています。

 

で、日本のエンジニアに関して。客が主に中小企業なので客のエンジニアとか入っている別の会社のエンジニアとかとやり取りする機会も結構多いのでなんとなくエンジニアのスキルの高さみたいなのが見えてくるのですが、まぁ最終的に個人個人の問題って言っちゃその通りなので一般化出来ない話なのは前提として、自分の受けた印象として呼んでいただけると幸いです。

 

自分の受けた印象だと

US > 日本  > 西ヨーロッパ  > 東ヨーロッパ 、ベトナム  > 中国、インド >   中東

場外: 南米 、アフリカ

 

って感じがしています。自分もエンジニアなんで一般化出来る話ではないと思いつつも、一緒に仕事をしててやりやすいかとかも考慮するとこんな感じになる気がします。

 

USは特にエンジニアの質は高いのは顕著にわかりますね。60代のおっちゃんCTOでも、フロントはReactで、アプリはReactNativeとかバックエンドはJavaでAWS、とかで一人でガツガツ作れるスキルを持ち合わせている人がうじゃうじゃ居るので、変に工数をごまかしたりしたら一瞬で突っ込まれます。若い人も常に新しい技術をキャッチアップしてて、転職の機会を伺っている感じなので、スキル高いし、ハードワークも日本並みにしている気がします。さらにUSには世界中から仕事を取って来ようと営業されまくっているので、経営者からすると払ってる給料の下手したら10分の1でリモートでエンジニアが見つかる状況なので、エンジニアは結構キツイと思います。年収1千万とか言っても、んじゃ生活費と税金でどれだけ持ってかれるのかとか考えるとね。。

 

西ヨーロッパはアメリカから社畜っぷりを引いた感じですね。ヨーロッパはアメリカ程市場が開いていないのでエンジニアもわりと守られている感じはします。特にイタリア、フランスは英語力が弱いので経営者もリモートで発注するよりかは自国のエンジニアを雇ったほうが安心ってなるとおもいます。まぁでも大学の教育レベルがめちゃくちゃ高いので真面目なエンジニアが多いです。ただ、一日8時間以上は働かないし、休みはしっかり取るので、アメリカと比べると社畜度は相当低いし、納期も比較的に長めになります。

 

日本は何と言ってもエンジニアの責任感の強さが最強だと思います。とくに納期に対する責任感はまじで世界一だと思います。ヨーロッパなんて、炎上 = 8時間集中して仕事するって感じだからね。ヨーロッパのデスマーチは日本のデフォルト位の勢いです。ヨーロッパの奴がハードワークとか言ってたらそれは絶対に信じてはなりません。納期に関してはUSの案件はそもそも納期とかもう無いですね。1週間単位でタスクを決めてイテレーションして、客がそろそろリリースすっか。。って感じでリリースになります。

 

東ヨーロッパは大学教育の高さと、英語力の高さを武器にインドとかの案件を取ってきていますね。特にウクライナ、弊社の架空敵国になっています。

 

ベトナムは特に日本向けの話しか聞きませんが、日本→ベトナム、US→東ヨーロッパみたいな立ち位置な気がします。真面目に仕事する国民性なので、そこが非常にマッチしますね。真面目に仕事するってすごいことですからw

 

中国とインドは老舗オフショアですが、スタートアップみたいな中小企業が発注するにはあっていない気がします。どでかい案件をものすごい人数で回すスキルは高いと思うんですが、エンジニア一人一人のスキルはそんなに高くない気がする。まぁ人数もおおいいのでしょうが無いと思います。失敗した話しか聞かないのも、上手く行っている人はそれが普通だと思っちゃう業界なので。。

 

中東にも色々あるんですが、ドバイ以外の話で。。ドバイは特殊で良いエンジニアがたくさんいます。安全だし。

イランイラクの話を聞く分にはITエンジニアはすぐに別に国に行っちゃうので自国には全く居ない状況らしい。国籍の話ではなく、あくまで場所の話なので最下位になっちゃいました。日本の受託IT社長達は、イランに支社作ればまじで案件取れまくりだと思います。

 

南米、アフリカは1社しかそれぞれサンプルがないので わかりませんね。普通にIT人材は居る感じです。

 

まぁ長々と書きましたが結論

 

日本のエンジニアはグローバルで見てもスキルは高い、責任感も高い

欧米と比較しても日本のITは全然遅れていない

 

以上!仕事が辛いと思っている日本のエンジニアはレアジョブで英語磨いて世界から仕事を取ってきてください。多分今より幸せになれますよ。

 

PS.なんか伸びてるし次は単価についてかきますかね。。興味あるよね多分

 

書いた → 

グローバルでみるエンジニア単価 - 世界の下層から 〜 グローバルIT土方のブログ

日本の受託サービスは世界から受注すべき

海外のとやりとりってってオフショア開発とか安く発注するって意識はみんな高いんだけど、海外から仕事を持ってくるって全然聞かないのよね。


今のクローバースタジオの受注状況は、日本が10%位で後は海外(クロアチアからは0)から受注してるんだけど、海外の客の納期に対する意識は日本と比べると低い。


会社立ち上げて最初にびっくりしたのが、クロアチア人の社員に客とのやりとりを任せてたら、勝手に客に「終わんないっす」って言って納期伸ばしてんのね。


日本のストイックな環境で育った自分はそんな事がカジュアルに出来るのに驚いて、同時に延期した分のコストは会社が負担するって事に気づいた。


夏とか客側担当者が夏休みで一ヶ月居ないとかいつもだし。


と、こんな環境でやってると日本の受託サービスは納期には命をかけても間に合わせるのって実はすげーって事に気づくのよね。普通じゃ無いんすよね。


ってなわけで日本の受託開発のレベルって値段を考慮したとしてもグローバルで競争力あると思う。


受託開発はオワコンみたいな言われ方してけど、海外と取引してますっていうとエンジニアも集めやすいかもしれないし、単価も安さを求めて来る客はそもそもターゲットじゃ無いから地方だったら高めに設定しても客は取れるはず。


英語力は自分の経験上スカイプ英会話で問題なく会話出来るレベルであれば問題なし。そもそも客だってネイティブじゃ無い事がほとんどだしね。


まぁ最初は大変だろうけど、絶対にニーズあるから地方とかで単価を上げたいと思ってるところは是非チャレンジしてほしい。



大企業で働いた経験が無くて生きるのが辛い

働くならベンチャーが最高!的な記事ばかりでうんざりしてるので久しぶりに投稿してみようと思った。


まぁネット上でそういう意見が溢れてるのはステマ記事だからというのもあるんだけどね。。


自分は大学生の時に起業していて、ただベンチャーと言うよりもフリーランスの延長みたいな感じで、同じ大学の学生に仕事を振って激安の受託開発をやっていた。幸い電気通信大学と言う事もあって社会人並みのスキルを持った学生は沢山いて、そもそもオフィスが無かったから全員自宅作業で、みんなちゃんと責任感を持って仕事をしてくれていた。


そんな感じで2年くらい学生兼エンジニア兼エセ経営者みたいな感じで過ごして、就職先はかなり選択肢はあった。


もちろん当時はイケイケだったので就職なんぞ眼中に無くさらなるチャレンジを目指して卒業後クロアチアに引っ越した。クロアチアに行った理由は特になし、自分がクロアチアと日本のハーフだからという単純な理由。


その後紆余曲折あったもののクローバースタジオを立ち上げてSpikaを公開していろんな会社から協業の話を頂いて日本とかアメリカの上場してる会社と一緒に仕事をして、今更ながら大企業で働いた経験が無い事でかなり苦労して各所に迷惑をかけて、やっぱ一度くらい大企業で働いとくんだったと後悔してる。


というわけで後悔ポイントを挙げていきましょう。


◼︎ 値段感が分からない

最初にして最大の理由。ずっと底辺でゴニョゴニョしてたので大企業から見積もりを頼まれても値段感がさっぱりわからなかった。一度某電話会社(国外ね)と取引のチャンスがあったんだけど多分盛り過ぎて、見積もりを出して全く音沙汰なしだった。。


◼︎ 書類の書き方が分からない

見積もりとか契約書。こういうのは大企業でみっちりしごかれるとちゃんとした物が作れるようになると思う。僕自身は未だにわかりません。社員にそういうのが得意なやつがいて任せてます。が、英語だけなので未だに日本向けの見積書とかペラ1です。。。がんばります。


◼︎ 組織の作り方が分からない

ずっと一人やってきたから、社員を一気に増やしたらカオスになって大変でした。会社の歯車辛いけど経験あるといざ会社おっきくしようとする時に絶対役立つと思う。


なんかまだまだあると思うけど、疲れたんでこの辺でいいかな。。


日本は新卒と言うすごいチャンスがあるので、スタートアップでイケイケ!!と思い込んでる新米エンジニア君たちも10年後後悔しない選択をして欲しいもんです。


告知!!

現在Spikaのオープンソース版をNodeJsで一から書き換えています。もうちょいで完成するのでお楽しみに!!もちろん全ソースコードをGithubで公開します。今度はメッセンジャーというよりか、組み込み型のチャットモジュールって感じになります。アプリやサービスにチャット機能を簡単に追加できるようになります。




Spika+DigitalOceanで5分でモバイルメッセンジャーサービスを始める方法

ご無沙汰しております、やっとこさSpikaのバックエンドの改修が完了し、当初叩かれていたセキュリティーやらバックエンドのレガシーコードの問題が解決しました。公開当時に炎上気味にdisられ、

ここで一段落ついたのですが、この段階ではまだ今後の改修の方向性が決まっただけで、まだまだな状況でした。10月末に終わらせます!とか言ってのたのですが、本業の受託の方がバタバタしだして、12月末までかかってしまいました。まぁまだまだカバレッジとかあり得ない感じですが、、、だれかテストケース書いてくれる人が居たら大歓迎です。

 

その間にも「サーバーインストール出来ねーぞ!!!」と問い合わせをほとんど毎日1通は貰っていて、最近は海外からの問い合わせというかクレームが多くなって来ました。弊社はクロアチアの会社ですが、Spikaは僕が英語がヘタクソで英語で広めるのが億劫なのでまずは日本をメインにやって行こうと思っています。海外向けにマーケティングする時は日本発!みたいな感じで露出させるつもりです。結局僕自身日本人(ハーフですが)で自分でコードも書いてるので。。

 

さてさて前置きが長くなりましたが、Spikaは開発環境の設定にVagrantを使っています。Vagrantは公開直後に@yandoさんがVagnrantファイルを書いてくれたのがきっかけで使い始めてまぁ便利ですよね。この後普通に受託の案件とかでもVagrantを使う様になって、もうVagrant無しでは生きて行けないと思います。

で、ちょっと前にこんな記事を見つけて

 

VagrantとSSDなVPS(Digital Ocean)で1時間1円の使い捨て高速サーバ環境を構築する - Glide Note - グライドノート

 

やってみたらこりゃ簡単。Spikaで「サーバーインストール出来ねーぞ!!!」って問い合わせを良く貰うのでここでまとめておけば、いちいち回答する必要も無くこのリンクを送れば良いと思うので、落ち着いたらSpikaバージョンを書こうと思っていました。

 まぁどうせなんで、一度改修後バージョンで、バックエンド+iOS+Androidの構築方法をまとめたいと思います。

 

SpikaバックエンドをDigitalOceanで立ち上げる方法

まずは、繰り返しになりますが、

VagrantとSSDなVPS(Digital Ocean)で1時間1円の使い捨て高速サーバ環境を構築する - Glide Note - グライドノート

を参考にして一度サーバーを立ち上げる所までやってください。その後

vagrant destroy

 で、一旦閉じてください。 次にSpika-Serverのコードを https://github.com/cloverstudio/Spika-Server  からダウンロードします。そこで、Vagrantfile.digitaloceanVagrantfileがあるのですが、Vagrantfileの方はローカルのVirtualboxで立ち上げる時に使います。今回はVagrantfile.digitaloceanの方を使うので、Vagrantfileは適当な名前に変更し、"Vagrantfile.digitalocean"を"Vagrantfile"に名前を変更します。"provider.client_id"と"provider.api_key"と"provider.ssh_key_name"はそれぞれ自分の環境用に値を設定してください。その後

vagrant up --provider=digital_ocean --provision


でサーバーを起動します。最初のステップで成功していたら問題なくサーバーの設定アップが完了するはずです。コマンドの前半に

Bringing machine 'default' up with 'digital_ocean' provider...

[default] Using existing SSH key: SpikaDemo

[default] Creating a new droplet...

 [default] Assigned IP address: 192.241.214.51


とあると思うので、このIPアドレスを控えておいてください。一通り完了したら、最後に

please open http://ipaddress/wwwroot/install to finish setup

と表示されるので、このipaddressの部分をサーバーのIPアドレスに変更してください。この場合は、"http://192.241.214.51/wwwroot/install" をブラウザで開きます。で、色々表示されると思うのですが、これは必要な情報なので保存しておいてください。これでバックエンドの構築は完了です。めっちゃ簡単!!!

Create User OK: email is 'l5YtIHrO@clover-studio.com',password is 'YTqcbnJ7', support user id 61baafdaa680faa92c18dd81d20002c0 

と表示されていると思うのですが、このメールアドレスとパスワードがサポートユーザーのアカウントになります、このままSpikaのクライアントアプリからログインしてください。ちなみにサーバーにログインするには、Vagrantfileの場所で、

vagrant ssh
とするだけです、Vagrantすげーーー!!

Spika iPhoneアプリのビルド
iOSのビルドでやる事は、
- APIのURLの変更
- サポートユーザーのIDの2点のみです。

まずは、https://github.com/cloverstudio/Spika-iOS から最新版をダウンロードしてください。

変更するのは、ここここのURLを変更します、この場合は、http://192.241.214.51/wwwroot/apiとします。次にここにサポートユーザーのIDを設定します。この場合は、61baafdaa680faa92c18dd81d20002c0となります。でそれをやったら、実行ボタンを押すだけです。iOSは以上!簡単ですね!!!

Spika Androidアプリのビルド

AndroidはiOSより若干作業が多くなります。Androidの開発環境は出来ている前提です。SpikaはEclipseを使って開発していますので、Eclipseでビルドしてください。まずは、ソースを https://github.com/cloverstudio/Spika-Android からダウンロードします。

■ プロジェクトへのインポート

f:id:cloverstudioceo:20130923110904j:plain

File > Import > Existing Android Code Into Project 

で、ダウンロードしたフォルダとプロジェクトにインポートします。

 

 

 

 

 

 

 

 

 

 ■ Build TargetをGoogle APIsに変更

f:id:cloverstudioceo:20130923110920j:plain

 プロジェクトトップを右クリック > Properties > Project Build Targetの部分で Google APIsの最新版を選択します。














■ Google Play Servicesをインポート

f:id:cloverstudioceo:20130923110936j:plainインポート方法は下記のサイトを参考にしてください。

 Macの人はこちらを参考Windowsの人はこちらを参考Linuxの人は自分でがんばって下さい。

 

インポートが完了したら、 プロジェクトトップを右クリック > Properties > Java Build Path > Projectの部分で インポートしたGooglePlayServicesのプロジェクトを選択して下さい。

 



■ APIのURLの変更、サポートユーザーIDの設定
あとは、iOS同様にAPIのURLを変更してサポートユーザーのIDを設定します。変更ス角は、ここここです。繰り返しになりますが、URLはこの場合、http://192.241.214.51/wwwroot/apiとなり、サポートユーザーのIDは61baafdaa680faa92c18dd81d20002c0になります。


以上で、Spika公開方法となります。サービスとして成立させる為にはさらにプッシュ通知の設定が必要になりますが、それはまたの機会に書きたいと思います。