私のLaravelを利用したWEB開発について
今年に入って一番技術的に注力していると言っても過言ではないLaravelについて、どんなものをどのように開発してきたか紹介します。
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
現在は、受託、業務委託を中心としてリモートで開発を行なっています。
昨年まではRailsをベースとしつつ、他の言語・FWの開発も同時にしていました。Laravelもその1つです。
今年からはLaravelに注力し案件をこなしています。
今回は私が手がけたLaravel開発の一部を紹介します。
※ 受託・業務委託案件については、他企業のサービスになる為、サービス名や運営会社などは伏せています。どのサービスかわかっても内緒にして下さい。
【業務委託】スキルシェアサービス開発(3月〜6月)
メルカリ社のteachaから少し遅れてローンチしたスキルシェアサービスです。
個人的に香港でスキルシェアサービスを展開したいと考えていて、ベースをRailsで作り始めた時に舞いこんだ案件です。
業務委託ですが、リードエンジニアとして開発からサーバー構築まで担当しています。
- 企画やデザインについては、運営元の担当者に基本任せていてサポートする形です。
- 初期は、エンジニア2名で、企画・デザイン・マーケティングを運営元の担当者に任せる形です。
以下のような技術を利用して開発を行っています。
- PHP7.2
- Laravel5.5(LTS)
- jQuery3
- nginx
- MariaDB10系
- SendGrid
- さくらのクラウド
- CentOS7.4
Laravelの案件でリードエンジニアをつとめるのは初めてになるので、基本的にはDDDなどの設計思想は取り入れず、Laravelの基本に沿った開発を行いました。
大変だったことは?
「Stripe Connect」の導入にあたって、仕様、設計を調整するのが大変でした。1つのStripeアカウントで複数のショップを展開する 「Custom」 というアカウントタイプで開発を行いましたが、Stripeの仕様を調査しつつ、企画者の仕様に合わせた開発を行うには何度も作り直しが発生しました。
例えば、
今回は定期決済(Subscription)機能が必要になりました。なので「Laravel Cashier」を使えば実装しなくてできそうと思ったのですが・・・
導入し開発を進めていくうちに仕様的に限界がきて、結局ソースを参考にする程度でライブラリ自体は利用しないことに決めました。
(「Laravel Cashier」自体は、Stripe Connectを考慮して作られていないような気がします)
現在のサービス状況は?
絶好調とは言えないかも知れませんが、運営元の認知度やマーケティングによって安定して売上が確保できているようです。
私は引き続き運用開発として機能追加を粛々と行っています。
【受託】一斉メール配信サービス開発(5月〜9月)
仲良くさせてもらっているインフラエンジニア社長さんからの依頼で、営業ツールとして利用できる一斉メール配信サービスを開発することになりました。
今まではGMO社が提供しているサービスを利用していたようなのですが、自社にあったツールを作りたいと思ったのがきっかけのようです。
ツールなのでUIから開発まで全て担当しています、サーバーに関しては先方のHPがのっている環境を利用いているのでデプロイできる環境構築のみ対応しました。
以下のような技術を利用して開発を行っています。
- PHP7.1
- Laravel5.6
- nginx
- MariaDB10系
- CentOS7.5
- Bulma
他の案件でLaravelをメインとして利用するようになったので、Laravelを利用してサクッと仕上げたかった案件です
大変だったことは?
一括メール配信の開発がひと段落した後、「特定のメールアドレスで受信したメールをDBに取り込みたい」という追加依頼が来ました。
incron と php-mime-mail-parser を利用してメールファイルの作成を検知し、laravelのコマンドを実行、DBに取り込むという処理を実装しました。
このような処理は本番環境でないと最終確認がなかなか取れず時間がかかりました。
(本当であればメールサーバー(postfix + devcot)含め全て同じ構成の開発環境を作って試した方がいいのですが、そのようなリソースがなく本番で確認することになりました)
【個人開発】請求書発行サービス開発(6月〜)
私は個人事業を始めた時からMisocaを使って請求書を発行しています。現在も引き続きMisocaを利用しています。
ただ、請求書にMisocaのロゴが入るのがいやで自分で作ろうと思い開発を始めました。
Laravelにした理由は、
- 他の案件と並行してLaravelを開発することでスキルアップしていきたい
- 業務だとスピード重視で開発方法論などじっくり考え、調査する時間がないので、個人開発でノウハウを貯めて他の案件に還元する
と考えたためです。
ベースはできているものの公開はしていません。
サーバーどうする?自動化どうする? などさらに技術を追加した上で公開すべきか判断していきたいと考えています。
現時点で利用している技術は以下の通りです。
- PHP7.2
- Laravel5.6
- es6
- nginx
- MariaDB10系
- CentOS7.5
- Bulma
私の個人開発の問題点は、やればやるほどあれもしたい、これもしたいと機能がモリモリになり、挙げ句の果てに他の仕事が入ってきて手がつけられなくなることです。
現状そうなってしまっているのですが、今年中に一般公開を目指したいところです。
【業務委託】サービスや従業員の満足度をシェアするサービス開発(6月〜)
一般ユーザーが匿名でスコアをつけができ、管理者がスコアを見てサービスの満足度を把握したり、チーム機能を利用すると、チームメンバーとなる従業員が満足度をスコアづけができ、上司や社長などの管理者からフォローアップ荒れるサービスになります。
(自分もサービスの展開方法や仕様が把握しきれていない部分があります・・・)
スキルシェアと同じような技術で開発を進めています。
- PHP7.2
- Laravel5.5(LTS)
- es6
- jQuery
- nginx
- MySQL5.7
- SendGrid
- Xerver
デザイン以外1人開発なので、ユースケース指向と取り込んだり自由に開発しています。
若干仕組みは異なりますが、以下のURLの利用方法と似た形で、UseCaseクラスを定義して開発しています。
大変だったことは?
ミニマムスタートで開発が始まったのですが、チーム機能の導入で一回データ構造をリセットしました。テーブル設計のやり直しです。
仕様の確認不足な部分もありますが、間に人が入っていて直接やりとりをいていない場合の開発の難しさを感じました・・・
現在、絶賛開発中です。10月中に今のタスクを終わらせたいと思って頑張っております。
【業務委託】会計・経理ツール開発(10月〜)
私は今年から個人でメンター活動も始めていますが、そこで出会ったメンティーさんとの共同開発案件になります。
基本は、Laravel開発のアドバイザーとしてメンティーさんが実装しやすい環境づくりとレビューや修正をしていくことになります。
会計システムということで、個人で開発を進めていた「請求書発行システム」のソースも利用できます。
メンティーさんの成長に貢献できるように頑張るのみです・・・
現時点で利用している技術は以下の通りです。
- PHP7.2
- Laravel5.7
- es6
- jQuery
- nginx
- MariaDB10系
- Bulma
【受託】求職サイト開発(10月〜)
香港で展開している求職サイトを日本でも展開したいと鶴の一声がかかりました。
香港のサイトでは、Symfony2 + Bootstrap2 + MySQL5.5が利用されていてレガシーな環境になっています。活性化されたサイトでもなく仕様も微妙なので、Laravelで作り直して日本展開しようと試みています。
※ 同じ構成でさっさとリリースしたいと言われているので勝手にリプレイスしています・・・。問題にならないようにするには、早く・前よりいいものを作るしかありません。
現時点では以下の技術を利用しています。
- PHP7.2
- Laravel5.7
- Typescript
- jQuery
- nginx
- MariaDB10系
- Bootstrap4
サーバーをどこにするかが悩みどころです。
絶賛検討中ですので、この記事を見ている方で相談にのってくださる方はDMください。
最後に
他にもちょこちょこ案件がありましたが、突発的なツールなので省きました。
結構な案件数をこなせていると思っています。これは私の能力というよりLaravelの生産性が高いということの証明だと思います。
Laravelの能力を習得することによって高いパフォーマンスが出せます。
高いパフォーマンスが出ると時間に余裕もできるので、その時間を使ってモダンな技術の習得に使えます。
まだ、Laravelを始めていない人は挑戦してみてください。
サポートが必要な人は是非ご連絡ください。
ちなみに、他の技術を利用している運用開発がまだまだあります。私の全ての仕事ではありません。まだまだ、お仕事できます。
仕事のご依頼も待ってます。