【Python専門オンライン学習サービス PyQ】10年間の開発ノウハウを詰め込んだ集大成

最終更新: 2019年9月14日

「 PyQ(パイキュー) 」は、プログラミング言語Pythonに特化したオンライン学習サービスです。PyQを運営する株式会社ビープラウドは、2008年から開発の主言語にPythonを採択し、これまでの長年のPythonの知見をもとにサービスを提供しています。


PyQは月額2,980円のライトプランから、メールによるサポートが用意され、初心者でも機械学習・データ分析といった分野を実務にも通ずる環境・レベルで学ぶことができます。常に最新情報にアップデートされる600問以上の学習コンテンツをオンライン上でコードを書き進めることで、効率良く知識とスキルを積み上げることができます。

今回は株式会社ビープラウドのPyQ事業チームの皆様に、PyQのお話やPythonの言語特徴、そのほか企業内での特徴的な取り組みについて伺いました。

PyQ 提供の、オンラインながら実務同様のプログラミング環境

右から、代表取締役社長の佐藤治夫さん、PyQ事業チームの清原弘貴さんと大村亀子さん(以下敬称略)

− よろしくお願いします。まず、皆さんのサービス運営上の担当を教えていただけますか?

清原:こちらこそ、よろしくお願いします!役割としては、僕がコードからインフラまでシステム全般を担当しています。

大村:私は、主にPyQの演習問題の提案やカリキュラム作成などを担当しています。

佐藤:PyQ事業チームとしては清原と大村の2名ですが、学習コンテンツの問題内容を精査しクオリティを洗練させるのは、他の事業を担当している社内のメンバー全員で順番にアサインしながらレビューを行なっています。

大村:PyQは教育システムなので、当然カリキュラム全般に間違いや嘘があってはいけませんし、なるべくわかりやすい内容にもしたいので、社内の有識者に細かくチェックしてもらいます。

− とても丁寧にコンテンツを作成されているのですね。そのほかPyQの特徴はどういった点になるのでしょうか。

清原:オンラインのプログラミング学習サービスとして、開発者ながら驚くほど高機能なシステムが備わっていると自負しています。オンラインでありながらオンラインを意識しないレベルで、実務環境と同様のプログラミング環境が網羅されている作りになっています。

例えば、機械学習の作業環境で使用するJupyterNotebookが動くので、学びをそのまま業務に使える構成ができています。また当然のようにターミナルが作動し、サーバーを起動しアクセスでき、リロードすれば復活するため安心してさまざまな失敗ができます。これは意識して注力してきました。

大村:また、Webアプリをブラウザ起動し動かせる点もとても気に入っています。例えば書籍を参考に苦労してローカル環境で学習を進めていても、結局動かせず途中でやめてしまう場合もありますが、PyQはクリックひとつでWeb画面が表示されます。

学習コンテンツでは、文法以外にも業務で使うような問題を意識してなるべく取り入れています。「ファイルを一行ずつ読み取って集計する」「バッチ処理する」「unittestの利用」など、実務で使用頻度が高い問題を提供しています。

清原:コードを書き写す勉強法を「写経」と呼びますが、実際に手を動かすことがプログラマーへの近道と考え、写経スタイルをベースに開発してきました。当初は利用者に写経スタイルが受け入れられるか不安でしたが、実務にも通じる高いレベルまで学習が可能なため現在は利用者に受け入れられていると実感し、嬉しい気持ちとともに安心しています。

− PyQの特徴のひとつに、「他の利用者の回答を見られる」というUIが珍しいと思ったのですが、その設計にした狙い、また効果についてお話いただけますか?

清原:PyQを利用しながら、極力「自学自習」でプログラミングを学んでもらいたいのですが、自学自習では誰しも『本当にこれで合っているかな?』『自分の知識・スキルに自信がもてない・・・』といった悩みをかならず感じます。その際に、他の利用者のコードを見ることで、『あ、俺の方がよく書けてるじゃん!』『なるほど、この書き方は勉強になるな』など感じてもらい、より学習の促進につなげたいと思いました。

この機能は個人ユーザーのみでなく、チーム利用する場合も同様に互いのコードを見る・進捗を確認し合うため備えています。現在も、利用者によるコメント投稿のやりとりは発生していますが、より白熱する熱い議論のやりとりを多く作っていければと思っています。PyQが用意する演習問題だけでなく、コメントによる過去からの利用者の悩みが蓄積していくことで、さまざまな意見が集まるプラットフォームへと変わっていくとよいですね。例えば、Q&Aサイトのスタック・オーバーフローといったイメージです。

地方にいる方が独学するなかで、他の方の意見を知るのは難しいと思います。首都圏のように勉強会などがかならずしも身近に開催されていないでしょうし、書籍では温度感を知るのが難しいでしょう。今後も改善を続け、より相互サポートと学習の促進へつなげたいです。

− PyQを企画した経緯をお願いします。

佐藤:PyQをリリースしたのは2017年4月です。当時プログラミング学習者を人口ピラミッドに置き換えて考えた際に、まずプログラミング学習に入り込めない層への壁を感じました。当社では研修事業も行なっていますが地方にいる方には学習の機会を提供できていませんでした。そういった方がPythonを扱うプログラマーとして邁進していける場所がないよね、というところから問題提起が始まりました。

実はPyQプロトタイプを制作した当初、Pythonに限定せず、例えばPHP、JavaScript、HTML、SQLなど他言語含め幅広いスキルを学べるオンラインサービスを想定しました。しかし、当社の強みは何か考え、Pythonにこだわったサービスにしました。

当社では10年間ずっとPythonを専門に開発業務を続けてきました。PyQは、これまで蓄積したノウハウを結集した、集大成とするサービスと位置付けています。Pythonを学ぶ手段は他にもいろいろあるとは思いますが、Pythonに関しては時間のかけ方が違いますし、今後も深くやっていきたいです。

Pythonの「開発生産性」と「保守性」の高さ

− Pythonの言語特徴を教えていただけますか?

清原:Pythonは他のプログラミング言語と比較して、「開発生産性」と「保守性」の高さが大きな特徴といえます。

開発生産性の高さは、基本的な標準ライブラリで提供されている機能が豊富にあり、インポートCSVなど、Python自体またはサードパーティ製のライブラリを利用した開発のしやすさが理由に挙げられます。

大村:これまで複数のプログラミング言語を使ってきましたが、私の経験では他言語の上級プログラマーのコードはとても読みづらく何をしているコードなのかわからない場合がありました。しかし、Pythonでは扱った当初からオープンソースのコードなども読みやすく、どういった動きをするのかわかりました。それだけでも生産性が高いといえますね。

清原:保守性の高さについては、言語として覚えるべき文法が少なく、人によってさまざまなコードの書き方になることを抑制しようとしてくれているからです。

言語の思想として、ひとつのやりたいことに対しひとつの書き方で提供しているので、基本的に書く方法が少ない作りになっています。そのため、他の言語と比較すると、いろいろな人がプログラミングのコードを書いてもほぼ同じ書き方に落ち着いていくといえます。「なぜこのコードになるのだ?」といったマジックが少ないですね。

− PyQのほか、ソフトウェア教育事業として法人向けにPythonの対面研修も行なっていますが、この事業による経験・ノウハウもPyQへ反映されていますか?

清原:僕は研修講師もしていますが、理解が難しい定番の箇所があります。例えば、変数やif文は伝わりやすいですが、for文やループは難しいと感じる方が多いです。伝わりづらい箇所は、暗黙知的には形式知化的にもPyQへ反映しています。また、PyQユーザーにメールサポートや問題文を作成している際に、どう説明すればよいか体感として理解できており役立っています。

大村:清原が感じるような初心者が間違う頻度の高い箇所や解説方法を研修講師から教えてもらい、PyQ内にヒントとして追加し、メールサポートで利用者に伝わりづらい際には説明表現の参考にしています。最終的には、メールサポートが必要ないほど理解しやすい問題内容へブラッシュアップし、誰でも悩まず勉強できる内容にしたいですね。

ある瞬間、急速に理解が進むプログラミングの「学習曲線」

− メールサポートでは、さまざまな質問が寄せられそうですね。

大村:技術的な質問だけでなく、ある意味人生相談にちかい内容もありますね(笑) 「こういうことをプログラミングでやってみたいのですが、どういった勉強を、どれほどすればよいでしょう?」「どういう道に進めばよいでしょうか?」「これから勉強するならどういった分野でしょうか」といったお悩み相談もありました。

女性利用者からのメールでは、出産・育児などライフイベントにより仕事を辞めたあと再び戻ることが困難との悩みの声をいただくことがあります。PyQは、どこでもどなたでも勉強できるので、例えばSEのキャリアを辞めてしまった主婦の方が再びエンジニアとして業界に復帰するステップに利用していただきたいと思っています。

私自身、当社への入社以前に、育児をしながら個人事業主として在宅で働いていた期間もありました。子どもが元気であれば、育児とプログラミングを交互に行うことも可能です。現在もリモートワーク制度を利用し、子どもの夏休みシーズンなどはオフィスには出社していません。昔より徐々に環境は変わってきているので、出産を経験した女性エンジニアの方が増えたらと思います。

清原:プログラミング学習を始める動機に、「そういう働き方をしてみたい」と思ってもらってもよいかもしれませんね。特にソフトウェアの世界は、リモートワークや個人事業主といった働き方がしやすい分野だと思います。

メールでのお問い合わせといえば、PyQの利用を検討される方から「プログラミングを学習するうえで、数学の知識があった方がよいでしょうか?」というご質問が寄せられることもあります。多少はプログラミングを学習するうえでメリットはあるかもしれませんが、プログラミングが身につく・学びやすいことは一切ありません。例えばスポーツは生まれもった体格や筋肉の質によって向き不向きがありますが、プログラミングにはそのようなハードルはないのがよい点ですね。

佐藤:プログラミングには「学習曲線」があり、とある瞬間に学んできたことが繋がり急速に理解がすすみます。そのポイントに到達するまで我慢し学習を継続できる方がプログラミングスキルが伸びる方といえます。

実はプログラミングはそれほど難しいものではなく、結局はそこまで継続できるか・がんばれるかどうか、本人がプログラミングをできるようになりたいと本気で思っているかどうかの話だと思います。

− そのポイントにたどり着けるかどうか、ということですね。そのために注意・工夫した方がよい点はありますか?

清原:学習開始直後は、スタートダッシュのようにある程度集中し勉強する時間を設けた方がよいと思います。

佐藤:その時点では理解できないことばかりだと思いますが、そこから継続することで、先ほどの「学習曲線」により理解が急速にすすむポイントへとつながります。

小さなステップの積み重ねによる学習継続

− 学習を継続させるために工夫しているpyQの点はありますか?

佐藤:自学自習で進められる仕掛けのひとつに「関連クエスト」機能があり、問題内容によって関連ある以前の問題へスムーズに戻れます。書籍だと前に読んだ箇所がどこにあるか探す必要がありますが、この機能によりすぐに戻ることで思考が途切れない仕掛けになっています。

清原:カリキュラムが進むにつれ上がる難易度をなるべく小さくするようにしています。小さなステップを踏んでもらいながら、かつ何回も過去に学んだ内容を使って復習できるようにしています。

大村:ただ、全体のなかで、問題が急に難しくなるところがまだあるので、より噛み砕き伝わるように改善したいです。サービスにあらたにコンテンツをつぎつぎと追加させることができるのがオンライン学習の利点でもあるので 解説に図や動画を加えテキストの説明も増やしていきたいです。

− 利用者の目的には転職やスキルアップに利用される場合などさまざまあるかと思いますが、これまで耳にされたなかで、どういった学習目的の方がいらっしゃいましたか?

大村:北海道在住で、投資の分析を目的にプログラミングを勉強したいと利用された方がいらっしゃいました。地方在住で東京のプログラミングスクールや勉強会に通えないため、PyQを利用してくださっている方はいますね。

清原:本業がありながらセカンドスキルとしてプログラミングを勉強したい方もいます。例えば、飲食業の方が自身の店舗で売上の集計に活用したいという目的や、農業に携わる方が閑散期に行う別の仕事ためにプログラミング学習をしたい方がいらっしゃいました。

僕はもともと、「プログラミングをやるぞ!」と思い学習を続けてきたタイプですが、さまざまな人がプログラミングをするのはすばらしいと思います。こういった理由を耳にすると、なおのことオンライン学習形式の重要性を実感します。

− 利用者のなかで、途中にプランを変更される方はいらっしゃいますか?

清原:現在人気なのはライトプランですが、他のプランへ変更し継続してくださる方も多くいらっしゃいます。

プランをアップグレードするだけでなく、逆に上位のメンタープラン(メンターがつくほかチャットによるサポートや課題のレビューといったオプションが付属)を利用されていた方が、2~3ヶ月ほど集中して学習し当初の目標とされていたWebアプリを制作した段階でスタンダードプランに降りるパターンもありました。

プランのグレードは落ちた形ですが、僕たちとしてはある意味無事目標を達成し卒業された認識で、それも退会でなく引き続きPyQを利用し学習してくれたので嬉しい想いになりましたね。

「楽しい」から「できそう」。「できそう」から「作りたい」

− プログラミング学習を始める方には、単純に「プログラミングができたら格好いいから」といった動機の方もいるかと思います。そのように「こんなサービスを作ってみたい」といった具体的な目標がない段階の方には、例えばどういった言葉をかけ、本気でがんばれるよう導かせますか?

清原:まずプログラミングを楽しいと感じてほしいですね。明確な目標がなくとも、自分で打ったプログラムが動いたときに、「あれ、俺プログラミングができる!なんだ、俺でもできるじゃん!」と思ってほしいです。

たとえ勘違いでも「プログラミングができそう」と一度頭のなかで思えれば、普段の生活のなか困ったことや悩んだことに「こんなものを作れば解決できるのでは?」「プログラミングで作りたい。・・・よしやろう!」という気持ちになっていきます。その先には、「あれ、これはビジネスになるのでは?俺もできそうなのでは??」と、つぎつぎに発想も発展していきます。

したがって、まず「やった、動いた!楽しいなぁ。俺でもできそうだ」と思ってもらいたいですね。それさえあれば、なりたい自分ができてくると思います。

PyCon JPで感じた反響の高さ

− 国内最大級のPythonユーザー交流イベント「PyCon JP」では、PyQブースの出展やチュートリアルの担当をされたとのことですが、当日の反響や様子はいかがでしたか?

清原:PyQブースに関しては本当に多くの方にお越しいただき、とても嬉しかったです。僕たち含め4名でブーススタッフをしましたが、「全ブースのなかで最も賑わっていた」とイベント関係者からいわれたほど、常に全員が対応し休憩時間もとれないほどでした。

佐藤:すでにPyQの利用されている方にも立ち寄っていただきましたが、直接お話しするなかでさまざまなニーズを拾うこともできました。現在はそれをどうサービスに生かしていけるか、反映した施策をはじめているところです。

− チュートリアルはどうでしたか?

清原:こちらもブース出展同様、例年担当させてもらっていますが、今回はスクレイピングとローカルのパソコン上で動作する画像処理のプログラムを作成する2種類のルートを用意し、参加した皆さんには勉強になったと喜んでもらいました。

大村:ランチも皆さんと一緒に過ごし、全員で自己紹介から普段どういったことをされているかなどざっくばらんにお話しができました。こういう方たちがPythonに興味を持ってくれている、PyQを利用してくださっているのだと肌感として感じられてよかったです。

三者三様のプログラミングとの出会い

− 少し脱線してしまうのですが、みなさんのプログラミングに触れたキッカケや経緯を教えてもらいますか?

大村:私は19歳頃にゲーム会社での事務のアルバイトではじめてプログラミングに触れました。日常的に徹夜作業をする会社だったのですが、私自身は深夜帯に時間を持て余すことが多かったので社内プログラマーにAccessやコーディングを教わるようになりました。その会社は別事業でプログラミング講習会もやっていたのですが、いつしかその講習で講師を行うようになり、という流れです。

清原:大村さんは、その時代から人にプログラミングを教えるPyQの流れがあったんですね(笑) 僕はもともとゲームが好きで、12~3歳頃から自分で作りたいとも思うようになり、ゲーム制作のためプログラミングを始めました。

初期はC言語でオセロ作りや、DirectXを使いC++で2Dゲームを作っていましたが、その頃から、「プログラミングって、すごい!!」と思っていました。それからWebやオープンソース文化に興味を持ち、現在のWeb系にたどり着いた経緯です。

佐藤:僕が大学生の頃はネットが世に広まり始めたころだったのですが、これから仕事の世界で成果を出し生き残るためにはITについて知らないとダメだと思い、ITを根本から理解できるようになるため就職活動時からプログラマー・SE職として入社できる企業に応募しました。プログラミングへのロマンよりも超実利主義な入り方でしたね(笑)

当時は、30歳まで死ぬほどプログラミングをやり、30歳を過ぎたタイミングでビジネスを起こそうと計画していました。そのため、内定した企業のなかから大企業を選び、サラリーマンとはなんたるか・しがらみとは何かっていうのを間近で見てやろうと思い入社しました(笑)

株式会社ビープラウドの取り組みから参考にする、自学自習のコツ

− 御社では「週5日完全リモートワーク可能」といった取り組みもされていますが、多様な働き方ができる環境では逆にセルフマネジメント力が必要かと思います。それはある意味、自学自習の継続にも通じるポイントと思うのですが、集中力を保つ方法など参考になるチップスがあれば教えてください。

清原:エンジニアは頭脳労働なので、「ちゃんと寝て、ちゃんと起きる」ことが大事ですね。これは仕事だけでなく勉強に関してもチップスではないかと思います。

他は「場所を切り替える」ことです。コワーキングスペースも素敵だと思いますし、カフェで作業するなども同様です。当社にもカフェでリモートワークをするメンバーがいますが、これも大事なポイントかと思います。

大村:当社では業務ツールでSlackを利用していますが、チームメンバーへ最初にやるべきことを宣言する投稿をしています。やるといったことはやらねばという意識になります。また、タスクが予定よりも遅れた場合は、遅れていますと報告をします。毎日、わずかなことでも自分が何をしているのか、進捗状況はどうか、メンバーに伝えていくのが大事かと思っています。

社内の他プロジェクトでも、日毎に進捗を共有しあっているようで、例えば16時になったら現在の進捗と残りのタスクを申告しあい、18時までの残り2時間はその業務を集中してやろうと意識を向くよう工夫をしています。

− 個々人だけでなく、社内で共通の取り組みをされておりすばらしいですね。佐藤代表のブログ記事内に「主体的に仕事に取り組んでくれるメンバーがいて本当に助かる」という言葉をみましたが、そのように主体的に動ける方々に共通する行動特徴はありますか?

佐藤:採用面接の段階で、必ず「これからどうなりたいですか?」「何をやりたいですか?」と質問するようにしていますが、その答えから、『成長したい。変わりたい』という気持ちを持っている人を採用していることが関係しているかもしれません。

社員採用はスキル・実力に判断基準に重きを置いていると思われるかもしれませんが、伸び代があるかどうかを判断しています。「これだけのやる気があるから将来はこれくらい成長する人材になりそうだ。じゃあうちでもやれそうだ」といった感じで採用しているところがあります。

プログラミング学習者に身につけてほしい習慣・マインド

— プログラミング学習を始める方に、プログラミングのスキル以外にも身につけてほしい習慣やマインドなどはありますか?

大村:自分で考え動くことが大事かと思います。この業界では、「アサインをボーッと待ち、人にいわれたことだけをやる」という姿勢は向いておらず、上司・先輩に指示されるまで、何をすればよいかわからないままの状態でいる姿勢ではちょっと・・・といえます。

例えば、社内メンバー全員が一斉にノロウィルスにかかり自分しか出社しなかったとしても、わからないなかで何とか業務対応をする気持ちになるかですね。いえ、もちろん実際は他の人を頼り、協力を仰いでなんとかすることにはなると思うのですが(笑)

清原:「勉強すること」そのものを好きになってほしいですね。ソフトウェア関連に限らず、例えば財務会計・簿記、資産運用、経営・ビジネス、リーダーシップなど、新しいことへの挑戦・学びを大事にしてほしいですし、そういう人を応援したいです。

佐藤:清原と同じく、「学んでいくこと」でしょうか。いわれた仕事をするのは昔の話で、現在は新たな価値を創り出さなくてはいけない時代になってきていると思います。そのなかで、学ぶことができず古い知識のままでいると、自分ができることは限られ、さらに年々少なくなってしまいます。するとどんどん仕事もつまらなくなり、負のループに陥ってしまいます。

自分の特徴を生かす新しい知識や情報を身につけることで、自分にできることが急速に増え楽しいと感じられるようになります。そのベースになるのが、学んでいくことです。逆に、価値を創り出せるか、と考え学び続けるスタンスでいれば、楽しい仕事ができるようになるのではと思います。

現在、書籍やWebなどどこにでも情報は転がっており、学ぶことができます。専門家に頼り問題をクリアしてもらう時代から、必要なことをその都度新しい知識を学んで成果を出すことが今後の主流になると僕は思っています。PyQ事業チームは特にそういう仕事のやり方ができていますしPyQがよいサービスになった理由でもあります。

清原:PyQチーム含め当社全体のマインドとして、自分たちで輪読会や勉強をしてでもやろうという文化があり、よい点とも思っています。僕も、製品開発などで新しいことにチャレンジする必要があるとき、「詳しくないから」といいたくなりますが、自分で勉強してなんとかしようと思えるようになりました。

プログラミング学習初心者が参加しやすいイベントの探し方

− 御社は別事業にエンジニアイベントプラットフォームサービス「connpass(コンパス)」の運営・提供もされていますが、例えばプログラミング初心者に向いているイベントの見つけ方やポイントがあれば教えてください

大村:参加しやすい点として、終了後に会場で懇親会の開催も予定されているイベントがよいのではないでしょうか。知り合いがいないなかイベント終了後に居酒屋に移動して二次会に参加するのは不安感が強いと思いますので。

主に東京で勉強会を主催している「Start Python Club」では、生ビールを注ぎ放題で飲みながらLT(ライトニングトーク)を聴くことができるので、すばらしい会だと思います(笑) また「Python入門者の集い」は、イベント終了後に、その場でビールを飲みながら交流ができます。したがって、懇親会をどこで行うのかチェックしてみてはいかがでしょうか?

また女性の方へのオススメとして、「PyLadies」という女性 Pythonista (=Python利用者)向けのコミュニティがあります。ワンコインの参加費でおやつを食べながらお話しする交流会など開催されていますので、行きやすいかと思います。

当社が主催する「BPStudy」という毎月1回開催しているWeb系勉強会では、キャッチーな話題を登壇者の方から聞けるので、深く考えず気軽に参加できると思います。

佐藤:イベントと一口にいっても、講義形式や、「ハッカソン」といわれる参加者でプログラミングをする集まりもあれば、「もくもく会」というWebに関連した作業を各自おこなう集まりなどさまざまです。プレッシャーがかかりにくい雰囲気のものを選んでもらえればと思います。

プログラミングのすばらしさ・楽しさ

− 最後に、プログラミング学習を検討している方や始めたばかりの方にメッセージをお願いします。

清原:伝えたいことはたくさんありますが、ひとつあげるなら、「ソフトウェアはすばらしいので、がんばってほしい」ということです。僕は、ソフトウェアやテクノロジーは本当にすばらしいと思っています。目の前のパソコンを使うだけで、誰しもさまざまな問題を解決し世の中を幸せにできる価値を生み出せます。それってすごいことです。

例えば、僕が「船を作りたい」と思っても、数億円〜数百億円が必要であり、とてもひとりでは造船はできませんが、ソフトウェアはひとりでも思うものを作りあげることが可能です。本当にすばらしいので、がんばってほしいです。

大村:プログラミング学習を開始しても数日でプログラマーになることはできませんが、プログラミングに費やした時間がそのまま能力として身につき、時間をかければかけるほどプロフェッショナルに近づいていけます。

プログラミングの世界には有名な人が山ほどいるので、自分と比較し落ち込む瞬間もあるかもしれませんが、学習を継続していけば誰しも結構詳しい人になることはできます。なので、辞めずに続けてほしいです。はじめはゆっくりとした歩みであっても、地道にやっていけば目標に近づいていくので、諦めずにプログラミングに挑戦してもらえれば嬉しいです。

佐藤:プログラミングを「理解できた」とわかった瞬間、楽しいので、そこまで粘り強くがんばってやってほしいですね。

【 PyQ 】

URL:https://pyq.jp/

Twitter:https://twitter.com/pyqjp

Facebook:https://www.facebook.com/pyqjp/

【 企業情報 】

株式会社ビープラウド:http://www.beproud.jp/

Twitter:https://twitter.com/beproud_jp

Facebook:https://www.facebook.com/beproud.inc/

株式会社ABCD Partners
〒100-0004 東京都千代田区大手町1-7-2 東京サンケイビル27階
メール:edulio@abcd-p.com
Copyright © ABCD-Partners. All Rights Reserved.