Qstairs

起業に向けた活動、およびAndroid・画像認識(人工知能、Deep Learning等)の技術を紹介します

広告

【Web】Laravelにまで手を付け始めました...

f:id:qstairs:20160601221351j:plain

はじめに

これまで、何度かWebアプリのフレームワークである
Ruby on RailsDjango
に関して使い方や実装方法を紹介してきました。

そして、なんと
Laravelにまで手を付け始めました。

知り合いのCTOの方にWebアプリの仕事のご依頼をいただき、
そのアプリがLaravelで動いているということでただいま勉強中です。

ということで、Laravelの環境構築からちょっと動かすところまでを紹介します。
#Ruby on RailsDjangoといったフレームワークを使用したことがある人向けです。

環境構築

今回はWindows10にインストールしているVirtualboxCentOSの6.8を構築し、
そこにPHPとLaravelをインストールしています。

インストールした感想は、
正直言ってわけわからない

というのもLaravelは人気があるようで、
インターネット上に構築方法が転がっているのですが、
どのバージョンでリリースしているのか明確に記載していなかったり、
構築方法の途中でフェードアウトしているサイトがあったり...

そんな中で私が参考にしたサイトは以下になります。
※といっても色々試しながら構築したので不十分かもしれません...

CentOSにPHP5.6をインストールする方法はこちら

CentOSにLaravelをインストールする方法はこちら

ちょっと動かす

Requestクラスの基本(1/5):初心者のためのLaravel入門を参考に
Laravel5.4での動かし方を記載します。


Web画面や処理を追加する際の肝になるのが
Djangoで言うところの「urls.py」に相当する「view.php」です。
ここに「Route::get」や「Route::post」を記載していきます。

// Laravel 5.4
Route::get('/helo/index', 'HeloController@getIndex');
Route::post('/helo/index', 'HeloController@postIndex');

上記の「HeloController」がファイル名で
「getIndex」が処理(メソッド)名になります。
これは「app/Controllers/HeloController.php」のようにファイルを用意し、
以下のように記述します。

<?php
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
class HeloController extends Controller
{
    public function getIndex()
    {
        return view('helo', ['message' => 'Hello!']);
    }
    public function postIndex(Request $request)
    {
        $res = "you typed: " . $request->input('str');
        return view('helo', ['message' => $res]);
    }
}

return view('helo', ['message' => 'Hello!']);の
「'helo'」は画面処理のファイル名で
「resource/views/helo.blade.php」でファイルを作成することで紐づきます。
また、ファイル名に「.blade」を追加した目的は、
テンプレートエンジンを使えるようにするためです。
#下記の「{{ csrf_field() }}」がそれにあたります。

helo.blade.phpファイルの中身は以下になります。

<!doctype html>
<html>
<head>
    <title>Sample</title>
    <style>
    body { color:gray; }
    h1 { font-size:18pt; font-weight:bold; }
    </style>
</head>
<body>
<?php echo csrf_field(); ?>
    <h1>Sample</h1>
    <p><?php echo $message; ?></p>
    <form method="post" action="/helo/index">
      {{ csrf_field() }}
        <input type="text" name="str">
        <input type="submit">
    </form>
</body>

以上により、
localhost:8000/helo/indexへのアクセス
画面内の入力フォームの処理と結果の表示までが実現できます。


最後に

Laravelはバージョンによってフォルダ構成が大きく異なるので注意が必要です。
インターネットで調べる際はバージョンを確認しないとわけわからないことになります。

例えばLaravel5.1では存在したroutes.php
Laravel5.4ではroutesフォルダが設けられapi.phpやview.phpで分けられています。

5.1→Requestクラスの基本(1/5):初心者のためのLaravel入門
5.4→Laravel 5.4 (3)ルーティング基礎(認証) | ほぼWebエンジニアリング


これからさらに勉強していきます。

以上

【フリーランス】自宅作業になっての感想と1週間の活動について

f:id:qstairs:20171102004518j:plain

はじめに

自宅で作業するフリーランスのITエンジニアになって1週間以上たちました。

自宅作業はどんな感じか、どういう活動をしているのかつらつら書きます。

自宅作業

これまでは決められた時間にオフィスに行くために準備し、
オフィスに着き椅子に座りPCを立ち上げて仕事をすることが日常でした。

そんな日常から一転
今は決められた時間はなく、
オフィスは自宅で椅子に座りPCをスリープから起動し仕事をしています。

何が変わったか。
・行かなきゃいけないがない
・人に会う場合を除いて移動がない
  究極的に言えば起きてすぐ仕事できる!(良いことなのか!?)
・割り込み作業がないからやりたいようにできる
・パジャマで仕事
・歌いながら仕事
・いつでも休憩できる
・コンビニ店員にしか会わない


一歩間違えればニートですね。。。


自律的に行動できないと自宅作業はやめたほうがいいです。
自律的になるためには目標をちゃんと設定しなきゃですね。

目標がその日その日を支配する

横浜高校の野球部 渡辺前監督の言葉です。




活動

この一週間は慣れないことが多く大変でした。
ピッチイベントをはじめとし、
そこで出会った方々と改めてあってお話しすることが多かったです。
これまで仕事の中で面識の浅い人としっかり話すことが少なく、かつ人見知りなのでへとへとです。

でも、いろいろな方との繋がりを持てることはほんとにありがたいことです。
事業の進展にお力を貸してくれる方や、
これまでの経験を見込んで仕事を依頼してくれる方などに会うことでモチベーションが上がります。

現在SNS等が発展して直接会わなくてもコミュニケーションをとることはできますが、
だからこそ直接会うことの価値が高くなっているのではないでしょうか。

ITエンジニアの方には特にいろんな方に直接会ってほしいと思っています。
仕事取れますよ。

こんな私にお会いいただける方はTwitterでご連絡ください。
#東京、神奈川あたりになります。

以上

【AI】国際宝飾展秋に来た②

f:id:qstairs:20171027122420j:plain

下記の続きです。

qstairs.hatenablog.com


◯Automagi株式会社
Automagi株式会社はシステム開発会社で、
AIを使用したシステムも開発している。

事業開発部 AIビジネスコンサルタント 相馬氏が登壇。

「事例からみるAIの現状と活用法について」というテーマで講演。

内容は大きく4つ。
◯AIのこれまでと現状
◯AI活用ユースケース
◯AIの導入について
◯AMYについて

◯AIのこれまでと現状
AIの歴史と現状、これからの盛り上がりとともに、
どういった技術かを説明。
日経新聞で2015年から一年ごとの10月のAI関連の記事の数値を紹介。
 2015年10月:30件
 2016年10月:300件
 2017年10月:500件

◯AI活用ユースケース
幾つかの事例を紹介。
その中の一部が以下になります。

住信SBIネット銀行 バナー広告配信の最大利得化
 金融商品の広告
  買った、買ってない、与信通った、通ってないの情報を元にさらにAIを強化

・デンタルサポート
 歯の欠損から自動CAD

野村不動産
 チャットボットで営業

JINS
 メガネリコメンド:似合っているかどうか

◯AIの導入について
AIの導入時に気をつけるべきポイントを説明。

AI導入までは約4-6ヶ月を目安に。

AI導入時のチェックポイント
 何を解決したいのか
 データはあるのか、作るのか
 スケジュールは大丈夫か
 情報の取り扱い、セキュリティは問題ないか

AIで気をつけるべきポイント
 AIは100%ではない
 データは質が重要
 自動的に賢くなるとは限らない
 ディープラーニングは最強ではない
 AIは統計である
 
分野を絞る
 全てAIは難しい。人とのハイブリットが好ましい。

◯AMYについて
AutomagiのAI「AMY」について紹介。
「AMY」は大きく分けて、
自然言語
・データ分析
・画像認識
領域で対応可能。

製品としては、
チャットボットの「AMY AGENT」
居酒屋で沈黙が訪れたらぼそっとつぶやく「AMY TALK」などがあるとのこと。
 

個人的に「AMY TALK」使ってみたい。

【AI】国際宝飾展秋に来た①

f:id:qstairs:20171027122420j:plain

はじめに

今日国際宝飾展秋に来ています。

ITエンジニアの私がなぜ宝飾展に??
という感じですが、
実はこの宝飾展で特別セミナーとして
人工知能×宝飾ビジネスのセミナーが開かれているのです!


このブログでも人工知能に関して様々取り上げているように、
人工知能に対して関心があるのでこれは聴きに行こうと思いセミナーを聴講しています。
【AI】日本初のAI・人工知能EXPOに行ってきた! - Qstairs
【AI】日本初のAI・人工知能EXPO 出展内容 - Qstairs

今日は以下3社のAI関連企業がセミナーを開催しています。
カラフル・ボード株式会社
Automagi株式会社
株式会社チャモ

全社のセミナーを聞く予定なので、
このブログでご紹介できればと思います。

※どこまで具体的な情報を記載して良いのかわからないので、
 若干抽象的になります。

カラフル・ボード株式会社

渡辺CEOが登壇。
どういう活動を行っており、どういった成果が出ているのかを説明。

パーソナライズをテーマに人の感性をAIで学習し、
「AIを使って個人にマッチした商品と出会う」ことを目指している。

現状はアパレル業界へ注力しており、
マーケティング、生産/仕入に関するソリューションを提供しているとのこと。
特にマーケティングについては強く、
効果が数値に出ているとのことでした。

AIを活用した対応としては、以下を行っています。
・見込み客の明確化、広告のパーソナライズ
・セグメンテーションし、どうすれば購入まで持っていけるのか
・メールやクーポンのパーソナライズ


この他にも「SENSY CLOSET」というアプリを開発し、
コーディネートの記録、AIリコメンド機能を搭載し、
販売した商品が着られているのか、どういう組み合わせで着られているのかのデータを取得。
そのデータを用いて商品企画につなげるとのこと。


また、様々な企業から相談を受けた経験から得た
AI新規ビジネスを成功に導く鍵
についても説明し、
事業戦略の深い洞察、最先端技術の適切な活用をセットに考え、
LEANな事業開発プロセスで展開するべきとのこと。
プロセスとしては、
事業策定→サンプル検証→トライアル→本格展開
で進めるのが良いだろうとおっしゃっていました。

私の率直な感想は、
データの集め方、使い方、それを活用したAIによるビジネスの広げ方のセンスがとてもすごい
と思いました。


qstairs.hatenablog.com

【Django】テンプレートフィルタを自作する!

f:id:qstairs:20160601221351j:plain

はじめに

DjangoWEBサービスをガリガリ開発しています。
開発している中で、
views.pyから画面に渡されたリストデータを
インデックス指定して値を取得したい事態になりました。

予め用意してあるDjangoのテンプレートフィルタの中に、
リストデータからインデックス指定して値を取得する機能はありません。

そこで、今回以下のサイトを参考に、
テンプレートフィルタを自作しました。

テンプレートタグやフィルタを自作する — Django 1.4 documentation

完成ソース

リストAとBがあった際に、
Aをループで回しながらBの値を取得する処理です。
#インデックスオーバーになったらどうすの?とか辞書型を使えば?とかは置いておいてください...

「index」というテンプレートを読み込んでインデックスを指定してリストBから取得します。

{% load index %}
{% for val in A %}
<tr class="even">
  <td>{{ val }}</td>
  <td>{{ B|index:forloop.counter0 }}</td>
</tr>
{% endfor %}

フィルタの作り方

まずは必要なフォルダ「templatetags」を作成
models.pyやviews.pyと同じ階層に作ります。

・フォルダ構成
templates
templatetags
models.py
views.py


templatetagsフォルダ内に
「__init__.py」と「index.py」を作成
「__init__.py」の中身は空で良いです。


・index.py
以下のようにリストからインデックス指定で値を返すindex関数を作成します。

from django import template
register = template.Library()

@register.filter
def index(List, i):
    return List[int(i)]


以上で出来上がりです。
index.pyやその中の関数名等は適当に皆さんのやりたいことに合わせて変えてもらえれば大丈夫です。


以上

【奮闘記】ピッチイベントに登壇!

f:id:qstairs:20170209000813j:plain

10/24にピッチイベントで登壇しました!

登壇者は私含めて4名で、
投資家やメディア関連、起業家等含めて30~40名が聞きに来られていました。

会場はとてもきれいで、前方にスクリーンが3面並ぶという...

これまでの人生で一番緊張した気がします。
緊張しいなので人前で話すのはいつも緊張するのですが笑

私は2番目の登壇でした。

1人目の登壇者の事業説明が終わり、次は私の番。
壇上に行く間、目の前はぼやけていた気がします。

ガクブル状態で吐きそうになりながらも私の事業について何とか説明した後、
コメンテーターの方々や聞いておられた方々にたくさんのコメントや質問をいただきました。

質問の中には突かれると痛い内容もありましたが、
私の考えを素直に話せたと思います。

登壇者4人の事業紹介が終わった後、
色んな方と名刺交換させていただきました。

こんな私のまだマネタイズもできていない事業に対して興味を持っていただけるのはとてもうれしかったです。

今回ピッチイベントにご招待していただいた運営の方、
運営の方をご紹介していただいた方、
私の事業に興味を持っていただいた方々
皆さんに感謝するとともに、
期待を裏切らないよう頑張ります!!

以上

【奮闘記】準フリーランスからフリーランスへ

f:id:qstairs:20170209000813j:plain

久々の投稿です。

10/20をもって常駐による仕事を終了し、
本日から個人受託で家で仕事をします!

これでフリーランス(勝手に作った言葉です)から
働く時間や場所を縛られない真のフリーランスになります。

あくまでもこの選択は
自分が進めたいサービスに対する時間を確保することが目的です。

サービス

では、開発するサービスとは何か。

それは、
頑張るITエンジニアが報われるような世の中を目指したサービス
です。

ITエンジニアは営業のように数値で簡単に評価することはできない職種です。
それにより、人よりも効率的に働いても評価されにくく、
仕方なく働いた時間でしか測れないという残念な状況になっています。

こういった状況を打破すべく、
ITエンジニアの能力や業績を見える化するためのアルゴリズムを作成し、
定量的な数値によってITエンジニアが評価される仕組みを開発していきます。

まずは、ITエンジニアの能力を見える化するサービスを開発しています。

近いうちにサービスについてもこのブログで紹介させていただきます。

以上

広告