株式会社NoSchool
Follow
Highlighted posts
All posts
株式会社NoSchool
NEW
3 days agoPHPUnitでテストするときのちょっとしたTips5選
オンライン家庭教師マナリンク CTOの名人です。今日はマナリンクのバックエンドを支えているLaravelでテストコードを書く際に利用している、PHPUnitのちょっとしたTipsをまとめました。JSON型のカラムに対してassertDatabaseHasしたいそもそもJSON型のカラムはほとんどのケースで使わないのですが、稀に使った際にテストコードの書き方に迷います。書き方としてはカラム名を'->'で繋げることがポイントです。雑な例ですが、支払い履歴テーブルがあるとして、そこにpayment_resultといった名前で決済代行サービスへのリクエスト結果をJSONで格納しているとします。そ...
株式会社NoSchool
10 days ago
Vue, React開発時のPHPStorm, VSCode設定の話
マナリンク CTOの名人です。以前マナリンクのフロントエンド開発環境をまとめました。https://www.wantedly.com/companies/noschool/post_articles/310301今日は続編として、フロントエンド開発時のIDE(PHPStorm, VSCode)の設定周りについて書いていきます。PHPStorm普段私はPHPStormを主に使っています。あまりに便利なので年間1万円ほどを支払う価値は存分にあると思います。PluginPHPStorm(というか、IntelliJ周辺)には多くのプラグインがありますが、その中でもフロントエンド周りのプラグインを...
株式会社NoSchool
24 days ago
チャットに既読機能を追加したので、新旧デザインを比較してみた!
マナリンクでCTOを務めている名人です。オンライン家庭教師サービスを運営しているマナリンクでは、指導開始後に先生と生徒がチャットでやり取りできる機能をWeb / アプリで提供しています。先生は売上の管理等を含めてWeb版マナリンクを活用頂き、ご家庭はReact Native製のクロスプラットフォームアプリを活用いただいています。Firebaseを活用することで、相互にリアルタイムにメッセージのやり取りができます。今週はチャット機能に既読を追加するという大きな変更を加えました!すでに走っているアプリケーションに後から既読機能を追加するのは相応に大変でした。合わせて全体的にデザインも今風に改...
株式会社NoSchool
about 1 month ago
【技術検証】Template Literal Typesを使ってmicroCMSのクエリを型安全に実行するアイデア
マナリンクCTOの名人です。弊社ではかれこれ1年ほどmicroCMS を使っています。aspidaを使って型安全に実行できる工夫はしているものの、検索クエリの仕様はmicroCMS独自のもののため、Typoのリスクだったりリファレンスを覚える手間がかかります。まだまだDXを向上できる余地はありそうです。今回は、技術検証としてmicroCMSへの検索クエリを型安全にするための実験をやってみたので、その過程を記事にしました!概要Template Literal Typesを使い、以下のようにオブジェクトのプロパティをカンマ区切りで列挙する文字列を型安全に生成できる型を実装しました。micro...
株式会社NoSchool
about 1 month ago
LaravelでのPDF生成機能を、サービスコンテナを活用して疎結合に実装する
概要小ネタです。先日、領収書を PDF でユーザーがいつでも発行できる管理画面の機能をリリースしたのですが、施策に入る前はさっぱりどうやって実装したらいいか分からなかったので、備忘を兼ねてメモ。最終的には Interface を使うことで、詳細なPDF出力の実装にアプリケーション層が依存しないように組んでみたので、そこまで書き留めておきます。TL;DRPHP で提供されるパッケージを使う方法が最もシンプルいち機能のために PDF 関連のライブラリを入れたいわけではないので、AWS Lambda で実装できる方法を探したhttps://github.com/zeplin/zeplin-ht...
株式会社NoSchool
about 2 months ago
「Laravelのサービスコンテナをコードリーディングする会」を主催しました!
3月1日、「Laravelのサービスコンテナをコードリーディングする会」を主催しました!https://connpass.com/event/205279/サービスコンテナって何?一応ざっくり解説しておきますと、Laravelはプログラミング言語PHPによるサーバーサイドWeb開発フレームワークで、弊社のオンライン家庭教師サービスのマナリンクでのサーバーサイド実装にも使われている具体的には、決済処理だったり、アカウント登録処理、先生の指導コース保存処理などが動いているフレームワークを使うことで、一般的なWeb開発でよくある機能は予め実装されている状態からスタートできるので、マナリンク独自...
株式会社NoSchool
about 2 months ago
マナリンクのフロントエンド開発環境【Nuxt×TypeScriptおすすめライブラリ編】
CTOの名人です。今回はNuxt×TypeScript周辺に絞って、おすすめライブラリを並べていきます。TypeScriptを駆使してオンライン教育を革新していくメンバーを募集していますので、気になった方は応募してください!composition-api系Vue3から追加されたcomposition-apiは、個人的にはゲームチェンジャーになると言っていいほど革新的なものだと思っています(もちろんReact Hooksも)。こんな記事も書いています。https://zenn.dev/meijin/articles/34b9482dbc856d2523ed簡単に言えば状態管理ごと処理を特定...
株式会社NoSchool
2 months ago
マナリンクのフロントエンド開発環境【基礎編/TypeScript,ESLint,Jest,Sentry】
CTOの名人です。ちょっとした要望がありまして、弊社のフロントエンド開発環境についてざっくばらんにまとめてみようと思います!今回は基礎編と題しまして、フレームワークやライブラリについてまとめてみます。フレームワークNuxt.jsオンライン家庭教師マナリンクのフロントエンドをSSRで実装しています。Next.jsマナリンクforTeachersという、先生向けのメディアサイトをISRにて実装しています。ソースコード品質担保ESLint「このままのソースコードでも動くけど、(諸々の事情で)こう書いたほうがよりよいですよ」という注意をしてくれるライブラリです。JavaScriptに限らず各言語...
株式会社NoSchool
2 months ago
CTOがトップページを3カラム→1カラムにデザインリニューアルした話
CTOの名人です。本日は、先日リニューアルしたトップページの話をしようと思います。ちょうど現時点ではデザイナーさんが弊社には不在でして、私が気合でデザインし、実装まで行いました(ちなみにデザイナーさんは3月から1名参画予定なので楽しみです)。変更内容今回リニューアルしたページはこちらです。旧トップページ※ローカル環境で再現したのでちょっと変なところはあります 新トップページ 変更差分についてご覧の通り、変更した内容は大まかに言うと以下の通りになります。3カラムが1カラムになった旧デザインは左に検索リンク、右に記事コンテンツ等への導線が置いてありました新デザインは全てが上から順に並ぶように...
株式会社NoSchool
2 months ago
Nuxt.jsのディレクトリ構造とコンポーネント設計を公開
オンライン家庭教師マナリンクでCTOを務めている名人です。マナリンクではフロントエンドをNuxt.js×TypeScriptで実装しています。Nuxt.jsは割と標準で多くのディレクトリを作ってくれますが、開発をしているとそれ以外のディレクトリをオリジナルで作っていくこともあると思います。本記事では、Nuxt.js×TypeScriptで開発しているマナリンクのディレクトリ構造を公開します。興味を持っていただいた方はぜひ面談しましょう!プロジェクトルート$ tree -L 1 -d ...
株式会社NoSchool
3 months ago
先生に「新鮮ですね...」と言われた話
オンライン家庭教師マナリンクを運営している徃西です。現在は、開発以外の顧客対応(先生とご家庭)は基本的に全て私が行っているので、日々沢山の方とお話するのですが、先日少し嬉しかった出来事があったので書き留めておこうと思います。それは、昨年(2020年)の10月あたりから新しく弊社でオンライン家庭教師としてスタートされた先生。今では残り○名が限界ですと言われるくらいまでには生徒様をご紹介できました。現役で家庭教師や塾講師、いわゆる教える仕事をしているわけではなく、全く別の業界にお勤めの方で、過去の教師経験をオンライン家庭教師として活かしたいと副業で始められた先生でした。別の要件で打ち合わせを...
株式会社NoSchool
3 months ago
Laravelのディレクトリ構造を公開!
CTOの名人です。本記事では、マナリンクで採用しているLaravelのディレクトリ構造を晒そうと思います。ディレクトリ構造って案外個性が出ますよね。Webアプリケーションの果たしている役割はHTTPリクエストの分解から、そのバリデーション、サービスの仕様となるビジネスロジックの実現、データストアへの永続化、複数種類(ユーザー起因、システム起因)のエラー対応など多岐にわたります。これらのソースコードをどう配置しているかは、開発に対する考え方を一部投影したものになっているはずです。それではさっそくプロジェクトルートから順に解説していきます。環境情報Laravel 6系PHP 7.4系プロジェ...
株式会社NoSchool
3 months ago
ギリギリ公開できる技術的負債TOP3
CTOのmeijinです。今日は「ギリギリ公開できる技術的負債TOP3」と題しまして、昨年8月に正式リリースした「オンライン家庭教師マナリンク」というサービスの技術的負債をギリギリな感じでお話(釈明)していこうと思います。事の発端としては以下のツイートに思わぬ投票が集まってしまったことです。 弊社は現在採用活動中なのでWantedlyにストーリーを投稿するわけですが、記事ネタに困っています。何がいいかなとツイッターでアンケートを取った結果、37票投票いただいた上、技術的負債が第1位になったという流れです(困ったけど自業自得ですねw)。そこで、言えそうなもの、言えなさそうなものを両方手元で...
株式会社NoSchool
3 months ago
オンライン家庭教師の営業は何をするのか
オンライン家庭教師マナリンクを運営している徃西です。弊社でインサイドセールス(1人目)のポジションを募集しているのですが、求人内容に書ききれなかった実際どんなことを普段していて、何が大変で何が楽しいかを今回はまとめてみようと思います。前提としてこれは今いる業界によるかと思いますがマナリンクの場合は、マッチングのサポートです。(それだけではないですが)よってご家庭とオンライン家庭教師の先生、両サイドと日々やり取りを行っていきます。何が言いたかったというと、自社サービスやプロダクトを提供して、自社に売上が100%入ってくるモデルではなく、入ってきた売上を先生にもお渡ししていくモデルとなります...
株式会社NoSchool
3 months ago
Web エンジニアがシード期のベンチャーに転職して約2年間で成長したこと
私は 2019 年 3 月に NoSchool に CTO として転職し、ほぼ 2 年が経ちました。ベンチャーに入社したら成長できる!といった言い回しはよく耳にしますが、実際に何が成長できるのか、逆に何は成長しないのかを自分なりにまとめてみます。成長とはなにか?本記事で言うところの「成長」は以下の通りに定義します。提供できる価値の幅が広がること同じコストでより高品質な成果物が提供できるようになること提供できる価値の幅が広がることとは、例えば決済処理に初めてチャレンジして実装ができるようになったWeb だけでなくアプリも実装できるようになったといった成果物の種類が広がることを指します。同じ...