プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

2年連続でインフルエンザになる

確か去年はA型だったんですが、今年はB型になりました。節約のため高速バスで仙台に帰った翌日くらいから体調が悪くなったんで、バスの中で感染ったのだと思います。

しかし、今回のインフルエンザはけっこう辛かったです。去年ももちろん辛かったは辛かったんですが、高熱が出て翌日に病院に行ったらすぐにインフルエンザ陽性が出たのでイナビルという鼻から吸引するお薬をキメたら8時間くらいで回復したんですが、


tkot.hatenablog.com


今回のは熱が出て翌日に病院に行ったらインフルエンザ陰性。ただの風邪かと思いそのまま外で仕事してたらどんどん悪化したので2日後にまた病院に行ってようやく陽性反応が出ました。これは運が悪かったらしい。

で、今回はイナビルじゃなくて例のタミフル。これを5日間飲むらしいんですが、回復がけっこうゆっくりで未だ気持ち悪いんですよね・・・。

金曜 朝にバスから降りる(この時点で感染?)
土曜 なんともなし
日曜 38度くらい熱が出る
月曜 インフル陰性
火曜 仕事するも相当悪化
水曜 ずっと寝てる+夜間の救急病院に行ってインフル陽性
木曜 ずっと寝てる
金曜 だいたい寝てる

というわけでまだ指先の動きが悪かったり足元がふらついたりします。



これ去年も思ったんですが、病院代と薬代、電気毛布買ったりで軽く1万超えてるし仕事しなかった損害分も考慮したらけっこうな打撃なので、高速バス・新幹線って時間的なものだけでなく乗るにしても季節考えるとか重要ですね。

Rails初心者に知ってほしい本当の脱初心者の方法

qiita.com

この記事読みました。まぁ感想を一言で言えば

http://nplll.com/assets/2011/02/13_01.jpg

まぁ言いたいことを順を追って言っていきます。

ロジックで用いる具体的な数字は定数に格納する

これは半分正しいですが半分間違いです。マジックナンバー死すべしみたいな人が短絡的にあらゆる数値をそのクラスの定数にしちゃったりしてますが、程度問題です。

例えば

@articles = Article.where(...).page(params[:page]).per(PAGINATE_ITEM_LENGTH)

みたいなやつ。こういうの、結局ここでしか使わないから修正箇所1個だけなんですよね。だからベタ書きでもいいと思います。 定数にしたほうがいいやつってむしろこういうやつで

$li_margin_top : 50px;
ul {
  margin-top: -$li_margin_top;
}

li {
  margin-top: $li_margin_top:
}

まぁ変更する頻度が高い、どこかの数字と連動している、とか。

CRUDとルーティング

ある時期まではとりあえずresourcesが使えないか考えるべしというのは姿勢としてはいいのですが、現実問題としてわりと厳しいです。 例えばあるレストランの詳細ページの中に、地図を表示するページとかメニューを表示するページとかいろいろ作る時

resources :restaurants, only: %w[show] do
  resource :maps, only: %w[show]
  resource :menus, only: %w[index]
  resource :reviews, only: %w[index]
end

みたいな。まぁreviewsとかはいいんですけどmapみたいに明らかに1画面しか作らないなら

resources :restaurants, only: %w[show]
get 'restaurants/:id/map', as: :restaurant_map・・・①

resources :restaurants, only: %w[show] do
  get 'map' => 'restaurants#map', as: :restaurant_map・・・②
end

で十分ですよね。とくに①の方法は:idの部分を:nameとか:uuidとか変えられるのでオススメです。その際named_routesがそれっぽくなるようにちゃんとasオプションを付けましょう。

ちなみにshallowオプションは使うべきではない派です。

resources :restaurants, only: %w[show], shallow: true do
  resources :reviews, only: %w[show]
  #これでレストランのレビュー一覧ページはマッピングできるけど、ユーザのレビュー一覧は?
  # それならRestaurant#ReviewsControllerとUser#ReviewsControllerにしたほうが良くない?
end

まぁas, namespace, pathあたりのオプションをちゃんと使えば良い話です。

クラスを継承してsuperメソッドを使う...

まずDevise使うのやめましょう。 あと、iOS使ってるとsuper.viewDidLoad()とか出てくるけどRailsでこれが出てきたら使うライブラリが間違ってるか設計がおかしいかのどちらかだと思う。

クラスをまたぐ処理はconcernに

concerns使うシーンがピンとこなかったんですが、モデルからデコレータに変換するメソッドだけを含むモジュールとかをconcernsにするとけっこう便利です。あとはpublished_atだけでModel#draft?, Model#published?, Model.published, Model#publish!などを付け足してくれるモジュールとか。

ただ、たまたま共通してるレベルのものをconcernsにするのは危険かなと思います。

scope

昔保守した案件で @article.visible.user_authenticated.high_quolity.(以下略)みたいに定義して、結局Article.publishedが抜けてたみたいな事故があり、案外scope定義しまくるのはリスクがあるというか、scopeがそんなに大量になる時点で何かがおかしい気がします。 後はアプリケーションの画面に強く関係するビジネスロジックをscopeにすべきではないです。

Helperメソッド

ページ数によってtitleタグを動的にとる程度であれば

- if @article.current_page > 1
  title "記事一覧 #{@article.current_page} ページ"
- else
  title "記事一覧"

とかで十分。どうしても欲しいなら@articleのデコレータ。これをヘルパーにしてるとメソッド名が枯渇する。

考え方として、Railsが提供してくれるlink_toとかの亜種を作りたいときにはいいと思う。

  def noindex_nofollow_tag
    "<meta content='noindex,nofollow' name='robots' />".html_safe
  end

とか。

Test

minitest使ってるのはいいですね!

おわりに

いろんな現場、いろんなプロジェクト、規模やセキュリティの重要性、リリース後の動きとかによって書くべきコードは変わると思います。 私もまだまだ勉強中です。

批判あればご指摘ください

クロネコヤマトの経営学

2年ぶりに電車通勤生活になったことで、電車の中ではKindleで本を読むようになった。 で、この3日ほど読んでたのがこれ。

www.amazon.co.jp

クロネコヤマトヤマト運輸2代目社長の回顧録。著者は創業者で父親の会社に入社しながら2代目に就任し、70年代に大口顧客の三越を切って一般顧客を対象に切り替えていく。要するにB向けのビジネスモデルを縮小して、C向けの宅急便という新規事業に打って出た話。

2代目ながら東大経済学部卒で論理的。当時としては非常にビジョナリーで現代的な経営をしていたのが分かる。 ちなみに個人的には労働組合との関わり方について非常に細かく気配りしたような書き方があった点(現在のベンチャーではほとんど労組との関係性について悩むことはない)、当時の労組は業種的にも相当に影響力があったんだなという時代柄を感じる。 あとは国内航空会社の出来レース的な価格体系が海外格安航空にパイを奪われたという話を援用して敵は外にいると説いてるんだけど、今後はヤマト運輸の強敵が佐川急便からAmazonのドローンやGoogleの自動運転車、Uberになるのではと思うと全く聡明な見識だと驚かされる。

まぁさすがに本文中に「いくらなんでも荷物が空を飛ぶことはできないので〜」という描写があって、ドローン配達までは非現実だと思っていたみたいだけど。

Kindleで読めるのでおすすめです。

余談

最近はてブでゲーム作って会社ぶっ潰した24歳みたいな記事がバズったんですけど、ああいう感じで失敗起業家になぜ失敗したかインタビューしていく本とかあれば読みたいですね。

胡散臭い会社を見破る方法

ホームページだけはやたらと綺麗なのだが相手がどうも胡散臭い。会社の規模や実態がよくわからない。

こういうときは登記簿を照会すれば一発なのですが、さすがにもっとカジュアルな方法で相手の身元を確認してみたいでしょう。

そういう場合に法人番号検索が非常に便利です。

http://www.houjin-bangou.nta.go.jp/

お役所のページのわりにはけっこう見やすいですね。

例えばこれにアトラシエと入力してみます。

f:id:tkot:20160210230240p:plain

出ました。

といったふうに、会社が実在することと住所だけ確認できます。住所変更も登記してすぐに反映されました。

世の中、意外と会社のようで会社じゃない組織は多くあります。八百屋さんとかレストランとか。 でも名刺は「リストランテ・エビス」とかで、これを屋号といいますが、個人事業主には屋号を明記する欄はあるんですが屋号に書いてない屋号、というか店名を名乗っても罰則は(たぶん)ないです。

というか、そもそも個人事業主じゃなくても勝手に名刺を作って「うちはなになにの会社です」と名乗る分にはギリセーフです。というのは、お役所の書類とかをみると運営母体は個人事業主だがみなし法人のような形のときに、屋号を会社と名乗っていることを想定してるケースがあるんですね。 しかし、株式会社とかを勝手に名乗ると名乗ると会社法かなんかに引っかかります。

何がいいたいかというと、「うちはチームsakuragaokaっていう芸能キャスティング会社です」と名乗るのはかなりグレーであるけどまだ株式会社とかを名乗ってないので、これくらいのことをやってる人は多いということ。

だから胡散臭い会社の人にはちゃんと登記上の名義と代表者を聞いたうえで、存在を確認しましょう。最近シェアオフィスで常々感じることです。

ウェブサービスの時代は終わる

Google時価総額世界一になったそうだが、いわゆるウェブサービスの時代は徐々に先細っていく恐れがある。
これは私自身リスクとしてある程度現実味を持って考えていたことなのだが、最近ある人づてに著名投資家が同様の見立てをしていると聞いてあぁ、やっぱりそうなのかなと考えを強めた。

というのは、簡単にいえばインターネット上で有望市場とされているものがある程度刈り取られてしまっていること、参入コストの低下(プログラミングが楽になったなど)によりプレイヤーが過剰なことに起因する。
例えば有望市場、というか巨大市場という点では上から順に自動車、建設、外食、不動産、小売、アパレルなどだが、Cへの依存度が高い分野はすでに巨大プレイヤーがいるし、ぱっと思いつかない自動車にしても自動運転車のように根本から大きく変えようとしているチャレンジャーが存在する。建設はまだないかな・・。


よく最近の新規事業担当者は「10年前だったらもっと楽だっただろうなぁ」と言っているが、それは結果論であるという点を考慮しなければ全く正しい。
逆に言えばインターネット並に今後10年成長する市場を発見していち早くプレイヤーになれば、10年後に優位な立場になれる。


で、みんなが気になる10年にインターネット並の成長ができる分野はなにかというと、巷ではVRやIoT、人工知能あたりなのだろうけど、その著名投資家いわくバイオテクノロジーやサイバネティクス、ハードウェアだという。
例えば事例で聞いた話ではマグロの栽培漁業で、マグロが致命的に弱体化する悪い遺伝子を矯正して生存率が急落する初期の生育過程を乗り切ることで生産効率が飛躍的に伸びる技術が最近あるという。
意外と忘れがちだけど人間が摂取してるものは塩とか水あたりが例外なだけでほぼすべて動物か植物なので、食産業にも巨大インパクトがあるのはもちろん、当然医療でも応用できる。


でも遺伝子分野なんで今から勉強したって無理だわーと思うんだけど、逆に20年前にインターネットを始めた人たちってそれを無理じゃないと思った人なのかも。

まぁ本気で業界の切り替えができるとしたら20代はまだチャンスがあるので進む道が正しいのか毎日考えないといけないのかも。

プログラマーの時代は終わる + 引っ越し体験記

今日は二本立てです。

プログラマーの時代は終わるという話

最近わりと有名なスタートアップの社長と話す機会があって、インスパイアされた話。

大学生のときに勢いを感じて飛び込んでみたものの、当時に比べてプログラマー=食えるという認識が世間的に定着し、プログラミング学習に挑む社会人なり学生が非常に増えた。こうなるともうダメだ。そのへんの主婦が株を始めたらバブルが終わるのと同様、そのへんの社会人なり意識高い学生がRubyあたりを習い出すと、もうプログラマーが食える時代は終わる。

というわけで、今後私もプログラマーだのエンジニアだの自称するのは辞めようと思う。転向先として大きく2つある。一つは経営。経営は行政書士とか税理士、社労士的なテクニカルな知識面もあるが、そもそも資金調達だったり事業計画だったり採用など、数を打つしかない。(まぁ今やってる仕事のウェイトを開発を低くするという話)

次にクリエイティブ。具体的に言えばデザインやCG、動画などだが、現状でやってることで動画制作などはあるが完全に素人レベルなのでこれをまぁできるYoutuberレベル(瀬戸弘司くらい?)に高められれば・・・。 あとは現在もデザイナーから受け取ったpsdファイルを修正するとか、画像処理やチラシ制作くらいのことはやってるがまぁしこしこphotoshopillustrator、after effectあたりを使いこなせるようにならないといけない。

引っ越し体験記

引っ越しなのだが、見積もりを取ったらちょっとうさんくさい業者で2.7万、赤帽の見積もりで3.6万と言われた。まぁ大した額ではないのだけど、先の見積もりを出してきた業者が電話口でかなり乱暴な口調で気を悪くしたので自分でやることにした。 レンタカーで軽トラより少し大きい一般のトラック(といっても普通の乗用車サイズ)を借りて6時間5400円、これに台車をオプションで500円。 あとはAT普通車を運転できる友人にお願いして、日当1万円で半日で移動させた。

前回言ったように池袋に引っ越したわけだが、まぁ梱包に2日程度、当日は1回の積み出しで30分弱、運搬に30~40分、運び出しに40分くらいかかった。これを2往復。 引越し先は4階でエレベーターなしなので肉体的にはかなりきつかったが、まぁなんとかなった。 冷蔵庫・洗濯機がある場合は相当厳しいと思う。一人用ソファだけで地獄だったし・・・。

ただ、この流れで「これからはセルフの引っ越しが増えると思う」なんていうかと思ったら大間違いで、引っ越しは今後も、というか今後はよりいっそう業者の専売特許になると感じた。なぜなら積み出し・積み込みがもっとも大変なのであって、これはそのうちロボットスーツによって効率化されるのは間違いない。

http://d2dcan0armyq93.cloudfront.net/photo/odai/400/4e2d71561892fde9af7ea504413864a6_400.jpg

ということは、この業務用のロボットスーツがけっこう高額だとして、投資を回収できるだけの回転数を専門業者として回していくのがもっとも経済合理的だろう。

今後機械が人間の仕事を奪うという話があるけど、まず現実的なところでこういうパワースーツ関係(サイバーダインがやってるようなところ)あたりが肉体労働者産業に普及していくと思う。