TECH PLAY

株匏䌚瀟ラクス

株匏䌚瀟ラクス の技術ブログ

å…š941ä»¶

はじめに こんにちは、 id:FM_Harmony です。 Rakus Developers Blogでは5回目の投皿です。 前回の蚘事はこちら↓ tech-blog.rakus.co.jp 今回も前回ず同じくビアバッシュの補足ネタです。ビアバッシュ...?ずいう方は コチラ  テヌマは「Mattermost」に぀いおです。 はじめに Mattermostずは Mattermost Serverの構築 事前準備 デヌタベヌスの準備 Mattermost Serverの構築 Mattermostを觊っおみる Mattermostの初期蚭定 Webhookを䜿っおみる おわりに 参考 Mattermostずは MattermostずはSlackに䌌た オヌプン゜ヌス のチャットツヌルです。 倧きな違いはSlackが クラりド 型のサヌビスであるのに察し、 Mattermostはオンプレミス型 のサヌビスであるこずです。 そのため、瀟内情報を倖郚に保存したくないずいう理由で、チャットツヌルずしおSlackではなくMattermostを遞ぶこずもあるようです。 ↑Mattermostの公匏ペヌゞにもSlackずの違いが説明されおいたす。 今回はそんなMattermostのサヌバを構築しお色々お詊ししおみた話です。 Mattermost Serverの構築 それではMattermost Serverの構築に぀いお説明したす。今回は CentOS7.1 ぞ Mattermost Server v4.4.0 のサヌバを構築したした。 たた、デヌタベヌスサヌバずMattermost Serverは同䞀のマシンに構築したす。 構築時の手順は参考リンク内の Installing Mattermost on RHEL 7.1 を参考にしたした。 なお、今回の手順はあくたで手元での怜蚌を目的ずしたものであるため、セキュリティ等の考慮を省いおいる郚分もありたす。 そのため、 本番構築時には手順をそのたた適甚すべきではない こずにご泚意ください。 事前準備 事前にパッケヌゞは最新のものにしたす。 [hoge@huga ~ ]$ yum update デヌタベヌスの準備 Mattermostではナヌザや投皿を保存するデヌタベヌスずしお、 PostgreSQL か MySQL を䜿うこずができたすが、今回は PostgreSQL v9.4を利甚したす。 たた、 PostgreSQL サヌバの構築および初期化は完了しおいるものずしたす。 たず、利甚するデヌタベヌスを䜜成したす。(postgresナヌザは PostgreSQL の初期化時に䜜成されおいるはずです) [hoge@huga ~]$ psql -U postgres postgres=# CREATE DATABASE mattermost; 次に䜜成したデヌタベヌスをMattermostが䜿うためのナヌザを䜜成し、 mattermost デヌタベヌスに関する党おの暩限を䞎えたす。 ナヌザのパスワヌドは適圓に決めおください postgres=# CREATE USER mmuser WITH PASSWORD 'xxxx'; postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser; postgres=# Â¥q 最埌に postgreSQL の接続蚭定を倉曎したす。 postgresql.conf を線集しお listen_addresses を党アドレスに、 pg_hba.conf を線集しお localhost から接続する際の認蚌方匏を trust にすれば基本的には問題ないはずです。 Mattermost Serverの構築 では、いよいよMattermost Serverを構築したす。 ずりあえず、 /usr/local/src 盎䞋にむンストヌルしたいバヌゞョン今回はv4.4.0のMattermost Serverをダりンロヌドしたす。 [hoge@huga ~ ]$ cd /usr/local/src [hoge@huga src ]$ wget https://releases.mattermost.com/4.4.0/mattermost-4.4.0-linux-amd64.tar.gz 次に、ダりンロヌドしたファむルを解凍し、 /opt 盎䞋に配眮したす。 その埌、配眮した ディレクト リの盎䞋に data ディレクト リを䜜成したす。 [hoge@huga src ]$ tar -xvzf mattermost-4.4.0-linux-amd64.tar.gz [hoge@huga src ]$ sudo mv mattermost /opt [hoge@huga src ]$ sudo mkdir /opt/mattermost/data そしお、Mattermostを管理するためのシステムナヌザを䜜成し、先ほど配眮した mattermost ディレクト リ以䞋のファむル・ ディレクト リをシステムナヌザが曞き蟌み可胜にしたす。 [hoge@huga src ]$ sudo useradd --system --user-group mattermost [hoge@huga src ]$ sudo chown -R mattermost:mattermost /opt/mattermost [hoge@huga src ]$ sudo chmod -R g+w /opt/mattermost 最埌にMattermostがデヌタベヌスず接続する際の蚭定を行えば䞻な䜜業は完了です。 /opt/mattermost/config/config.json を以䞋のように線集したす。 "DriverName" を postgres ずする。 "DataSource" を "postgres://mmuser:(mmuserのパスワヌド)@localhost:5432/mattermost?sslmode=disable&connect_timeout=10" ずする。 ここたで完了すればMattermostを起動するこずができるはずです。 以䞋のコマンドからテスト起動を行えたす。 [hoge@huga src ]$ cd /opt/mattermost [hoge@huga src ]$ sudo -u mattermost ./bin/platform 起動に倱敗する堎合は手順を芋盎しおみおください。 たた、本来はMattermost Serverをサヌビス化した方がMattermostを起動する際に䟿利なのですが、今回は割愛させおいただきたす。 Mattermostを觊っおみる Mattermostの初期蚭定 初期蚭定を倉曎しない堎合、先ほどテスト実行したMattermost Serverは8065ポヌトでアクセスを埅ち受けたす。 8065ポヌトぞアクセスするず、䞋蚘のような管理者の蚭定画面が衚瀺されるかず思いたす。 管理者の蚭定を終えるず チヌム を遞択する画面に移りたす。 Mattermostでは チャンネル ず呌ばれるチャットが集たっお、チヌムを成しおいたす。 初期状態ではチヌムはありたせんので、 Create a new team をクリックしおチヌムを䜜成したす。 䜜成するず以䞋のような画面に移りたすが、これがMattermostのチャット画面です。 tutorialは適圓に飛ばしおください。 Webhookを䜿っおみる Mattermostは Webhook を利甚するこずで倖郚ず連携するこずができたす。 たずはMattermostがWebhookを利甚できるか蚭定を確認するために、チャット画面巊䞊のメむンメニュヌから System Console に移動したす。 次に、 System Console 内の INTEGRATINS > Custom Integrations を遞択したす。 するず、 Enable Incoming Webhooks , Enable Outgoing Webhooks , Enable Custom Slash Commands ずいうオプションがあるかず思いたす。 初期蚭定ではいずれも true のはずなので、今回はそのたたにしたす。 ↑System Console画面、今回は赀枠で囲った郚分をすべお true にしたす。 画面巊䞊のメむンメニュヌから Switch To (チヌム名) を遞択しお、チャット画面ぞ戻りたしょう。 その埌、再びメむンメニュヌから今床は Integrations を遞択したす。 するず、先ほど玹介した3぀の倖郚連携機胜の項目が遞べるはずです。 今回は䟋ずしお Incoming Webhook を利甚しおみたしょう。 3぀の項目の䞭から Incoming Webhook を遞択したす。 その埌、衚瀺された画面の右䞊にある Add Incoming Webhook を遞択したす。 するず、 Webhook の蚭定画面に移りたすので、それぞれ適圓な倀を蚭定しお Save を遞択したす。 蚭定が完了するずURLが衚瀺されたす。 Incoming Webhook ではこのURLに察しおリク ゚ス トを送るこずで、Mattermostにメッセヌゞを衚瀺するこずができたす。 ↑ Incoming Webhookの蚭定画面です。 詊しに以䞋のコマンドをタヌミナルから実行しおみたす。 curl -i -X POST -d 'payload={"text": "this is sample bot"}' (利甚する Incoming WebHooks のURL) するず、以䞋の画像のように「this is sample bot 」ずいうメッセヌゞが衚瀺されるはずです。 たた、蚭定を倉曎しおいない堎合、投皿者名に BOT ずいう衚瀺が出おいるはずです。 このように Incomming Webhook を利甚するこずで、倖郚のサヌビスからMattermostぞメッセヌゞの送信を行うこずができたす。 おわりに いかがでしたでしょうか。 駆け足になっおしたいたしたが、Mattermost Serverの構築手順ずWebhookに぀いお少しでもご理解いただければ幞いです。 Mattermostサヌバ構築の難易床はそれほど高くないず思いたすので、これからチャットツヌルを導入したいずいう方は、この機䌚にぜひMattermostを䜓隓しおみおはいかがでしょうか。 参考 Installing Mattermost on RHEL 7.1 CentOS7系の Linux サヌバにMattermost Serverを導入する手順に぀いお曞かれおいたす。 SlackクロヌンのMattermostを䜿っおみる - 倖郚連携線 -WebHooks、Hubot Mattermostで倖郚連携を行う方法に぀いお曞かれおいたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
id:radiocat です。今幎床はビアバッシュ掚進委員から䞀歩身を匕いおアドバむザヌ圹になりたした。 このブログでも䜕床か玹介しおいる ビアバッシュ ですが、このたび新しい運営メンバヌが遞抜されお、先日キックオフを行いたした。同じ䌚瀟の瀟員ずはいえ䟡倀芳は人によっお違うため、ビアバッシュをどのように掚進しおいきたいか、思い描くむメヌゞはそれぞれ違っおいるものです。はじめはお互いに手探り状態で意芋をすり合わせながらやりたいこずをたずめおいくこずになりたすが、そんな時に圹に立぀䟡倀芳を可芖化する手法が「ムヌビングモチベヌタヌズ」です。 ムヌビングモチベヌタヌズずは チヌムのメンバヌ同士でお互いの䟡倀芳を共有するためのワヌクショップです。手法の成り立ちや考案者に぀いおは埌述したす。 10皮類のカヌド モチベヌションの源泉ずなるキヌワヌドが曞かれた10皮類のカヌドがありたす。このカヌドを自分が䟡倀を感じる順番に䞊べ替えお共有したす。 やっおみよう テヌマの認識合わせ たずは䜕に察しおの䟡倀芳に぀いお考えるのか党員でしっかり認識合わせをしたす。今回は「開発郚のビアバッシュを掚進しおいくうえで䟡倀が高いず感じるキヌワヌド」ずしたした。 実践タむム 5分10分皋床で時間を決めお䞊び替えたす。あたり深く考えず盎感的に䞊び替えたしょう。 共有タむム 1人ず぀結果をチヌムに共有したす。なぜそのキヌワヌドを遞んだのか理由も説明しお䟡倀芳の理解を深めたしょう。 今回はメンバヌそれぞれが遞んだトップ3を発衚したした。このチヌムは「関係性」ず「受容」を遞んだメンバヌが倚いずか「名誉」や「暩力」は誰も遞ばなかったずいったコミュニケヌションを取っお䟡倀芳を共有したした。 たずめ ビアバッシュのような瀟内むベントの運営ではルヌルや手順が现かく決たっおいるわけではなく、むしろ集たったメンバヌの個性や考え方に委ねられおいる面もあるので、このように手軜に䟡倀芳を共有できる手法はずおも有効です。 たた、私の所属する開発チヌムでは毎月1回党員でこれを行っお前月からのメンバヌの䟡倀芳の倉化も远いかけおいたす。「最近新しい技術に取り組んでいるので奜奇心を遞んだ人が増えた」ずか、「難しい課題に取り組んでいるのでゎヌルの重芁性を感じおいる」ずいった、チヌムの状況の倉化に応じたメンバヌ同士の䟡倀芳の倉化にも気づけたす。 最埌に、実践しするうえでのポむントを3぀玹介したす。 気軜に䞊べる 結局どれも倧事な蚀葉なのです。時間をかけずにその瞬間の䟡倀芳をさらけ出したしょう。もちろん隣の人のカヌドを芋おはいけたせん。 蚀葉の捉え方も共有する やっおみるず蚀葉の捉え方が人によっお違うこずにも気づきたす。元々英語で䜜られたカヌドなので、「受容」や「熟達」など、日本語だず少しむメヌゞしにくい蚀葉もありたす。しかし気にする必芁はありたせん。「自分はこう思っおこれを遞んだ」ずいう考えを共有するこずが倧事です。どうしおも気になる堎合はみんながどういう意味で捉えおいるか聞いおみたしょう。 楜しむ お互いに䟡倀芳を共有しあうので、 堅苊しい 雰囲気だず発蚀しづらくなりたす。無蚀でカヌドを䞊べるのではなく、楜しくワむガダしたしょう。 参考Management 3.0 ムヌビングモチベヌタヌズはManagement 3.0のプ ラク ティスの1぀です。 management30.com Management 3.0は 公匏サむト で以䞋のように説明されおいたす。 オランダ出身のペヌガン アペロJurgen Appeloの䞖界80ヶ囜で展開しおいる新しい むノベヌション ずリヌダヌシップそしおマネゞメント運動です。 近幎マネゞメントの領域で泚目されおいる自己組織化や 心理的 安党性などに぀いおも蚀及されおおり、 アゞャむル 開発の珟堎でも手法が䜿われおいるようです。
こんにちは sts -250rrです。 今回も前回の蚘事に匕き続きAR技術の玹介になりたす。 tech-blog.rakus.co.jp 前回は簡単にARを䜓隓する。たででしたので今回は Software Design のコラムにあったARアプリARKittenを䜜っおみたした。 gihyo.jp ちなみに Github の リポゞトリ でサンプルを公開しおくださっおいたすので、こちらでたず詊しおみるのも良いかもですね。 では、やっおいきたしょう。 猫、ARに立぀ カメラを向かぬ猫 たずめ 実録ビルドできない事件簿 猫、ARに立぀ 前回はARの䞖界で平面を怜出し、キュヌブを蚭眮するずころたででしたが、それではあたりに味気ないので猫を配眮するこずにしたす。 ※AssetStoreからARKitをむンポヌトする郚分は割愛したす。 UnityのAssetStoreでは、3Dのモデルデヌタを賌入するこずもできたす。 ここから猫のモデルを取埗しおいきたいずころですが、残念なこずにARKittenで䜿甚する猫のモデルは䜜成者の諞事情により、AssetStoreからダりンロヌドできなくなっおしたいたした。 珟圚は䞊蚘の Github からモデルデヌタを取埗しおくるしかないようです。 Kitten ディレクト リを プロゞェクト名/Assets 配䞋に栌玍しおおきたしょう。 単玔に猫を平面に远加するだけでは、拡匵珟実らしくなりたせん。 それはなぜか、ズバリ 圱がないから です。 そこで今回䜜成するアプリでは UnityARShadows ずいうサンプルを元に䜜成しおいきたす。 このサンプルであれば平面を怜出した郚分に3Dモデルの圱を萜ずすこずができたす。 UnityARShadows には Cube の代わりに HitPlayer が存圚しおいたす。 これを Assets/Kitten/Prefabs/KittenNPC に眮き換えたす。 これだけでは iOS の画面をタップしおも猫が平面に配眮できないので スクリプト を組み蟌んでいきたす。 KittenNPC を遞択しむンスペクタヌりィンドり右偎に衚瀺されおいる蚭定窓の蚭定を以䞋のようにしたす。 ここで䞀床ビルドしお、画面をタップしお芋お猫を配眮しおみたす。 猫に圱が぀いおいたり、アニメヌションが定矩されおいるので、たるで猫がそこにいるようです。 カメラを向かぬ猫 単玔に猫を配眮するだけでは、堎所によっおはそっぜを向かれおしたいたす。 猫を配眮した時にい぀もこちら偎カメラを向いおくれるように し぀け スクリプト を远加しおいきたす。 ここでは猫がカメラを向いおくれる時の凊理の流れを解説したす。 猫䜍眮の取埗 タップで配眮した猫の䜍眮を取埗したす。 このたたでは猫は初期の向きを向いおしたいたす。 3Dグラフィックスの䞖界では向き回転ずいう情報は クオヌタニオン ず呌ばれるもので保持されおいたす。 カメラ䜍眮の取埗 猫ずカメラの䜍眮座暙を比范するこずで、猫がどの方向を向けば良いのかがわかるようになりたす。 カメラの方に向かせる 猫ずカメラの䜍眮の差から、猫がどれだけ回転すれば良いのかを蚈算したす。 この蚈算は3Dを扱うラむブラリであれば、倧抵3次元ベクトルを䞎えおやれば蚈算しおくれる関数がありたす。 ARKitであれば、 Quaternion クラスの LookRotation クラスがその䞀぀に該圓したす。 ※ スクリプト の内容はサンプルコヌドを眺めおみおください。 スクリプト が完成したら再びビルドしたしょう。 そこには埓順にこちらを向いおいる猫が䜇んでいるはずです。 たずめ 今回は前回ご玹介したARKitのサンプルプログラムを䜜っおみたした。 猫が配眮され、それを眺めるたでしかできたせんが、本来そこにいないはずの猫が画面を通しお存圚しおいる感芚はたさしく 拡匵珟実 です。 次回も匕き続きARKitネタをお送りしたいず思いたす。 お楜しみに、 実録ビルドできない事件簿 iPhone の iOS をアップデヌトしたばかりにビルドできなくなっおしたった・・・・ ゚ラヌ内容を芋おみるず、 「iOS11.3のデ バむス サポヌトファむルがない」ずいうこずだそうです。 みなさん結構起きおしたっおいるようで、解決策を調べおみたらすぐに出おきたした。 今回は以䞋の蚘事を参考にさせおいただきたした。 iOSをアップデートしたために実機でビルドができない - Qiita
ラク スのメヌルディヌラヌの開発を行っおいる@nerobluebrosです。 5月9日にメヌルディヌラヌのバヌゞョン12.2をリリヌスしたした。 今回はそのメヌルディヌラヌバヌゞョン12.2ずリリヌスに぀いおの玹介をしたす。 バヌゞョン12.2では33の機胜ず修正をリリヌス リリヌスは耇数回に分割しお実斜 おたけ バヌゞョン12.2では33の機胜ず修正をリリヌス 12.2では倧小合わせお33の機胜ず修正をリリヌスするこずが出来たした。 䞻な機胜ず修正は以䞋のずおりです。 1.添付ファむルセキュリティオプション機胜  ・添付ファむルの拡匵子ず実際のファむルの内容をチェックしたす  ・ナヌザ単䜍で添付ファむルのダりンロヌド可吊をコン トロヌル できたす  ・期限付きのURLから添付ファむルのダりンロヌドができたす  ・添付ファむルのみを察象に自動削陀できたす 2.アドレス入力欄のUI倉曎などUI改善 3. ミドルりェア を Postfix にするこずでSTARTTLSに察応したす 4.メヌル本文を RFC に準拠したした 5.䞍具合修正 リリヌスは耇数回に分割しお実斜 以降はリリヌスに぀いお説明したす。リリヌスは耇数回(耇数日)に分割しお行いたす。 理由は以䞋のずおりです。 ・メヌルディヌラヌのサヌバは耇数台あり1日では終了しない ・メヌルディヌラヌ内郚の ミドルりェア の倉曎があり、より慎重におこなう必芁があった リリヌス䜜業は深倜に実斜したす。 それは リリヌス䞭にメヌルディヌラヌのサヌビスが停止するから です。 「サヌビス停止が発生するお客様がメヌルディヌラヌを利甚できない」ずいうこずを意味したす。 ですので、お客様の日垞業務に圱響しないように、 倜間バッチが開始される朝の4時たでにリリヌス䜜業を終了しなければなりたせん。 そのため、リリヌス䜜業によるサヌビス停止時間を極力短くするために、準備䜜業などは事前に実斜しおおきたす。 リリヌス䜜業は「できるだけ遅い時間に開始」し「できるだけ早く終了」する時間ずの戊いになるので倧倉な䜜業です。 リリヌスに぀いおはたた別の蚘事で詳しくご玹介したす。 なお2回目は5月30日の深倜を予定しおいたす。 以䞊でメヌルディヌラヌの12.2の機胜ずリリヌスに぀いおの説明を終わりにしたす。 おたけ 珟圚 ラク スでは新卒採甚ず 䞭途採甚 を行っおいたす。 サヌビス開発に少しでも興味がある方は䞋蚘採甚サむトをご芧になり、応募をおねがいしたす。 ラク ス採甚サむト http://fresh-recruit.rakus.co.jp/
こんにちは。゚ンゞニアのmickey-STRANGEです。 前回は めんどくさがりによるめんどくさがりのためのスマホアプリ開発に぀いおお話したいず思いたす。 なんお蚀いながら、党おをJSでごりっず無理やり解決する方法をご玹介したした。 tech-blog.rakus.co.jp はい、タむトル詐欺です、すみたせん。冷静に考えお、この䜜りのWebペヌゞが䞖の䞭にない珟状、これよりも簡単な方法が必ずあるはずなんですよね 圓時サンプル曞きながらコレめんどくさいな、なんお思っおないです 。 今回はタむトル詐欺ではなく、Herokuずいうサヌビスを甚いおWeb アプリ開発 の環境構築が本圓に簡単に出来おしたう方法をご玹介いたしたす。 Herokuぞろくずは Herokuで環境構築 php+postgresアプリの䜜成 デプロむ゜ヌスの指定 ブラりザからアクセス 【補足】phpからpostgresの接続 終わりに Herokuぞろくずは Herokuずは、PaaSPlatform as a Serviceの1皮で、アプリケヌションの底にあるプラットフォヌムそのものを、Webを通じお提䟛しおくれるサヌビスです。 今回の蚘事では、Heroku䞊で php +postgresをプラットフォヌムずするWebアプリの構築、が目的ずなりたす。 Herokuで環境構築 Herokuを甚いお、ずいうこずなのでHerokuのアカりント登録は完了しおいる前提で説明を始めたす。䜿甚するのは以䞋の2サヌビスですので、アカりント登録ただだよ、ずいう方はご準備ください。 Heroku jp.heroku.com GitHub github.co.jp php +postgresアプリの䜜成 たず最初に、Heroku䞊にアプリケヌションを䜜成したす。ログむンしお右䞊 New から Create New App 、もしくはアプリケヌションが1぀もない堎合は画面真ん䞭にある Create New App をクリックしたす。 アプリ名を入力し、 Create app をクリックしたす。これでアプリケヌションが䜜成できたした。 ずいっおも、名前ず枠組みだけの状態なので、これから php +postgresで動くアプリケヌションだずいう蚭定をしたす。 アプリケヌションのペヌゞから Settings → Add buildpack の順にクリックしたす。 立ち䞊がったポップアップの䞭で php を遞び、 Save changes をクリックしたす。 これで䜜成したアプリケヌションは php で動きたすよ、ずいう蚭定が出来たした。 続いおpostgresを蚭定したす。 Resources → Find more add-ons から Heroku Postgres を探しおクリックし、 Install Heroku Postgres をクリックしたす。 Heroku Postgres はアドオンですので、料金プランの遞択がありたす。ずいうず身構えおしたうかもしれたせんが、 Hobby Dev ずいう無料プランがありたすので、これを遞択したす。そしおpostgresを远加するアプリケヌションを遞択し、 Provision add-on をクリックしたす。 以䞊で䜜成したアプリケヌションを php +postgresのアプリケヌションであるずいう蚭定が完了したした。あずは゜ヌスをデプロむすればWebアプリケヌションずしお皌働する状態です。 デプロむ゜ヌスの指定 続いお、゜ヌスのデプロむ元の蚭定をご説明したす。 ゜ヌスのデプロむ元ずしお䜿甚するのが GitHub になりたす。 GitHub にデプロむ甚 リポゞトリ を䜜成し、盎䞋に index.php をpushしたす。 今回䜜成したファむルは以䞋のものです。 php +postgresが皌働しおいるこず、 php からpostgresに接続できおいるこずの確認が目的なので簡単なものです。 今回も GitHub ぞのpushは GitHub Desktop を䜿甚したした。盎感でぜちぜちできるデスクトップアプリはやはり匷いですね。 GitHub Desktop | Simple collaboration from your desktop ずはいえ、これで GitHub 偎の操䜜は終わりです。Herokuの画面に戻りたす。 Deploy → GitHub → Search ずクリックし、䞊蚘 index.php をpushした リポゞトリ の隣にある Connect をクリックしたす。 これで GitHub リポゞトリ からデプロむする蚭定が完了したした。Herokuから GitHub ぞの接続が初めおの堎合は、連携をするかどうかの確認が出たすので、衚瀺されるずおりに進めおいけばOKです。 最埌に、 Enable Automatic deploys ず Deploy Branch をクリックしたしょう。 Enable Automatic deploys は自動デプロむの蚭定です。ブランチを指定しお自動デプロむを有効にするこずで、そのブランチにpushされるたびに自動でアプリケヌションを最新の゜ヌスに眮き換えおくれたす。 Deploy Branch は手動デプロむのボタンです。アプリケヌションの蚭定ずデプロむ元の指定をしただけで、ただデプロむはされおいたせん。自動デプロむを有効にしたずしおも、初回だけは手動で行いたす。 ブラりザからアクセス これたでの手順で党おの準備が完了したした。実際に䜜成したアプリケヌションにアクセスしおみたしょう。 アプリケヌションのペヌゞの右䞊に Open app ずいうボタンがあるのでクリックしおみたしょう。 䜜成した index.php の通りに衚瀺されたした postgresのバヌゞョンも php から取埗出来おいるので getAttribute の代わりに SQL を発行しお動きを぀けおいけば立掟なWebアプリケヌションになりたすね。 個人的な感想ずしお、postgresが10.3ず最新に察しおphp5.6がツッコミどころに思えお仕方がなかったのですが、 php のバヌゞョンを指定する方法がちゃんず甚意されおいたす。画面から䜜っただけではデフォルト蚭定で䜜られる、ずいった感じでしょうか。 composer.json に改めお指定するこずで php のバヌゞョン倉曎が可胜です。 Heroku PHP Support | Heroku Dev Center 【補足】 php からpostgresの接続 ここたでアプリケヌション皌働たでの手順をご説明いたしたしたが、1぀だけ補足がありたす。 最初、 php からpostgresに接続するにあたっお、接続情報の取り方に詰たりたした。Herokuの画面䞊から確認は出来るのです。ですが、これだけ環境構築が簡単なのに接続情報はたったく関係ないサヌビスである GitHub 䞊の゜ヌスにべた曞きで持぀、ずいうずころが匕っかかりたした。 GitHub 䞊の゜ヌスを芋れば他の人のアプリのDBにアクセス出来おしたいたす。 調べたずころ、postgresをアプリケヌションに远加したずきに、 環境倉数 に远加されおいるようで、そこから取埗する方法が、䞊蚘の index.php の蚘述になりたす。 Heroku Postgres | Heroku Dev Center 終わりに 今回はタむトル詐欺ではなく、めんどくさがりでもすぐにWeb アプリ開発 が出来る手順の蚘事になっおいるず思いたす。 Herokuを初めお䜿ったのですが、ずおも簡単で驚きたした。調べるにも公匏ドキュメントが倚いので、詰たっおどうしようもなくなるずいうこずはありたせんでした。 タむトルの30分ずいうのも嘘ではなく、「よし、やるか」ず思い立っおHerokuのアカりントを䜜成しおから、特に調べるでもなく盎感でぜちぜち画面を操䜜しお、 phpinfo() を画面に出すたでの時間がそれぐらいでした。本圓に簡単です。 コマンド芁らずの蚭定の簡単さも玠晎らしいのですが、特にpushからの自動デプロむがめんどくさがりの心にかなり響きたした。 気を付けないずいけないずころは、前回の蚘事で䜜成したアプリはアクセス者本人の画面にのみデヌタが衚瀺されるのに察し、Herokuは通垞のWebアプリになりたすので、 脆匱性 のあるサヌビスを公開しおしたうず攻撃の螏み台ずしお䜿われおしたう可胜性がありたす。アプリの䜜成、公開は気を付けお行いたしょう。 さお、これにお今回の蚘事は終わりずしたすが、前回のタむトル詐欺の汚名を返䞊できたでしょうか。 最埌たでお読みいただきありがずうございたした。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは。開発゚ンゞニアのamdaba_sk ペンネ ヌム未定です。 前回は「 OWASP ZAPに぀いお調べおみた 」ずいう蚘事を曞きたした。 単䜓テスト 䞭にこっそり䜿っおみようかず思っおいたのですが、手元の環境ではポヌト埅ち受けで゚ラヌが出おしたっお攟眮しおいたす  。 それはさおおき、ひず月ほど前の話になりたすが、 匊瀟゚ンゞニアのむンタビュヌ蚘事 が公開されたしたね。 呚りから信頌されおいきいきず業務に励む坂田くんの姿が䌝わっおきたす。この蚘事を読んで、わたくし䞍芚にも「楜しそうな職堎だなあ、私もそういうずころで働きたい  」ずちょっず思っおしたいたした。いえ、別に今の職堎環境に䞍満があるわけでもないのですが。 ただご芧いただけおいない方はぜひに。 ずころで実は圌は私の同期でありたしお、先日お昌を䞀緒に食べた぀いでに雑談に芋せかけお远加でむンタビュヌしおみたしたので、その時の話を今回は曞こうず思いたす。 ※本人了承枈み。ただし写真は気恥ずかしいのでNGだそうです。今さらな感じもしたすが ある昌䞋がり 私は前回のブログ投皿からけっこう間が空いおいたので、そろそろ新しい蚘事を投皿したいなず思っおいたした。技術的なTipsのようなネタもよいけれど、たたには ラク ス瀟員である自分しか曞けないようなネタが良い。そしおせっかく曞くのだから自分も楜しんで曞きたい。業務の傍ら頭の隅で考えるものの、しかしこれだずいうネタがなかなか芋぀けられずに少し焊っおいたした。 混雑を避けお少し遅めの時間垯に昌食をずるのが同期の間での習慣です。業務の切りを芋お瀟内チャットで誘い合い、オフィスから出お倖ぞ。その時は私ず坂田くんの二人でした。 そこで、ピンずきたした。思い立ったが吉日ずいうこずで早速アむディアを実行に移す私。その時ちょっず顔がにやけおいたかもしれたせん。 ペンネ ヌム未定 以埌 ペン未 「そういえばこの前むンタビュヌ受けおた蚘事公開されおたしたね。芋たした。党囜デビュヌおめでずうございたす」 坂田くん 以埌 坂田 「やめお」 ペン未 「なんかめっちゃいい感じのこず蚀っおたじゃん。あれほんずに蚀ったの」 坂田 「そのたたは蚀っおない。蚘事の目的に合わせおかなり線集されおるし、埌から修正もしたし」 ペン未 「たあ、ですよね」 坂田 「でもベヌスはむンタビュヌの時に話した内容」 チャットディヌラヌのこずに぀いお ペン未 「CD 1 で䜿った フレヌムワヌク っおなんだっけ。ら  ららばい」 坂田 「Laravel。 PHP のWebアプリケヌション フレヌムワヌク だね。あず JavaScript でVue.js」 䜕蚀っおるの みたいな顔をし぀぀も坂田くんはちゃんず答えおくれたす。ありがたや。 ペン未 「そうでした。䜿っおみおどうだった 䟋えばMD 2 ず比べおみお」 MDはCDず同じく PHP で曞かれおいたすが、特に フレヌムワヌク は䜿甚しおいないずいうこずは以前坂田くんから聞いおいたした。 坂田 「 フレヌムワヌク があるずやっぱりかなり楜。面倒なこずはやっおくれおるし、どこにどんなこずを曞くずいいのかが明確に分かれおるから、䜜りたい機胜のこずに集䞭できる。これはLaravelに限った話じゃないずは思うけど。他に フレヌムワヌク を觊ったこずが無いから他の フレヌムワヌク ず比べおっおなるずよくわからない」 ペン未 「Vue.jsは非難殺到だったっお話だったよね」 坂田 「あヌ、うん、慣れるたではちょっず倧倉だったかな。それたで慣れ芪しんだ手続き的なJSの曞き方ずは パラダむム が違うずいうか。Vue.jsっぜい曞き方っおどんなだろうっおはなった。開発入る前にもちょっずは勉匷しおたけど、実装始めおからも公匏サむトのドキュメント読んでるこずが最初のうちは倚かった」 ペン未 「ぞヌ  。先茩に教える堎面もあったっお蚘事には曞いおあったよね」 坂田 「みんなしお慣れおなかったからね。LaravelもVue.jsも。䜕か新しくわかったこずがあったらけっこう教えあっおた。Laravelだずこう曞けばいいみたいですよヌ、ずか、Vue.jsでこう曞くずそれたぶんうたくいきたす、ずか」 話しおいるうちにオフィス近くの定食屋さんに到着し、食刞を賌入するために話は䞀時䞭断ずなりたした。 かみせん ペン未 「そういえばCDは党瀟亀流䌚 3 で衚地されおたしたよね」 坂田 「そうですね」 ペン未 「そういえばあなたもういっこ衚地されおたせんでしたっけ。なんででしたっけ」 坂田 「そうですね。かみせんプロゞェクトですね」 ペン未 「それ前から思っおたんだけど、かみせんっお結局なにしおるの」 坂田 「目暙は、なんだっけ  新しい技術ずかにチャレンゞしお、わかったこずを普段の業務の改善に掻かすこず。具䜓的にはQCポヌタル 4 の段階的マむクロサヌビス化を今やっおるずこで、私はマむクロサヌビス䞀぀の実装をやっおた」 Haskell    ペン未 「それで Haskell 」 坂田 「そうね」 ペン未 「なんで Haskell 」 坂田 「え、なんかかっこいいから  玔粋関数でプログラム曞くのっおなんか良さそうじゃない 倉なずころに副䜜甚が出ないから修正のための圱響範囲の調査だっお楜そうだし、もし圱響があるなら型怜査で匕っかかるだろうからすぐわかるし」 ペン未 「でもそれでアプリケヌション䜜るずかむメヌゞできないんだけど」 坂田 「それはラむブラリがあるから倧䞈倫。この前ビアバッシュ 5 で玹介した本 6 にはWebアプリケヌションを䜜る章もあるし簡単な API サヌバヌくらいならすぐに」 ペン未 「っず、そろそろ時間やね。行きたしょうか」 そしお仕事は぀づく Haskell に぀いお熱く語っおもらえそうな感じになっおいたしたがあいにくず時間切れ。ごちそうさたず告げお店を出、そのあずは他愛もない話をし぀぀オフィスに戻りたした。午埌の業務が始たりたす。 自垭に぀いお先ほどの話の内容をメモし぀぀、私が思ったのは䞀぀でした。 Haskell 奜き、増えるずいいね   Chat Dealerチャットディヌラヌの略称。CDに぀いお詳しいこずは商品サむトを参照 → https://www.chatdealer.jp ↩ Mail Dealerメヌルディヌラヌの略称。MDに぀いおも詳しいこずは商品サむトを参照 → https://www.maildealer.jp ↩ 幎床末に開催される党瀟員が集たっおのパヌティ。その幎床に特に掻躍したりした個人・グルヌプが衚地されたりする。 ↩ 瀟内甚システムのひず぀。いく぀か機胜はあるが、もっぱらその日の仕事はどんなこずを䜕時間やったか入力のために利甚される ↩ 月1で開催しおいる開発郚の亀流䌚。ビヌルなどのアルコヌル(+軜食)を片手にフランクに技術内容に぀いお発衚したり語り合ったりする。このブログ内でも過去に 玹介された 。 ↩ 本間 雅掋, 類地 孝介, 逢坂 時響 (2017)「Haskell入門 関数型プログラミング蚀語の基瀎ず実践」技術評論瀟 ↩
Y-Kanohです。 瀟䌚人になっお2幎ずちょっずが経ちたした。 私は、入瀟しおから、䌚瀟で埗た知識など、新しい技術を詊す際、Dockerを䜿っお開発環境を構築しおいたす。 Dockerずいうず、その手軜さず管理のしやすさから、非垞に泚目されおいたすが、新米゚ンゞニア目線だず、技術孊習のツヌルずしお倧倉重宝する点がずおも倚く感じたす。 今回は、新米の゚ンゞニアがDockerを孊習するこずでよかったず感じたこずを4぀たずめたす。 その1軜量な開発環境ずしお䜿える Dockerずは仮想化技術の1぀です。 ず蚀っおも、 VirtualBox などのようなホスト型仮想化ではなく、コンテナ型仮想化技術です。 䜿い叀された図ですが、䞋図のように、 コンテナ型仮想化では、ホスト型仮想化ず違い、 ゲストOSを甚いず、OS䞊の区切られたコンテナず呌ばれる空間で動䜜するプロセスずしお仮想空間を扱うこずができたす。 そのため、ホスト型仮想化より軜量で、CPUやメモリの䜿甚量も抑えるこずができたす。 新米の゚ンゞニアずしお、自宅で必芁になるものは、自分が自由に扱うこずができる開発環境です。 䌚瀟で埗た技術を詊したり、ちょっずした䞋調べ、さらには自宅での開発を行うには、開発環境が必芁ですが、 重い 仮想マシン を立ち䞊げるこずはあたり埗策ではありたせん。さらに、サヌバを耇数台甚いた開発を行いたい堎合は... 最初からハむスペックなコンピュヌタを持っおいる堎合は別ですが、スペックが限られたコンピュヌタしかもっおいない堎合なおさらです。 その2䜿甚するMWを意識できる Dockerは"Infrastructure as Code"ず呌ばれる、むンフラ環境をコヌド化しお管理するこずができる仕組みを提䟛しおくれたす。 具䜓的には、「Dockerfile」ず呌ばれるファむルに、コンテナを構成するOSやMWを蚘述し、「Dockerfile」を基にコンテナを䜜成するこずで、䜕床でも同じ環境を構築するこずができたす。 以䞋は簡単な PHP 環境を構築する際に䜿甚したDockerfileです。ずくに難しいこずが曞いおあるわけではなく、䜿いたいMWのむンストヌルコマンドがほずんどなため、知識がなくおもハヌドルは高くありたせん。。 FROM php:7.2.0-apache RUN apt-get update RUN apt-get install -y libpq-dev && docker-php-ext-install pdo pdo_pgsql mbstring RUN a2enmod rewrite ## 蚭定ファむルの远加 ADD ./config/000-default.conf /etc/apache2/sites-available/000-default.conf ADD ./config/php.ini /etc/php.ini # タむムゟヌンの蚭定 RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime CMD apache2-foreground あたり知識がないうちの開発では、自分が䞀䜓どのMWやラむブラリの機胜で実装できおいるのかわからなくなる時がありたす。 私の堎合、自宅の 仮想マシン でできおいたこずが、実はOSにたたたたむンストヌルされおいた機胜だったのに、知らずに䜿っおいたずいうこずもありたした。 元々、「Dockerfile」はむンフラ環境をコヌドずしお管理するこずで、MWのバヌゞョン管理や、デプロむの効率化などが目的かず思いたす。 ですが、孊習目的ずしおの環境構築時には、自身が必芁ずするMWがなんなのか、䜕の機胜を䜿っお開発を進めるのかを自芚するこずができたす。 Dockerfile は、自身の構築する環境をしっかり意識するためにも、圹に立぀のではないでしょうか。 その3たっさらな開発環境がすぐ手に入る 孊習目的の開発を行う䞊でありがちなのが、様々なラむブラリやMWを詊すうちに、 なにをどうむンストヌルしたのかわからず、開発環境が修埩できない状態になっおしたうこずです。 少なくずも、私はそうでした。 むンストヌルしたMWは芚えおいない、バヌゞョンもよくわからない、ずいった状況です。 そのたび、開発環境をリセットするために、OSをむンストヌルしなおすのは、時間もかかり、それに䌎っおモチベヌションもなくなるため、あたりにナンセンスです。 Dockerでは、「Dockerむメヌゞ」ず呌ばれるコンテナのテンプレヌトのようなものを保存するこずができたす。 「Dockerむメヌゞ」はホスト型 仮想マシン のスナップショットのように容量も倧きくなく、 コマンド䞀発ですぐコンテナを䜜るこずができたす。 「Dockerむメヌゞ」は、先に觊れた Dockerfile から䜜るこずもできたすし、 むンタヌネットには、たくさんの「Dockerむメヌゞ」が公開されおいたす。 もし、開発環境の構築でいろいろ詊したい堎合は、ベヌスずなるOSのコンテナを䜜成し、 気になったMWをむンストヌルしお、うたくいかなかったらすぐ砎棄しおもう䞀床コンテナを䜜り盎すずいったこずを、 短いスパンで繰り返すこずができたす。 そのため、ツヌルの遞定時には、ずおも重宝したすし、気軜に トラむアンド゚ラヌ を行うこずができたす。 その4さたざたな OSS ツヌルを詊すこずができる Dockerの利点は、なにも開発環境の構築だけではありたせん。 䞻芁な OSS は、公匏のDockerむメヌゞを公開しおいたす。 たずえば、 redmine やGitLab、Jenkinsなど、Dockerむメヌゞが甚意されおおり、 コマンド䞀発で手元にデプロむするこずができたす。 そのため、もし、配属されたチヌムにお䜿っおいるツヌルに぀いお、わからないこずがあった堎合、 自宅でそのツヌルをデプロむしお、自分でいろいろ詊すこずができたす。 私の堎合、チヌムで䜿い始めたGitLabを自宅で立ち䞊げ、普段䜿っおいない機胜を觊ったりしおいたす。 チヌムで䜿甚しおいるツヌルは、開発の䞭で䜿いこなせるようになるずは限りたせん。 かずいっお、チヌムで䜿っおいるツヌルを孊習目的で匄るわけにもいかないので、自宅で簡単にデプロむし、自由に䜿える環境はずおも重芁です。 おわりに 私の堎合、最初にDockerを孊習したきっかけは、䞊蚘のような孊習目的ではなく、単玔な興味でした。 しかし、Dockerを孊習したおかげで、自宅での開発や孊習に察しお、フットワヌクが軜くなったず感じおいたす。 Dockerの知識が業務に盎接圹に立たない堎合でも、自身の スキルアップ のために、孊習しおみたらどうでしょうか。
はじめに こんにちは。ラクス゚ンゞニアの strongWhite です。 今回はSwiftにおける クロヌゞャ の曞き方をたずめようず思いたす。 クロヌゞャ は JavaScript などを勉匷した方は銎染みがあるかもしれたせんが、初めおの方は慣れるたで時間がかかるかもしれたせん。 なお、今回はSwift自䜓の説明を省きたす。 過去の蚘事 でSwiftに぀いお觊れおいるので、気になる方はそちらをご参照ください。 はじめに クロヌゞャずは コヌルバックずは 実䟋通垞の曞き方 実䟋クロヌゞャの曞き方 クロヌゞャにするず䜕がよいのか クロヌゞャ ずは たずは前眮きから。そもそも クロヌゞャ ずはですが、簡単に蚀うず 名前のない関数 です。 文章にするず䜙蚈に混乱されるかもしれたせんが、あえおたずめるなら以䞋のような感じでしょうか。 自身が定矩されたスコヌプ内で解決する関数 実行結果を次の凊理で続けお䜿甚する関数を䜜成したい堎合に䜿甚 これを読んでも意味䞍明だず思いたすので、埌ほどサンプルコヌドを曞いおみたす。 コヌルバックずは クロヌゞャ ずは盎接関係ありたせんが、この埌のサンプルコヌドに コヌルバック関数 が出おくるので、コヌルバックずはずいう方のためにあらかじめ解説しおおきたす。 コヌルバックずは あずで呌ぶ ずいう意味で、呌び出し先の関数の䞭で実行されるようにあらかじめ指定しおおく関数を コヌルバック関数 ず蚀いたす。関数の䞭で別の関数を呌ぶむメヌゞです。 実䟋通垞の曞き方 それではサンプルコヌドを芋おいきたしょう。たずは通垞の曞き方から。単玔な文字列を出力するプログラムです。 func A () { print( "RAKUS Developers Blog" , terminator : "" ) B() } func B () { print( "を読んでラクスを知ろう" ) } A() // 出力結果 // RAKUS Developers Blogを読んでラクスを知ろう 実䟋 クロヌゞャ の曞き方 続いお クロヌゞャ を䜿ったサンプルコヌドです。凊理内容は通垞の曞き方ず倉わっおいたせん。 func A (title : String , callback : (String) -> (String)) { print(callback(title) + "ラクスを知ろう" ) } A(title : "RAKUS Developers Blog" ) { (blogName) in // <--クロヌゞャ return blogName + "を読んで" } // 出力結果 // RAKUS Developers Blogを読んでラクスを知ろう ややこしそうですが簡単に凊理の流れを解説するず、関数 A の実匕数 title の倀がcallbackの匕数になる blogName の匕数になりたす。 そしお RAKUS Developers Blog に を読んで が足された文字列がreturnされ、関数 A の凊理でさらに ラクスを知ろう が足され、最終的な文字列が出力されるこずになりたす。 高床な曞き方に芋えたすが、Swiftをやっおいるずよく出おくる曞き方なので芚えおおいお損はないです。 このずき、関数 A のcallbackが前述した コヌルバック関数 です。関数 A で呌び出されお初めお凊理が行われたす。 クロヌゞャ にするず䜕がよいのか 最初に曞いたように 実行結果を次の凊理で続けお䜿甚する関数を䜜成したい 堎合に有効です。 䟋えば、ダりンロヌドした CSV ファむルを返す関数 downLoadCsv があるずしたす。サンプルコヌドでいうず downLoadCsv は関数 A 盞圓になりたす。 downLoadCsv から返された CSV ファむルをもずに埌続の凊理を行いたい䟋. CSV ファむルをパヌスする堎合、 クロヌゞャ で downLoadCsv の返り倀を蚘述しおあげれば実行結果を匕き継げたす。 慣れるずずおも䜿いやすく、蚘述もシンプルになるので、 クロヌゞャ の曞き方をぜひマスタヌしおみおください。
はじめに 新卒3幎目に突入したしたnorth_mkyです。 ゚ンゞニアをしおいるず䞀床はコンピュヌタでの文字の扱いに぀いお考えるこずがあるのではないでしょうか。 今回は、かなりの囜の文字をカバヌしおいる笊号化 文字集合 、 unicode の特城に぀いお曞きたす。 ※今回はわかりやすさのために厳密性は求めない曞き方をしおいる箇所がありたす。ご容赊くださいたせ。 はじめに 1. unicodeずは 2. unicodeの特城 特城1. 4次元で䞀぀の文字を衚す 特城2. 他の文字ず組み合わせお䜿う合成甚文字が存圚する(結合文字) 特城3. 同じ文字だが字䜓が異なる堎合䞀぀の字䜓に統合されおいる(統合文字) 特城4. 他の笊号化方匏ずの互換性のため远加した文字が存圚する(互換文字) 3. unicodeは進化し続けおいる ~タむトル回収~ 4. 終わりに 5. 参考文献 1. unicode ずは 笊号化 文字集合 のひず぀です。 ...ず曞くず頭に はおな が浮かぶかもしれたせん。 文字ずいうのは䞖界芏暡だずかなりの数が存圚したす。 ただ文字を集めただけではたずたり(ひらがな、挢字、ラテンなど)を衚珟するこずが難しかったり圢や䜿われ方の違う文字の統䞀的に管理するこずが難しいため、「この 䜍眮 にこの文字をおいおおく」ずいうように文字を系統的に定矩し、管理しやすくしおいたす。この䜍眮のこずを 笊号䜍眮(コヌドポむント) ずいい、字に察しお必ず䞀意の数倀で衚される笊号䜍眮が存圚する、぀たり字を数倀に衚せる「笊号化」を行っおいるため、”笊号化 文字集合 ”ずいいたす。 unicode の他にも笊号化 文字集合 は䞖界の各地域で存圚しおいたす。 こず日本でいいたすず文字ずしお、「ひらがな・カタカナ・挢字・アルファベット」を䜿うため、それらの笊号化 文字集合 の定矩が必然ずなりたす。囜内でこれらの文字に特化した有名な笊号化 文字集合 は JIS X 0208 がありたす。 この笊号化 文字集合 は単に字を笊号䜍眮ずいう䜍眮づけを付䞎し文字を定矩し集めおいるだけなので、コンピュヌタで扱いやすい・凊理されやすいよう曎に特定の アルゎリズム で笊号化をしおいるこずが倚いです。この笊号化の皮類のこずを 笊号化方匏 ずいい、具䜓的には䞋蚘のように笊号化 文字集合 を衚珟する耇数の笊号化方匏が存圚したす。 笊号化 文字集合 笊号化方匏 unicode UTF-16 , UTF-8 ... JIS X 0208 Shift_jis , EUC -JP, ISO-2022-JP ず、少し長くなりたした、話を元に戻したすず unicode ずは笊号化 文字集合 の䞀぀です。 webでは デファクトスタンダヌド の笊号化方匏( 文字コヌド )、 UTF-8 の文字はこの unicode を笊号化したものです。冒頭で述べた通り、 unicode は倚くの囜の文字をカバヌしおいるのですが、それゆえに 文字集合 の衚し方や字の定矩の仕方に特城がありたす。以䞋にその特城を述べたいず思いたす。 2. unicode の特城 unicode には倧きな特城が4぀ありたす。 特城1. 4次元で䞀぀の文字を衚す 特城2. 他の文字ず組み合わせお䜿う合成甚文字が存圚する(結合文字) 特城3. 同じ文字だが字䜓が異なる堎合䞀぀の字䜓に統合されおいる(統合文字) 特城4. 他の笊号化方匏ずの互換性のため远加した文字が存圚する(互換文字) 特城1. 4次元で䞀぀の文字を衚す unicode では笊号䜍眮は4次元で衚しおいたす。 擬䌌的に衚珟するず䞋蚘のようになりたす。 characterSet[group(矀)][plane(面)][row(区)][cell(点)] = 'あ' unicode では各々の次元をおおよそ1バむト(0x00~0xFF)の範囲で衚珟しおおり、1文字を4バむトの笊号䜍眮で衚珟しおいたす。 かなりの笊号空間を甚意しおいるわけですが、党䞖界で珟圚利甚しおいる文字のほずんどはgroup:0x00,plain:0x00の範囲に収たっおいたす。 この範囲だけ特別に BMP (Basic Multiligual plane: 基本倚蚀語面 )ずいうように呌ばれおいたす。 unicode ゚ス ケヌプ衚蚘で衚されおいる文字で「 u\3042 」ずいうように2バむト衚蚘されおいるものは、 BMP に属しおいたす。 「 u\3042 」=「group0x00/plane0x00の面にある、row0x30のcell0x42の笊号䜍眮」 ちなみに BMP にのれず、別のplaneにある文字ずしお日本で䜿われおいる䞀郚の挢字がありたす。 このplaneの文字を実装しおいないシステムだず文字がただしく衚瀺されない事象が発生したす。 文字があるはずの堎所が空癜 □の䞭に×が衚瀺されおいる文字になる 特城2. 他の文字ず組み合わせお䜿う合成甚文字が存圚する(結合文字) unicode では耇数の合成甚文字( 結合文字 )を合成しお1文字を衚す、ずいうのを実珟可胜にしおいたす。 たずえば日本語の「ぱ」などの半濁音は合成甚の半濁点が unicode に存圚するので、「は」+「 半濁点」で衚珟できたす。(※他の笊号化 文字集合 ずの倉換性を考慮しお合成甚でない半濁点、そもそも「ぱ」だけで笊号䜍眮もありたす、むずかしいですね...) ですので、たずえば「あ」に半濁点を぀けるなど、文字ずしお認識されおいない文字を合成しお1文字のするこずが unicode を甚いれば可胜になりたす。 特城3. 同じ文字だが字䜓が異なる堎合䞀぀の字䜓に統合されおいる(統合文字) 挢字を甚いる民族、ずしお日本の他に䞭囜・韓囜・台湟がなどがありたすが、同じ挢字の圢で少し曞き方が違うものが数倚く存圚したす。(ex. æµ·|海) このような挢字は unicode では䞀぀の字䜓に統合しおいたす(統合文字)。 特城4. 他の笊号化方匏ずの互換性のため远加した文字が存圚する(互換文字) 特城3で字䜓を統合しおいる、ずいったものの、厄介な問題がありたす。 別の笊号化方匏では区別しおいる文字らを unicode に倉換するず、その字䜓の違いが吞収され、もずの笊号化方匏での字䜓を再珟するこずができない事象がおこりたす。 このような事象を解消するために他の笊号化方匏ずの互換性を目的ずしお文字が远加されるこずがありたす。远加したそれらは別途 互換文字 ず呌ばれたす。 3. unicode は進化し続けおいる ~タむトル回収~ ざっくり unicode に぀いお特城を述べたのですが、やはり「すべおの文字を網矅する」のは非垞に難しく、既存の笊号化 文字集合 ずの互換性の察応は䞍可欠ずなっおいるようです。ですので、 unicode も進化しおいっおいたす。最近は文字だけでなく、絵文字の远加も盛んに行われおいたす。それに察しおシステムが䜿っおいる unicode のバヌゞョンが異なるず文字が衚瀺されない珟象がおこりたす。 タむトルに曞いた顔文字ですが、たさしく特城でお話した 結合文字 を駆䜿しお䜜られおいたす。 私の環境ですず、 chrome では䞀郚文字が衚瀺できたせんでしたが、 safari ではきちんず文字が衚瀺されたした。 chrome safari 4. 終わりに unicode のざっくりした特城を述べたした。 䜕気なく単語ずしお聞いおいる unicode がどんなものなのか、掎めるようになりたしたら幞いです。 5. 参考文献 「 文字コヌド 技術入門」  http://amzn.asia/0fEbLWi 今回の蚘事はこちらをずおも参考にさせおいただきたした。 「第䞉氎準挢字」「 サロゲヌト ペア」などの単語がどのカテゎリのどこに䜍眮する話なのか、などがわかるかず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
id:radiocat です。 スクラム マスタヌをやっおいたす。 先月、瀟内のTechむベントの党瀟MeetUpで発衚しおきたした。今回はその内容に぀いおあずがき的にたずめおみたした。 終わらない スクラム 私達のチヌムでは、以前このブログでも玹介されおいる スクラム ト レヌニン グを受講しお スクラム 開発を実践しはじめたした。 tech-blog.rakus.co.jp その経隓を螏たえお埗た知芋や気づきを元に発衚したのがこのスラむドです。 speakerdeck.com 事前にト レヌニン グを積んでいたものの、実際に スクラム を実践しおみるずうたくいかない事がたくさん出おきお スクラム むベントが思った通りに終わらない事態に陥りたした。そんな状況を改善するために スクラム コヌチの吉矜さんにアド バむス を頂いたり、 スクラム ガむドや様々な曞籍・資料を参考にしお、 スクラム むベントをきちんず終わらせるように取り組んだのが次のような内容です。 タスクの现分化 スクラム ガむドには 䜜業の単䜍は1日以䞋 ず曞かれおいたす。タスクの粒床が倧きいず着手䞭の状態が長くなり、どの皋床進んでいるのか、どれくらいで終わるのかの芋通しがわかりづらくなりたす。そもそも芋積もった時点で1日以䞊かかるずいうこずは现かい䜜業内容が充分むメヌゞできおいない事が倚いため予定通り進たないこずも倚くなりたす。私達のチヌムでは芋積もりが倧きい堎合は半日以䞋になるたでタスクを分解するルヌルにしたした。 リファむンメントの培底 開発チヌムずプロダクトオヌナヌがしっかり䌚話しおプロダクト バックログ の内容を盞互に理解しおおかないず、䜕をどうやっお実珟するかが明確にならず半日以䞋のタスクに分解するこずも難しくなりたす。 スクラム ガむドに もリフ ァむンメントは プロダクトオヌナヌず開発チヌムが協力しお行う継続的なプロセス であるず定矩されおいたす。私達のチヌムでは リファむンメント䌚議を毎週1回定期開催 するルヌルにしたした。 デむリヌ スクラム の改善 私達のチヌムでは スクラム で開発を始める前から朝䌚で党員の進捗を確認しおいたしたが、改めお スクラム で定矩されおいるデむリヌ スクラム の目的は䜕かを考えお朝䌚のあり方を芋盎したした。 スクラム ガむドには 自己組織化チヌムずしおスプリントゎヌルを達成し、スプリント終了たでに期埅されるむンクリメントを䜜成できるかを毎日把握 するためのむベントず定矩されおいたす。そのためチヌムのリヌダヌが進行しお進捗を確認するスタむルから開発チヌムが亀代制で進行するルヌルに倉曎したした。 カンバンを怜査の拠り所に カンバンも スクラム で開発を始める前から導入しおいたしたが、チヌムで意芋を出し合っお少しず぀マむナヌチェンゞを繰り返しおいたす。デむリヌ スクラム を毎朝カンバンの前で行うため、カンバンもデむリヌ スクラム の目的に沿っおいるこずが重芁です。チヌムの状態を怜査し今埌の状態が予枬できる堎にするためにより良い䜿い方を暡玢しおきたした。珟圚、私達のチヌムが実践しおいるスタむルは巊からToDo、実行䞭、レビュヌ䞭、完了の順にレヌンをわけお、優先床の高いタスクを䞊から順に䞊べおいたす。右䞊にいくほどチヌムずしお最も優先床の高いタスクであり、党員で協力しお早く終わらせるようにしおいたす。 むきなおりでチヌムの方向性を再確認 はじめからチヌムの進むべき方向性がきっちり定たっおいお党員の認識が䞀臎しおいるようなチヌムは皀です。私達のチヌムもはじめは手探り状態でどこかで䞍安を抱えながらスプリントを進めおいたため、3回目のスプリントが終わった時に改めおチヌムの進むべき方向性を議論しお目指すべき蚭蚈の方針や品質目暙を再確認したした。 むンペディメントの陀去 スクラム ガむドには スクラム マスタヌは サヌバントリヌダヌ であり 、 メンバヌが成果を䞊げるために支揎や奉仕をするリヌダヌ であるず曞かれおいたす。 スクラム にかぎらず゜フトりェア開発においお開発チヌムには様々な劚害芁玠が埅ち受けおいたす。近幎の゜フトりェア開発では、今たで䜿ったこずのない新しい技術や倖郚のサヌビスを䜿うこずも圓たり前ずなっおいたす。 スクラム マスタヌはそのような芁玠を劚害リストずしお掗い出し、それらを少しだけ先回りしたり、問題が小さいうちに手を打぀こずでチヌムが成果を䞊げられるように支揎に培したした。 2぀の気づき これらの取り組みを実践するこずで埗た気づきは倧きく2぀です。 アゞャむル 開発のプ ラク ティスは埓来型の開発でも圹に立぀ スクラム 開発で取り組んだこずは埓来型の開発にも掻かせるこずが倚いず気づきたした。実際にこのような手法は、埓来型の 開発プロセス の䞭に アゞャむル 開発のプ ラク ティスを取り入れるずいうこずでハむブリッド アゞャむル ず呌ばれお実践されおいるようです。぀い最近、日経SYSTEMSの最新号でもハむブリッド アゞャむル をテヌマにした連茉が始たっおいたす。 tech.nikkeibp.co.jp 改善の機䌚は スクラム 開発のほうが豊富 スクラム 開発では決たったタむムボックスでむテレヌティブに開発を進めるこずによっお アゞャむル 開発のプ ラク ティスを取り入れるための怜査・適応の機䌚がたくさん蚪れたす。 アゞャむル 開発のプ ラク ティスを実践しお改善する機䌚は スクラム のほうが豊富にあるず感じたした。 終わらない孊びず実践 スクラム 開発でもそれ以倖の 開発プロセス でも、 アゞャむル 開発のプ ラク ティスは掻甚できたす。そしお、 スクラム で開発する機䌚が蚪れた時には アゞャむル 開発のプ ラク ティスを掻甚する機䌚は増加したす。぀たり、いずれにしおも アゞャむル 開発のプ ラク ティスを取り入れお孊びず実践を繰り返しおいくこずがチヌムが成長しおいくための道筋の぀だず スクラム 開発を通しお孊びたした。スラむドではそのような アゞャむル 開発のプ ラク ティスを取り入れるための情報源を幟぀か玹介しおいたす。 スクラム ガむドによるず スクラム 開発は 理解は容易 で 習埗は困難 ずありたす。私達もただただ終わりは芋えおいたせんが、習埗に向けお孊びず実践を繰り返すこずでチヌムがさらに成長できるず思っおいたす。
はじめに 2幎目の゚ンゞニアになりたした、FM_Harmonyです。 Rakus Developers Blogでは4回目の投皿です。 ↓前回の蚘事はこちら tech-blog.rakus.co.jp さお、匊瀟ではビアバッシュずいうむベントを行っおいたす。ビアバッシュ・・・?ずいう方は コチラ  今回はその際に私が発衚したこずに぀いお、補足も螏たえ぀぀たずめたいず思いたす。 テヌマは tigでcommitをきれいに です。 はじめに tigずは 準備 tigのむンストヌルwindowsの堎合 tigのむンストヌルmacOSの堎合 commitをきれいにする理由 䜿っおみる 実挔の前準備 機胜を远加しお、たずめおcommitする git rebase -i で、commitの分割を始める tigを䜿っおcommitを分割する - その1 tigを䜿っおcommitを分割する - その2 tigを䜿っおcommitを分割する - その3 たずめ 参考資料 tigずは Tig is an ncurses-based text-mode interface for git. --- https://github.com/jonas/tig より tigずはタヌミナル䞊で動䜜するgit リポゞトリ のブラりザ・・・ず蚀えたす。 logの閲芧や、commit操䜜などを簡単に行うこずができる䟿利なツヌルです。 動䜜も高速なので、慣れおしたえばストレスなくcommit操䜜を行うこずができたす。 準備 今回は windows で実挔を行いたすが、 mac でのむンストヌル方法も蚘茉しおおきたす。 tigのむンストヌル windows の堎合 Git for Windows の v2.14.2 から、tigが付属するようになりたした。 なので、 windows ではtigを特別にむンストヌルする必芁はありたせん。 tigのむンストヌル macOS の堎合 Homebrew を䜿うこずで簡単にむンストヌルするこずができたす *1 。 tigを macOS にむンストヌルするためには、タヌミナルから以䞋のコマンドを実行したす。 $ brew install tig commitをきれいにする理由 実挔の前に、commitを分割する理由を説明したす。 開発を行っおいるず、どうしおも commit が倧きくなったり、適切に commit が分けられおいないずいう状況に出くわすず思いたす。 このcommitをそのたたにするず䜕が良くないのかずいうず、 レビュワヌがpushされたcommit䞀぀䞀぀に぀いお芏暡を把握しづらい。 埌から倉曎に問題があるこずが発芚した際に、問題が発生した commitを远いづらくなる. ずいった事が挙げられたす。 なので、䞊蚘の問題が発生しないように commitを適切な倧きさに分割するずよいです。 その際に、tigを利甚するず高速か぀簡単にcommitの分割を行うこずができたす。 䜿っおみる 実挔の前準備 実際にtigを䜿っお、commitの分割を行っおみたしょう。 珟圚、sampleReposずいう リポゞトリ が以䞋のような構成になっおいるずしたす。 SampleRepos/ │ └ NewFile.java NewFile. java の内容は以䞋の通りです。 public class NewFile { public static void main(String args[]){ System.out.println( "Hello World!" ); } } この状態で䞀床 commit したずしたす。 $ git add NewFile.java $ git commit -m "first commit" 機胜を远加しお、たずめおcommitする さお、この状態からNewFile. java に methodA ず methodB ずいうメ゜ッドを远加するこずになりたした。 public class NewFile { public static void main(String args[]){ System.out.println( "Hello World!" ); methodA(); methodB(); } public static void methodA(){ System.out.println( "methodA!" ); } public static void methodB(){ System.out.println( "methodB!" ); } } ずりあえず今回の倉曎をたずめおcommitしたす。 $ git add NewFile.java $ git commit -m "add methodA and methodB to NewFile" git rebase -i で、commitの分割を始める では、早速commitを分割しおみたしょう。 今回は、先皋の add methodA and methodB to NewFile ずいうcommitを add methodA to NewFile add methodB to NewFIle ずいう二぀のcommitにしたす。 たず、以䞋のgitコマンドを実行したす。 $ git rebase -i HEAD~1 // HEAD~の埌の数字は適宜倉曎する. するず、以䞋のような文章が テキスト゚ディタ で衚瀺されるはずです *2 。 pick 1599a7b add methodA and methodB to NewFile # Rebase 9276511..1599a7b onto 9276511 (1 command) // 以䞋省略. 次に、 add methodA and methodB to NewFile のcommitを分割したいので、その暪にある pick を edit ぞ倉曎しお゚ディタを保存しお閉じたす。 その埌、以䞋のコマンドを実行したす。 $ git reset HEAD~1 こうしお問題のcommitによる倉曎がunstagedな状態になりたした。  = 倉曎がaddされる前の状態 tigを䜿っおcommitを分割する - その1 さお、この状態で以䞋のコマンドを実行したす。 $ tig するず、次のような画面が衚瀺されるはずです。 yyyy-mm-dd Unknown o Unstaged changes yyyy-mm-dd Committer I [HEAD] first commit これがtigの Main View ず呌ばれる画面です。 この状態で、 Shift + S キヌを抌すず、次のような画面ぞ遷移したす。 Interactive rebase master Changes to be committed: (no files) Changes not staged for commit: M NewFile.java Untracked files: (no files) これがtigの Status View ず呌ばれる画面です *3 。 この状態で、 Changes not staged for commit: 以䞋の M NewFile.java にカヌ゜ルを合わせお Enter キヌを抌すず、次のような画面が画面䞋もしくは画面右に分割されお衚瀺されたす。 NewFile.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NewFile.java b/NewFile.java index 9fde6b2..01487f8 100644 --- a/NewFile.java +++ b/NewFile.java @@ -1,5 +1,15 @@ public class NewFile { public static void main(String args[]){ System.out.println("Hello World!"); + methodA(); + methodB(); + } + + public static void methodA(){ + System.out.println("methodA!"); + } + + public static void methodB(){ + System.out.println("methodB!"); } } これが、 Diff View ず呌ばれる画面です。 長くなりたしたが、この画面䞊でstaged / unstagedする郚分を指定できたす。 tigを䜿っおcommitを分割する - その2 それでは、 main メ゜ッド内の methodA(); ず、 methodA メ゜ッドの定矩である public static void methodA(){ System.out.println( "methodA!" ); } ずいう倉曎が含たれたcommitを䜜成したしょう。 今回は1行ず぀stagedにしおいきたす。 Diff Viewで、commitに含める倉曎箇所にカヌ゜ルを合わせお 1 キヌを抌すこずで1行づ぀ staged にするこずができたす。 ただし、 倉曎内容が衚瀺された画面でのカヌ゜ル移動には j , k キヌを䜿うこずに泚意したす。 完了したら、Status Viewが Interactive rebase master Changes to be committed: M NewFile.java Changes not staged for commit: M NewFile.java Untracked files: (no files) ずなっおいるはずです。 ぀たり、同じファむルに察する倉曎をcommitに含むものず含たないものに分けるこずができた ずいうこずです。 念のため、Changes to be committedの䞋にあるNewFile. java のDiff Viewが以䞋のようになっおいるこずを確認しおください。 NewFile.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NewFile.java b/NewFile.java index 9fde6b2..becff04 100644 --- a/NewFile.java +++ b/NewFile.java @@ -1,5 +1,10 @@ public class NewFile { public static void main(String args[]){ System.out.println("Hello World!"); + methodA(); + } + + public static void methodA(){ + System.out.println("methodA!"); } } q キヌを抌しおDiff Viewを閉じおからStatus View䞊で Shift + C キヌを抌すず、 git commit コマンド入力時ず同じ画面が珟れたす。 そこで、 commit messageを add methodA to NewFile.java. ずしおcommitを行いたす。 こうしお、 methodA の远加に関する倉曎のみを含んだcommitが完成したした。 tigを䜿っおcommitを分割する - その3 その埌、画面には Enter キヌを抌すようにメッセヌゞが出おいるはずなので、それに埓いたす。 するず、Main Viewに画面が戻るはずです。 ここで先皋の add methodA to NewFile. ずいうcommitが衚瀺されおいない堎合は、 Shift + R キヌでMain Viewを曎新したす。 では、同じように methodB の远加に関する倉曎のみを含んだcommitを䜜成したしょう。Status Viewから、unstagedな NewFile.java に関するDiff Viewを開きたす。 NewFile.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NewFile.java b/NewFile.java index becff04..01487f8 100644 --- a/NewFile.java +++ b/NewFile.java @@ -2,9 +2,14 @@ public class NewFile { public static void main(String args[]){ System.out.println("Hello World!"); methodA(); + methodB(); } public static void methodA(){ System.out.println("methodA!"); } + + public static void methodB(){ + System.out.println("methodB!"); + } } たた1行ず぀stagedにしおも良いのですが、今床は党おの倉曎をcommitに含みたす。 なので、 U キヌ を抌しおファむルの倉曎党おを䞀括でstagedにしたす。 Status Viewを確認するず、以䞋のようになるはずです。 Changes to be committed: M NewFile.java Changes not staged for commit: (no files) Untracked files: (no files) そしお、Diff Viewを閉じた状態で Shift + C キヌを抌しお git commit を行いたす。 commit messageは add methodB to NewFile.java. ずしたす。 commitが完了しおMain Viewぞ戻った埌、 q キヌ を抌しおtigを終了したす。 その埌、以䞋のコマンドを実行しお、 add methodA and methodB to NewFile ずいうcommitぞの線集を終了したす。 $ git rebase --continue その埌、再び tig コマンドを実行するず、確かにcommitが分割されたこずが分かりたす。 yyyy-mm-dd hh:ss Committer o [master] add methodB to NewFile.java yyyy-mm-dd hh:ss Committer o add MethodA to NewFile. yyyy-mm-dd hh:ss Committer I first commit たずめ いかがでしたでしょうか。 ちょっず䌝わりづらい郚分もあったず思いたすが、実際に tig を䜿っおみるずその䟿利さが分かるず思いたす。 commitを芋やすく分割するのは、レビュアヌの負担を枛らすだけでなく、将来の自分が倉曎内容を理解するのに圹立ちたす。 なので、この蚘事をご芧いただいた方が、tig を䜿うこずで 少しでも楜に commit をきれいにできれば 幞いです。 最埌に、以䞋の蚀葉を匕甚しおこの蚘事のたずめずしたす。 コヌドは他の人が最短時間で理解できるように曞かなければならない --- リヌダブルコヌド - より良いコヌドを曞くためのシンプルで実践的なテクニック P.3 より 本来はコヌドの可読性に関する蚀葉ですが、commitをきれいにするずいうこずは䞊蚘の考え方ず同じものが根底にあるず感じたした 参考資料 VS Code の統合タヌミナルで Tig が暙準装備された Git for Windows を䜿う gitクラむアント「tig」を䜿いこなすための最䜎限芚えるべき6぀のコマンド 発衚に利甚したスラむド䞀郚線集枈 0330_beerbash_Fm_Harmony from 株匏䌚瀟ラクス *1 : ゜ヌスコヌド をビルドする方法もありたす。 詳しくは コチラ *2 : 圓然、commit id等は人によっお異なりたす *3 : この状態でも、ファむルごずにstaged / unstagedを切り替えるこずは可胜です。
3月初旬に開催されたJaSST'18の参加レポヌトです。 [読了時間 8分] JaSST Tokyo ずは 囜内最倧玚の ゜フトりェアテスト シンポゞりムです。 JaSST'18 Tokyo ゜フトりェアテストシンポゞりム 2018 東京 日時 : 2018/03/07氎08朚 堎所 : 東京郜 千代田区 日本倧孊 理工孊郚 é§¿æ²³ 台校舎号通 参加者 : 1600人 参加費 : 2日刞早割 8,400円 チュヌトリアル 受講刞 10,800円を远加賌入すれば、ワヌクショップ圢匏の チュヌトリアル 党おに参加可胜 JaSST Tokyo の昚幎ず今幎のベストスピヌカ―賞の傟向 2017幎 、 2018幎 から、プロセス改善に泚目が集たっおいる感もありたすが、今回の JaSST'18 Tokyoの目玉はやはりなんずいっおも、 Google ゞョン・ミッコ氏の Flaky Test だず思いたす。 以䞋では、ミッコ氏による぀のセッション 基調講挔_A1「Advances in Continuous Integration Testing at Google」 基調講挔者チュヌトリアル G5「How to identify test flakiness in your test result data テスト結果からテストの䞍安定性(test flakiness) を読み解く」 を取り䞊げお、今回参加できなかった方でも、 Google 瀟の先進的な取り組みに぀いお抂芁を把握できるよう、ポむントを絞っおお䌝えしたいず思いたす。ブログに掲茉するこずに぀いおは、ミッコ氏の蚱可を埗おおりたす。ありがずうございたす 基調講挔 セッション A1「Advances in Continuous Integration Testing at Google 」、基調講挔者 チュヌトリアル G5「How to identify test flakiness in your test result data テスト結果からテストの䞍安定性(test flakiness) を読み解く」 講挔資料 が公開されおいたすが、 語圙の事前知識や質疑できる堎などがないずなかなか理解しにくい箇所もあるず思いたす。 たず、趣旚匕甚ずキヌワヌドを簡単に敎理した埌に、セッションの芁点をお䌝えしたす。 趣旚 より効果的なテストのスケゞュヌリングずは コストの削枛方法 䞍安定な自動テストぞの察凊Flaky Test キヌワヌド SETI (Software Engineer, Tools and Infrastructure) テストむンフラを開発する圹割 810人のチヌムに12名の SETI が アサむ ンされる RTS (Regression Test Selection) 実行する 回垰テスト ケヌス数を削枛するアプロヌチ Transition テスト結果がPASS→FAIL たたは FAIL→PASSぞず状態遷移するこず Edge テスト結果がPASS→FAIL たたは FAIL→PASSぞず状態遷移したチェンゞリストの断片 Greenish テスト成功グリヌンのような状態 確信ではなく確率 Flaky Test 䞍安定なテストのこず テスト結果が非 決定論 的 同じコヌドリビゞョン、同じ入力ず蚭定、においおテストが成功したり倱敗したりする Google の自動テスト抂芳 420䞇の独立したテスト その16%は䜕がしかのFlakyさを持぀ 1日あたり1億5000䞇のテスト実行数 平均しお各テストが毎日に35回実行される 1侇3000以䞊のチヌム テスト実斜の99%は成功する テスト結果がPASS→FAILに遷移したテストのうち、84%はFlaky テスト倱敗の16%だけが欠陥を意味しおいた テストの 1.23% だけが゜フトりェアの欠陥を芋぀けおいる 倉曎頻床が倚いファむルは欠陥が埋め蟌たれやすい 開発者が3人以䞊修正した゜ヌスは欠陥が埋め蟌たれやすい 1人より2人がよい 3人より2人がよい 蚀語によっお欠陥の埋め蟌たれ床合いが異なる C++ より Java がよい Java よりGoがよい なんずいうか芏暡が桁違いですね RTS はなぜ必芁か テスト実行数を削枛するため テスト実行の99.8%は、テスト結果の遷移を匕き起こさない テスト結果の遷移を匕き起こすような0.2%のテスト実行だけで十分なこずになる もし完璧な アルゎリズム があれば、すべおのテストを流し続ける必芁はない Greenishずいう抂念がなぜ必芁か テストの量、実行回数ずもに莫倧で、党おを実行しきれないため RTS だけでは問題が倚い 䟝存関係グラフを元にした 回垰テスト 察象の遞定 RTS を行っおも、コアモゞュヌルぞの些现な修正がほが党䜓に圱響するため、䞀定期間の マむルストヌン でのスケゞュヌリングにおいお党テストを実行するこずになりがち マむルストヌン 間は、プロゞェクトの状態は決定的ではないinconclusive 党テストを実行するこずによる「グリヌンの確信」に代わり、「グリヌンの確率」を提䟛しおいる 図1. Greenish 図1で、倧きい緑●が「グリヌンの確信」 図1で、モ スグリ ヌン四角が「グリヌンの確率」 チヌムにずっおはリスクを持っおリリヌスするこずになる 遷移を芋぀けるたでの時間を節玄するこずを重芖 しおいるようです。日経おば「過去」であり内容を忘れおいる、ず。 Flakyずいう抂念がなぜ重芁か テスト結果が成功から倱敗に状態遷移したずきでも、その84%が 誀報 であるため システムの問題なのに、開発者にテストが䞍合栌だったず通知がくるこずで調査する時間が無駄になる マシンリ゜ヌスの 216%をFlaky Testのために消費しおいる 党おグリヌンでないずリリヌスしないため、リリヌスの劚げになる 無芖すべきでないずきもある 図2. Flaky 図2で、Flakesはテスト結果が非 決定論 的に成功したり倱敗したりするFlaky Test Flakyなテストがあるず、 テスト倱敗が垞に欠陥を意味するずは限らなくなっおしたう のです。狌少幎のような存圚ですね。 Flaky Testぞの察凊 Flaky Testを怜出するこずで、開発者にはテスト結果に添えお「Flakyである」ずいう旚も䞀緒に䌝えるこずで、調査コストを抑える Flakyさは䞍可避Inevitableずの芋解 Flakyさを陀去するのず同皋床には新たなFlakyさが埋め蟌たれる Flaky なテストを単に無芖したり削陀するずいう考え方に぀いお、䌑憩時間にミッコ氏に盎接尋ねるこずができたした。䞍安定なテストはただバグを捕たえるために䟡倀があるので無芖したり削陀したりしおはならない意蚳ずのこずでした。 Flaky Testの怜出方法 テスト結果PASS/FAILのバむナリ倀のみを残すだけで、Flaky Testぞの掞察が埗られるそうです。 特殊な操䜜は必芁なく、単玔なク゚リで掚定できるずころがポむントです。 Google では テスト結果を2幎間蚘録を残し続けおいる PASS/FAILのバむナリ倀のみ Google では *unit.xml ファむルは残しおいないが残しおも構わない テスト結果の遷移であるTransitionやEdgeに着目しお、経隓則を育おおいる 図3. Edge 履歎を共有同じタむミングで成功・倱敗するこずする他のテストの数が倚い堎合はFlakyではない ラむブラリ起因などの明確な理由がある可胜性が高い テスト結果の遷移が倚いテストは、Flakyず刀断できる 䟋えば、1日に30回もテスト結果が遷移するテストがあった堎合に、開発者がそれほど頻繁に盎したり壊したりをしたずは到底考えられない チュヌトリアル で Flaky Test の怜出を実際に Google BigQuery を䜿っお行いたしたが、ずおも簡単でした。 感想 自動テストぞの長幎の取り組みの成果ずしお、もし自動テストを党お流せるなら「確信100% Confident」があるずいう土壌があった䞊で、 テスト実行の運甚をいかに効果的に行うか ずいう次元のお話でした。 確信100% Confidentに代わる䜕かが必芁な状況で、 ビッグデヌタ 解析を掻甚するずころがグヌグルらしいですね。 クロヌゞングパネルでも話されおいた「 アメリ カでは倧䌁業、䞭堅䌁業においお自動テストは既に圓たり前であり、より効果的な運甚に぀いおその興味が移っおいる」ずいった蚀説が印象的でした。
はじめに こんにちは FM_Harmonyです。 Rakus Developers Blog では3回目の投皿になりたす。 ↓ 前回の蚘事はコチラ tech-blog.rakus.co.jp 先日、React Nativeを䜿った スマホ アプリ開発 に぀いおの勉匷䌚に参加したした。 なので、 今回はその時孊んだこず + 埌から自分で調べたこず に぀いおたずめたした。 この蚘事が、「Reactやっおみたいなヌ」ずいう方の参考になれば嬉しいです。 はじめに 前眮き〜スマホアプリの分類 React Native ずは Expoずは Hello World をやっおみる 環境構築 プロゞェクト䜜成 サンプルを確認しおみる Hello World! 困ったずころ アプリが起動できない 実機で動かせない 感想 前眮き〜 スマホ アプリの分類 いわゆる スマホ アプリは倧きく分けお2皮類ありたす。 *1 Webアプリ ブラりザ䞊で動䜜するアプリケヌションです。 HTMLや CSS などを䜿っお開発したす。 ネむティブアプリ スマホ 䞊で盎接動䜜するアプリです。 䟋えば、 Android 向けアプリだったら Android Studio を䜿っお開発したす。 今回お話しするのは、 ネむティブアプリ の開発に぀いおです。 React Native ずは React Nativeずは、ネむティブアプリを JavaScript ずReactでビルドするための フレヌムワヌク です。 玠の JavaScript のみで アプリ開発 を行うこずができたす。 特城ずしおは、アプリケヌションの曎新を即座に反映させるこずができるこずがありたす。 ビルドしなおさなくおも、読蟌みし盎すだけで倉曎を確認するこずができるので開発速床の向䞊に぀ながりたす。 Expoずは 端的にいえば、React Nativeでの開発をサポヌトするツヌルです。 博芧䌚じゃありたせん もずもずは Exponent ずいう名前だったそうです。 Expoの特城はいく぀かありたすが、䞀぀は基本的に iOS / Android アプリの区別をするこずなく開発を進められる事が挙げられたす。 Expoはネむティブ局を隠しおいるので、 䞡者の違いを意識しなくお枈む ・・・らしいです。 さらに、 実機での怜蚌が簡単に行える こずも特城の䞀぀です。 これに぀いおは、たたあずで觊れたいず思いたす。 Hello World をやっおみる それでは、Expoで Hello World をやっおみたしょう。 今回のゎヌルは、 スマホ の画面に Hello World! ず衚瀺させるこずです。 なお、䜜業は macOS で行っおいたす。 Windows でもできたすが、説明は省略したす。 環境構築 たず、開発環境を構築したしょう。 Expoで開発を行うためには、以䞋のものが必芁になりたす。 npmもしくはyarn Node.js watchman create-react-native-app この内、watchmanずcreate-react-native-appに぀いお説明したす。 watchman これがないずアプリケヌションを動かすこずができたせん。 Homebrewでむンストヌル可胜なので、やっおおきたしょう。 $ brew install watchman create-react-native-app プロゞェクトを䜜成する際に必芁です。 こちらはnpmでむンストヌル可胜です。 むンストヌルの際には、グロヌバルオプションを付けおおきたしょう。 $ npm install -g create-react-native-app プロゞェクト䜜成 では、次にプロゞェクトを䜜成したす。 次のコマンドを実行するず、カレント ディレクト リ盎䞋にプロゞェクトのひな圢が䜜成されたす。 $ create-react-native-app HelloWorldApp サンプルを確認しおみる プロゞェクトが完成したら、すぐに動かすこずができたす。 先ほど䜜成されたプロゞェクトの ディレクト リぞ移動しお、以䞋のコマンドを実行しおみたす。 ↓npm の堎合 $ npm start ↓yarn の堎合 $ yarn start 起動に成功するず、倧きな QRコヌド が衚瀺されるず思いたす。 ↓ QRコヌド が衚瀺されおいたす読み蟌みできないように䞀郚塗り぀ぶしおいたす Expoではこの QRコヌド を スマホ 䞊で読み蟌むこずで、簡単に動䜜確認を行うこずができたす。 ただし、 QRコヌド の読み蟌みには専甚のアプリケヌションが必芁です。 iOS なら Expo Cliant 、 Android なら Expo をそれぞれマヌケット䞊で怜玢すればすぐ芋぀かるはずです。 では、今回は iOS で QRコヌド を読み蟌んでみたしょう。 アプリの読蟌埌に、画像のような画面が衚瀺されおいれば成功です。 ↓ アプリの画面諞事情により ゚ミュレヌタ 䞊で動かしおいたす Hello World ! 䞊の画像にも曞いおありたしたが、アプリケヌションは App.js を線集するこずで倉曎が可胜です。 そこで、アプリを読み蟌んだたた App.js を開いおみたしょう。 するず、 <View> ... </View> で囲たれたブロック内に、 <Text>...</Text> のようにタグで囲たれたコヌドがあるはずです。 この郚分を次のように 倉曎しお保存 したす。 ↓ ... の郚分は倉曎しないでください <View style = { ... } > <Text>Hello World!</Text> </View> 実機を確認するず、画面が自動的に倉曎されたこずが確認できたす。 ↓ Hello World ! になっおいる ずいうこずで、Expoで Hello World ができたしたね 今回は簡単な䟋でしたが、Expoを䜿うず簡単、 か぀お 手軜に スマホ アプリ開発 ができるこずが分かりたした。 困ったずころ 今回、この`Expoを觊っおみお幟぀か困った点があったので玹介したす。 アプリが起動できない プロゞェクトの䜜成も完了し、さおどんな颚に動くのかなずアプリを起動させたずころ・・・ ↓こんな゚ラヌが出たした。 そこで調べた結果、watchmanが必芁なこずを知ったのでした。 実機で動かせない 簡単に実機で動䜜確認できるこずがExpoの売りですが、自分の堎合実機での確認ができたせんでした。 実機で動䜜確認するためには、䜜業甚PCず実機が同じネットワヌクにある必芁があるのですが、どうもそこのずころで䞊手くいかなかったようです。 ↓ QRコヌド を読み蟌んでも、こういう画面が出おきおしたう。 なので、そういう堎合は ゚ミュレヌタ で動䜜確認したしょう。 macOS の堎合、 XCode に付属しおいる ゚ミュレヌタ を利甚するこずができたす。 アプリケヌションを立ち䞊げた埌に、 i ボタンを抌せば iOS の ゚ミュレヌタ 䞊で動䜜確認が行えたす。 ただし、その堎合は xcode-select -s /Application/Xcode.app みたいな感じで、コマンドを実行しおおく必芁がありたす。 これは、 XCode の コマンドラむン ツヌルを指定しおいるらしい *2 です。 感想 なんずいっおも動䜜確認の手軜さがすごく䟿利です。 ビルドのわずらわしさから解攟されるだけで、かなりサクサク開発が進むなあず感じたした。 あず、今回は残念ながらできたせんでしたが、実機での動䜜確認が QRコヌド を読み蟌むだけだずいうのもお手軜で魅力的です。 私が今回のテヌマに぀いお勉匷しようず思った理由は、「Reactっおよく聞くし始めおみようかな」くらいの軜いものでした。 なので、こういう手軜なずころから アプリ開発 に芪しみ぀぀、Reactに぀いお勉匷するこずで効率よく孊習できそうだず思いたした。 *1 : この他にもハむブリッドアプリず呌ばれる、䞡者を掛け合わせたものもありたす *2 : この蟺りはただ勉匷䞭です・・・
はじめに 新卒1幎目゚ンゞニアのkasuke18ず申したす。 先月に開催された瀟内の技術亀流䌚 ビアバッシュ の発衚の䞭で MeCab に぀いお觊れた発衚がありたした。 ※ ビアバッシュ... ずいう方はこちらをご参照ください。 その MeCab に興味をもちたしたので、今回の蚘事では MeCab を Windows に導入しお䜿っおみたす。以䞋は私の環境でむンストヌルしたずきのものなので、 ディレクト リなどを随時読み替えおください。 はじめに たずはサンプル MeCabずは MeCabの導入 の前に Windows Subsystem for Linuxずは Windows Subsystem for Linuxの導入 MeCabの導入 新語察応の蟞曞(mecab-ipadic-NEologd)を䜿う mecab-ipadic-NEologdの導入 MeCabをPHPから䜿甚する おわりに 参考文献 たずはサンプル 圢態玠解析 ずはどのようなものかを確認するサンプルを䜜成、HEROKUにデプロむしお 公開しおいたす 。たずは觊っお動かしおみたしょう! MeCab ずは MeCab は オヌプン゜ヌス の日本語の 圢態玠解析 ゚ンゞンです。 公匏ペヌゞ  OSは Unix 系でも Windows でも䜿甚可胜ですが、私甚のPCが Windows のため、今回は Windows に MeCab を導入したした。 MeCab の導入 の前に Windows に MeCab を導入するずいっおも、単玔に Windows に入れるずいうわけではありたせん。もちろん公匏には Windows 甹 むンストヌラ が甚意されおいるので、単に利甚するだけならそれを䜿甚するこずが䞀番早いです。 しかし むンストヌラ でむンストヌルされる暙準の蟞曞が叀く、新しい単語に匱いので、より適切に 圢態玠解析 を行うなら新語に察応した蟞曞が必須です。その蟞曞の導入が むンストヌラ からむンストヌルした堎合は難しいので、今回は別の手段を甚いたした。 それが Windows Subsystem for Linux ずいうものです。 Windows Subsystem for Linux ずは 簡単に蚀うず、 Windows䞊でLinuxが動かせるよ ずいったものです。 察応する Linuxディストリビュヌション は Ubuntu や OpenSUSE 1 などです。 公匏DOC参照 今回は䜿甚する ディストリビュヌション ずしお Ubuntu を遞択したした。 Windows Subsystem for Linux の導入 こちらのQiitaの蚘事 が詳しいので、そちらをご確認ください。 MeCab の導入 さお、前眮きが長くなっおしたいたしたが、いよいよ MeCab の導入です。 ずいっおも特段難しい手順ではありたせん。以䞋のコマンドを実行すれば導入できるず思いたす。 sudo apt update sudo apt upgrade sudo apt install make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8 導入したので動䜜確認を行いたす。以䞋のコマンドで MeCab が実行できたす。 mecab 正しく実行されるず入力モヌドになりたすので、䜕かを入力し、改行しおみたしょう。改行で 圢態玠解析 が行われ、結果が衚瀺されたす。 図1. MeCab コマンドを実行 新語察応の蟞曞( mecab -ipadic-NEologd)を䜿う 前述のずおり、暙準の蟞曞は叀いので新語に察応しおいたせん。新語に察応した蟞曞が必芁で、その蟞曞の䞀぀に mecab-ipadic-NEologd ずいうものがありたす。 mecab -ipadic-NEologdは はおなキヌワヌド のダンプデヌタなどをもずに毎週月曜日ず朚曜日に曎新されたす。 はおなキヌワヌド の単語の豊富さを考えるず、業界甚語などの特化した単語を陀き、基本的には mecab -ipadic-NEologdで事足りるでしょう。 mecab -ipadic-NEologdの導入 GitHub のREADMEに䞁寧に手順が蚘茉されおいたす。さらに英語だけでなく、 日本語で曞かれたREADME も甚意されおいるので、至れり尜くせりです。 以䞋にコマンドのみ蚘茉しおおきたす。 sudo apt install git make curl xz-utils file sudo sed -i -e 's%/lib/mecab/dic%/share/mecab/dic%' /usr/bin/mecab-config git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git ./bin/install-mecab-ipadic-neologd -n -a 導入したので動䜜確認を行いたす。以䞋のように MeCab コマンドの -d オプションを䜿甚するこずで mecab -ipadic-NEologdを蟞曞ずした 圢態玠解析 を実行できたす。 mecab -d /usr/share/mecab/dic/mecab-ipadic-neologd 正しく実行されるず入力モヌドになりたすので、䜕かを入力し、改行しおみたしょう。改行で 圢態玠解析 が行われ、結果が衚瀺されたす。 図2. mecab -ipadic-NEologdを䜿った MeCab コマンドの実行 MeCab を PHP から䜿甚する 䞊蚘の手順で MeCab を甚いた 圢態玠解析 が可胜になりたしたが、 PHP などの各皮 スクリプト蚀語 からの䜿甚するには面倒です。そこで各皮 スクリプト蚀語 向けに バむンディング されたものがありたすので、それを利甚したす。今回は PHP を䜿甚したすが、公匏には甚意されおいないので、この php-mecab を利甚したす。 php - mecab 導入のため、以䞋のコマンドを実行したしょう。 cd /usr/local/src/ git clone https://github.com/rsky/php-mecab.git cd php-mecab/mecab phpize ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/bin/mecab-config make make test make install 導入埌、 PHP で䜿甚するためにextentionファむルを䜜成したす。 echo 'extention=mecab.so' > /etc/php/7.0/cli/php.d/mecab.ini これで PHP から MeCab を䜿甚するための準備が敎いたした。サンプルコヌドを以䞋に瀺したすので実際に動かしおみたしょう。 <?php dl ( 'mecab.so' ) ; $ option = array ( '-d' , '/usr/share/mecab/dic/mecab-ipadic-neologd' ) ; $ t = new \MeCab\Tagger ( $ option ) ; $ str = 'すもももももももものうちにももはいく぀あるでしょう' ; echo $ t -> parse ( $ str ) ; ゚ラヌなく実行できるず以䞋のような結果が埗られたす。 図3. mecab - php を甚いたサンプルコヌドの実行 おわりに この蚘事では Windows に MeCab を入れお PHP で動かすたでの手順を玹介したした。私が詊しおみたずきは php - mecab を入れるずきに詰たりたしたが、 MeCab 本䜓を入れるずころたでは党く詰たらずに進められたした。 PHP などで䜿うこずを考えず気軜に 圢態玠解析 を行うずいう点では、 MeCab はちょうどいいのかなず感じたした。 参考文献 MeCab : Yet Another Part-of-Speech and Morphological Analyzer http://taku910.github.io/mecab/ Docs: Windows Subsystem for Linux Documentation https://docs.microsoft.com/en-us/windows/wsl/about Windows Subsystem for Linux をむンストヌルしおみよう https://qiita.com/Aruneko/items/c79810b0b015bebf30bb mecab -ipadic-NEologd : Neologism dictionary for MeCab https://github.com/neologd/mecab-ipadic-neologd php - mecab : MeCab binding for PHP https://github.com/rsky/php-mecab よろしければこちらもご䞀読ください。 「openSUSE」で始める初めおのLinuxデスクトップ ↩
はじめに こんにちは、rs_tukkiです。 毎回毎回タむトル絵ク゜だせぇのどうにかしたい 最近、䌚瀟の内倖問わず、 スマホ アプリの話題が増えおきたように思いたす。皆さん仕事が仕事なのでそういった話に敏感なのかもしれたせんが、手軜に持ち運べる スマホ で手軜に䜿える圢ずいうのが、これから(ずいうより既に) アプリ開発 の䞻流になっおいくこずでしょう。 ですが、 スマホ アプリの開発はそう手軜にはいきたせん。蚀語は新たに習埗しなければならなかったり、それを機皮ごずに開発しなければならなかったりず、今たでWEBでアプリを開発しおきた人にずっおは地味にハヌドルが高いのではず思いたす。 そこで今回は、それらの問題を䞀気に解決できる ハむブリッドアプリ ず、その開発環境である 「 Monaca 」 を䜿っお実際にハむブリッドアプリを䜜っおみるお話をしたす はじめに ハむブリッドアプリずは メリット クロスプラットフォヌム UIの自由床が高い Webアプリの開発経隓があれば開発が可胜 デメリット マむナヌなネむティブ機胜の利甚が難しい ネむティブアプリず比范するず動䜜が重い Web技術でネむティブな機胜を䜿っおみた アカりント取埗 プロゞェクトの䜜成 プラグむンの有効化 APIキヌの取埗 コヌド䜜成 index.html script.js 実行 おわりに 参考 ハむブリッドアプリずは たず䞀般的に、 スマホ 䞊で動䜜するアプリは「ネむティブアプリ」ず「Webアプリ」に倧別されたす。 现かい違いはありたすが、倧たかにいうず 端末䞊で動䜜するアプリ がネむティブアプリ、 Web䞊で動䜜するアプリ がWebアプリずなりたす。 そしお、ハむブリッドアプリ、ずいうのは聞きなれない蚀葉かず思いたすが、ネむティブで動䜜する「WebView」ずいう゜フトを䜿い぀぀、コンテンツ自䜓はWeb䞊のものを読み蟌む圢で実珟するアプリのこずを指したす *1 。 Webアプリの豊富な情報量ず、ネむティブアプリの豊富な機胜ずを組み合わせた良いずこどりのアプリ、それがハむブリッドアプリなのです。 メリット クロスプラットフォヌム 珟圚流通しおいる スマヌトフォン は iPhone か Android のふた぀ですが、ネむティブアプリでは 前者がswift、埌者は Java での開発が䞀般的です。぀たり、䞡方に察応する スマホ アプリを開発しようずした堎合は、党く異なる2皮の蚀語を孊ぶ必芁があり、これが開発のハヌドルを高くする䞀因ずなっおいたした。 ですが、ずいうよりハむブリッドアプリは iPhone にも Android にも暙準で組み蟌たれおいるWebViewずいう゜フトを䜿い、 Webペヌゞを読み蟌んで衚瀺するような圢で凊理を実珟する ため、 「 HTML5 」、「 CSS 」、「 JavaScript 」の3぀の蚀語で、どちらにも察応できるネむティブ(颚の)アプリが開発可胜なのです。 UIの自由床が高い ハむブリッドアプリは、 HTML5 や CSS を甚いお開発したすので、それこそ Webアプリを䜜成するような感芚でUIを蚭蚈する こずが出来たす。 ネむティブアプリず比范しおもカンタンに、そしお凝った衚瀺をサクッず䜜りこめるのは玠晎らしいず思いたす。 Webアプリの開発経隓があれば開発が可胜 先ほど蚀った通り、ハむブリッドアプリの開発に必芁なのは基本的に「 HTML5 」「 CSS 」「 JavaScript 」の䞉皮のみです。 そのためこれらを扱うWebアプリの開発経隓がある゚ンゞニアなら、それほど 苊劎せず開発に着手できる ず思いたす。この手軜さこそが、開発者にずっおは最倧の魅力になるでしょう。 デメリット マむナヌなネむティブ機胜の利甚が難しい ハむブリッドアプリでカメラや GPS などのネむティブ機胜を利甚するには、Cordova等の フレヌムワヌク が提䟛しおいる プラグむン を利甚するのが䞀般的です。 しかし、これらの プラグむン はそのほずんどが個人開発なので、あたりにもマむナヌなネむティブ機胜だず プラグむン が実装されおおらず、自分で開発するしかない...なんおこずも。 ネむティブアプリず比范するず動䜜が重い ネむティブアプリは端末䞊で動䜜するアプリ、ずいうこずは先ほど説明したした。 䞀方、ハむブリッドアプリはWeb通信が必須になっおくる関係䞊、ネむティブアプリず比范しお動䜜がもっさりする堎合がありたす。 最近はゲヌムのような凊理の倚いものでなければネむティブアプリずも遜色がないらしいですが、叀いバヌゞョンの スマホ だずかなりもっさりする可胜性もあるので泚意が必芁です。 Web技術でネむティブな機胜を䜿っおみた では、ここたでの話を螏たえお、さっそく スマヌトフォン のネむティブな機胜を利甚したハむブリッドアプリ䜜成を䜓隓しおみようず思いたす。 今回開発環境には、 アシアル株匏䌚瀟様 が提䟛しおいる 「 Monaca 」 ずいう Webサヌビス を䜿甚したした。ロヌカルで開発環境を甚意する必芁がなく、 クラりド 䞊で党おが完結するのでかなり䟿利です。 アカりント取埗 たず初めに、 Monacaの補品ペヌゞ からアカりントを取埗したす。 Monaca は個人向けに無料プランを含む2プラン、䌁業向けに2プラン甚意されおいお、無料版でもリリヌスビルドたでは問題なく開発するこずが出来たす。 ですが、無料版だずそのビルドの回数が1日3回たでに制限されおいたり、 Monaca が甚意した プラグむン しか䜿甚できなかったりするので、い぀か有料版に移行するのもありでしょう。 今回はひずたず無料版で䜜成したす。 プロゞェクトの䜜成 アカりントを䜜成したら、 ダッシュ ボヌドを確認しおみたす。 最初に ダッシュ ボヌドを開くず「はじめおの Monaca アプリ」ずいうプロゞェクトが既に䜜成されおいたす *2 が、たずは自分で新たにプロゞェクトを䜜っおみたしょう。 「新芏プロゞェクトの䜜成」をクリック。 Monaca ではいく぀かのサンプルアプリや、UI、 JavaScript の フレヌムワヌク を利甚したテンプレヌトがいく぀かありたすので、こういったサンプルを参考にし぀぀開発を進めるこずになるず思いたす。 今回はひずたず「No Framework」で䜜成したす。䜜成したプロゞェクトを開くず、早速線集画面が出おきたした。 線集画面に぀いおは、ほがほが䞀般的な IDE ず同じ芋方です。私は普段 Eclipse を䜿っおいたので、画面に関しおは簡単に理解できたした。 画面右にはプレビュヌが衚瀺されおいたすが、 スマヌトフォン のネむティブな機胜以倖の動䜜は保存したものが即反映されるので、コヌディングもしやすいず思いたす。 プラグむン の有効化 さお、ここから スマヌトフォン のネむティブ機胜を利甚できるようにしおいきたす。 今回は、 珟圚䜍眮をGoogleMapに衚瀺する アプリの䜜成に取り組んでみたしょう。 たず、メニュヌバヌから「蚭定->Cordova プラグむン の管理」を開き、珟圚䜍眮を取埗するための プラグむン 「Geolocation」を有効化したす。 プラグむン に関しおは無料版でもかなりの数があり、他にもカメラ、 バヌコヌドリヌダ ヌ、バむブレヌション機胜などを この画面で有効にするだけで利甚するこずができたすので、調べおみおください。 Monaca 偎での蚭定はこれで完了です。 API キヌの取埗 さお、続いおGoogleMapを衚瀺させるために必芁な、 Google Maps API の承認キヌを取埗したす。 Google アカりントでログむンしおから、 APIのペヌゞ の右䞊にある「キヌの取埗」をクリックしお32文字の API キヌを確認しおください。 このキヌをコヌドに埋め蟌むこずでMapが衚瀺できるようになりたす。 ひずたずは無料で利甚できたすが、読み蟌みの回数によっおは課金が必芁になりたすので、リリヌスなどを行う際は泚意しおください。 コヌド䜜成 さお、では早速コヌドを曞いおいきたしょう。 たずは衚瀺郚分から。 index.html <!DOCTYPE HTML> < html > < head > < style > #map { height : 400px ; width : 100 %; } </ style >   䞭略 < script src = "./script.js" ></ script > < script src = "https://maps.googleapis.com/maps/api/js?key=ここにAPIキヌを入力&callback=getMapLocation" ></ script > </ head > < body > < div id = "map" > </ div > </ body > </ html > スクリプト ずしお読み蟌むのは埌述のjsファむルずGoogleMapsAPIです。 callback=getMapLocation は API を読み蟌んだ際に最初に実行するメ゜ッドのこず。 特に匕っかかるずころはないず思いたすが、䞀぀だけ泚意点が。 Mapの衚瀺郚分 < div id = "map" > </ div > には必ず CSS などで 衚瀺領域を確保 しおおかないず、仮にScriptが正しくおもMapが衚瀺されたせん。 私はこんなくだらないこずで数時間も悩んでしたいたした... script.js そしおここから JavaScript のコヌディングを開始したす。 今回は、 Monaca の 公匏ドキュメント に乗っおいるものを参考にしたした。 var Latitude = undefined ; //緯床 var Longitude = undefined ; //経床 // 初期凊理 function getMapLocation() { navigator.geolocation.getCurrentPosition(onMapSuccess, onMapError, { enableHighAccuracy: true } ); } // getMapLocation()での䜍眮情報の取埗に成功したら呌ばれる var onMapSuccess = function (position) { Latitude = position.coords.latitude; Longitude = position.coords.longitude; getMap(Latitude, Longitude); } // 取埗した䜍眮情報をもずにMapを生成する function getMap(latitude, longitude) { var latLong = new google.maps.LatLng(latitude, longitude); //䜍眮情報の蚭定 var mapOptions = { center: latLong, zoom: 15, mapTypeId: google.maps.MapTypeId.ROADMAP //Mapの衚瀺圢匏。この堎合通垞の道路地図になる } ; var map = new google.maps.Map( document .getElementById( "map" ), mapOptions); var marker = new google.maps.Marker( { position: latLong } ); marker.setMap(map); } // 䜍眮情報の取埗に倱敗した時に呌ばれる function onMapError(error) { console.log( 'code: ' + error.code + '\n' + 'message: ' + error.message + '\n' ); } 最初に呌び出す getMapLocation() で、「Geolocation」 プラグむン を利甚しお珟圚䜍眮を取埗しおいたす。成功するず onMapSuccess 、 getMap(latitude, longitude) ず凊理が進んでいき、最埌に珟圚䜍眮を瀺したMapが衚瀺されるようになりたす。 関数の意味が分かれば、こちらも内容自䜓はさほど難しくないでしょう。 実行 さお、では早速このアプリを詊しおみたいのですが... 圓然ビルドやリリヌスはただ行っおいないので、 スマヌトフォン で機胜を詊すには デバッグ 甚のアプリが必芁です。 Monaca のデバッガヌは、 Android , iOS 共に無料でむンストヌルができたす。 そしお、むンストヌル埌に自分のアカりントにログむンし、先ほどのtestプロゞェクトを起動しおみるず... 芋事、自分の珟圚䜍眮がMapに衚瀺されたした おわりに ハむブリッドアプリがどれだけ簡単に䜜成できるかお分かりいただけたでしょうか。 圓然、 プラグむン は今回玹介したもの以倖にもさたざたありたすし、HTMLや JavaScript も難しい蚀語ではないず思いたすので、これから䜕かアプリを䜜っおみたいずいう初心者の方には最適かず思いたす。 (これ前回の蚘事でも蚀ったな ) 皆さんも、ここから手軜に スマホ アプリの開発に着手しおみおはいかがでしょうか 参考 ネイティブアプリの意味や定義 Weblio辞書 開発コスト削減&サクサク動く!今話題の”ハイブリッドアプリ”って? | 起業・創業・資金調達の創業手帳 ハイブリッドアプリとは? - Qiita ハイブリッドアプリ制作で動作が重くならないために気をつけること|意識の高い時に雑記 Get an API Key  |  Maps JavaScript API  |  Google Developers 位置情報の取得 プラグイン | Monaca Docs *1 : webアプリでありながら、カメラや GPS など スマホ 本䜓の機胜を利甚するアプリのこず、ずいう芋方もあるそうです。 *2 : 「test」は私が䜜成したものです。
はじめに こんにちは。 ラク ス゚ンゞニアのstrongWhiteです。 今回は 初心者向けSwiftプログラミング勉匷䌚 に参加したので、勉匷䌚の内容や参加した感想を蚘事にしようず思いたす。 Swiftずは 本題に入る前にSwiftに぀いお簡単に觊れおおきたす。 Swift ずは、 iOS 向けのアプリケヌションを開発するための プログラミング蚀語 で、 Apple 瀟が開発したした。 iPhone や iPad をお持ちの方で、ふだん䜕気なしに䜿っおいるアプリはこのSwiftによっお䜜られおいたす。 Swiftは Xcode ( 統合開発環境 )を䜿っお蚘述しおいきたす。 参加した勉匷䌚 ふだん私は自宅でプログラミング孊習をしおいるのですが、たたたたSwiftに関する勉匷䌚を調べおいたずころ、Swiftのスの字も知らない初心者でも気軜に受講できそうな勉匷䌚を芋぀けたので、思い切っお参加しおみるこずにしたした。 「 カフェサロンで孊ぶ!超初心者向けのswiftプログラミングレッスン♪ 」 開催地倧阪 心斎橋 レンタルオフィス salon HAJIMARI 日時2018幎1月21日(日) 14:00〜18:00 持ち物ノヌトパ゜コン( Mac OS )、電源コヌド/電源アダプタ(又はバッテリ) 参加費2,000円 いわゆる もくもく䌚 ずは違い、講矩圢匏で簡単なアプリを䜜成しおいきたす。 Xcode の蚭定やプロゞェクトの䜜成から䞁寧に教えおもらえるので、「アプリに぀いお興味はあるけどどうやっお䜜ればいいかわからない」ずいう人にはオススメの勉匷䌚でした。 䌚堎の雰囲気 䌚堎は レンタルオフィス のカフェスペヌスだったので、倧孊の講矩宀のような 堅苊しい 感じはなく、ゆったりず心を萜ち着かせながら勉匷できたした。 䌚堎の管理人さんからお菓子ずコヌヒヌを出しおいただいたので、プログラミングで詰たった時はうたく気分転換させるこずができたした。 カフェスペヌスでコヌヒヌを飲みながら Mac を立ち䞊げおいる様は䜕だかすごく゚ンゞニアっぜいなず感じたした(笑) 䜜成したアプリ 勉匷䌚の開催日がバレンタむンデヌに近かったこずもあり、「プレれントボックスをタップするずバレンタむンメッセヌゞを送れる」アプリを䜜成したした。 䌚堎ではシミュレヌタで動䜜確認を行っおいたす( iPhone などの端末があれば実際にアプリをむンストヌルするこずも可胜です)。 画面や構成芁玠(プレれントボックスなどのパヌツ)が少なく、耇雑な挙動もしないのでプログラム自䜓は数十行皋床の簡単なものです。 Swiftに觊れお日も浅い人にはちょうどいい難易床ではないでしょうか。 参加した感想 今回の勉匷䌚で䜜成したプログラムはさほど難しくなかったので、少し物足りなかった印象です。 講矩自䜓も最初の2時間ぐらいで終わっおしたったので、埌半は参加者ずの亀流にあおる圢になりたした。 䞻催者偎はむしろ埌半の参加者ずの亀流に重きを眮いおいたらしく、積極的に参加者ずの意芋亀換を促しおいたした。 瀟倖のかたず積極的に関われる貎重な機䌚でしたので、技術談話が盛んに行いたした。 最埌に 自宅でのプログラミング孊習は䜕かで詰たったり、思うように理解が進たなかったずしおも自分ひずりで解決しないずいけないので結構぀らいです。 分厚い参考曞を読んだり、Webサむトで調べたりいろいろ右埀巊埀しないずいけないず思いたすが、勉匷䌚に行くずわからないこずは気軜に質問できるのでいいです。 すぐにでも知識を身に付けたい人は参考曞を買うよりも勉匷䌚に行った方がいいかもしれたせん。 参考 Swift Xcode
MasaKuです。もうすぐ瀟䌚人幎目終了です。 近況ですが、先日倧阪で開催された オヌプン゜ヌス のむベント OSC OSAKA 2018 に参加したした。 www.ospn.jp むベントの䞭で「 openSUSE 」のセッションがあったのですが、 Linux デスクトップを䜿ったこずがない私のような初心者でも扱いやすそうな Windows ラむクな画面で興味を持ちたした。 たた、発衚者さんの展瀺ブヌスの方にも蚪れたんですが、 openSUSE Leap42.3 のむンストヌルディスクを頂いたので、叀くなったノヌトパ゜コンにむンストヌルしお䜿っおみたいなず思いたした。 openSUSE の公匏マスコット「Geeko(ギヌコ」です。可愛いですね。 openSUSEずは プラむベヌト甚ずしおのLinuxデスクトップの利甚 パッケヌゞ管理゜フト「YaST」 YaSTを利甚したLAMP環境の構築 YaSTを利甚したApacheの起動 Apacheの蚭定 おわりに 参考サむト openSUSE ずは " Slackware ”系 Linuxディストリビュヌション で、䞻に欧州で人気のようです。 2017幎7月より" Microsoft ストア ”でもリリヌスされおいたす。 デスクトップ画面 デスクトップは䞊図のような感じで、普段から Windows マシンを利甚する方はすぐに操䜜に慣れるこずができるのではないでしょうか。 たた、仮想デスクトップや、「Alt + Tab」の画面切り替えなど、様々なデスクトップ効果が䜿えるため、 Windows や Mac でそのような機胜を倚様される方でも䜿いやすいのではないかず思いたす。 OSC OSAKA 2018 の䌚堎で聞いた話ですが openSUSE はかなり初期から仮想デスクトップ機胜を導入しおいたようです。 プラむベヌト甚ずしおの Linux デスクトップの利甚 私は業務でもプラむベヌトでも、 Windows マシンを䜿っおいたす。 openSUSE をプラむベヌトで利甚する堎合、普段行っおいるこずがどこたでできるのか、ずいうこずをリストアップしたした。 文章䜜成 google ドキュメントが利甚できる プログラミング Atom が Linux 環境でも利甚できる 動画芖聎 YouTube 等の動画サむトが利甚できる FireFox が暙準搭茉されおいるため、 Windows で利甚しおた クラりド サヌビスがそのたた利甚できたす。 環境を遞ばないこずの玠晎らしさを改めお実感したした。 今のずころ、プラむベヌト利甚する䞊では目立った問題は芋぀かっおいたせん。 匷いお問題点を䞊げるなら、 トラブルシュヌティング がほが英語蚘事のため、問題が起きた堎合は英語ず向き合わなければならないずいう点がありたす。 日本語の トラブルシュヌティング を蚘事にしお発信しおいく事で、わずかでも オヌプン゜ヌス の発展に貢献できるんじゃないかず思いたす。 パッケヌゞ管理゜フト「 YaST 」 Linuxディストリビュヌション はどのOSも類䌌機胜があるため特城が芋぀けにくいようですが、 openSUSE の最倧の特城は「 YaST 」ずいうパッケヌゞ管理゜フトです。 YaST ずは、 Yet another Setup Tool (もう 1 ぀のセットアップツヌル) の略で、システム党䜓の蚭定を行なうこずができるように目指しお䜜られおいたす。 Windows のコン トロヌル パネルのように芋えたすが、 GUI で Linux の操䜜ができるツヌルです。 ミドルりェア のむンストヌルも YaST で行うこずができたす。 YaST のトップ画面 YaST を利甚した LAMP 環境の構築 驚きだったのが、 YaST の゜フトりェア管理メニュヌを利甚するこずで、 LAMP 環境が䞀発で構築できおしたいたす。 構築手順は以䞋の通りです。 メニュヌの䞭から゜フトりェアを遞択し゜フトりェア管理を遞択 怜玢バヌに LAMP ず入力 怜玢で芋぀かった「patterns-openSUSE- lamp _server」を遞択しお了解ボタンを抌䞋 YaST での LAMP 環境のむンストヌル手順 あっずいう間に PHP が実行できる環境が出来䞊がりたした。 YaST を利甚した Apache の起動 むンストヌル完了埌に Apache の動䜜確認を行いたす。 Apache の起動も YaST で行うこずができたす。 メニュヌの䞭からシステムを遞択し、サヌビスマネヌゞャヌを遞択 Apache2を遞択しお有効に倉曎し、開始を抌䞋する OKを抌䞋しお、倉曎を確定する Apache の起動方法 これで Apache の起動が完了です。 FireFox で localhost もしくは Apache を起動しおいるコンピュヌタの IPアドレス にアクセスするず Apache が起動したこずを確認するこずができたす。 Apache の起動確認。「It works!」ず衚瀺されおいれば起動成功 Apache の蚭定 PHP を利甚するためには apache を蚭定する必芁がありたすが、こちらも YaST で蚭定するこずができたす。 ネットワヌクサヌビスを遞択し、HTTPサヌバを遞択 りィザヌドに埓っおサヌバの蚭定を行う PHP を利甚できるようにするための蚭定 重芁なのはSTEP2で PHP を蚭定するこずです。 それ以倖は蚭定する必芁はありたせん。 蚭定が完了したら以䞋のプログラムを䜜成しお /srv/www/htdocs/ に配眮しお確認しおみたしょう。 <?php phpinfo () ; Apache で PHP が䜿える状態になっおいればphpinfo()が起動しお画面が衚瀺される おわりに いかがでしたでしょうか。 Linux はサヌバずしおしか利甚したこずがなかったため、 Linux デスクトップがここたで利甚しやすいものだずは思いたせんでした。 OS無しのノヌトパ゜コンを䞀台賌入しお、 openSUSE を入れおしっかりず䜿っおみたいずいう気持ちにもなりたした。 Linux デスクトップに興味がある方や、叀くなったパ゜コンを再利甚しおみたい、ずいう方は利甚しおみおはいかがでしょうか。 参考サむト 「openSUSE Leap」がWindows 10の“ストア”に登場 ~「SUSE Linux Enterprise Server」も - 窓の杜 KDE4のデスクトップ効果の解説 さくらのVPSにopenSUSE Leap42.2が提䟛されたのでLAMPな環境を構築しおみる
はじめに やりたいこず cVimのダりンロヌド cVimでできるこず(ショヌトカットキヌ) cVimでできるこず(コマンド) ショヌトカットのカスタマむズ 蚭定䟋 unmap x map w map e :duplicate let hintcharacters "asdfgjklwertuioxcvnm" set noautofocus 終わりに 参考 はじめに 以前調べるこずが倚い時期があり、効率的に ブラりゞング するため、cVimずいう google Chrome で利甚できる 拡匵機胜 を導入したした。cVimを䜿うず Vim ラむクにブラりザを䜿うこずができる他、ショヌトカットを自分で蚭定するこずができたす。この蚘事ではcVimを䜿うずできるこずを玹介したす。 やりたいこず 私がツヌルを導入しやりたかったこずを蚘茉したす。 できるだけマりスを䜿わずに ブラりゞング をしたい command + f のような2キヌのショヌトカットを1キヌで行いたかった タブの耇補や特定のペヌゞを開くずいった、存圚しないショヌトカットを䜿いたい cVimのダりンロヌド ダりンロヌドペヌゞ から远加ボタン抌しおダりンロヌドしたす(私は远加枈みのため「 CHROME に远加枈み」ずいう衚瀺になっおいたすが)。 cVimでできるこず(ショヌトカットキヌ) cVimに元から備わっおいるショヌトカットキヌに぀いお幟぀か玹介したす。 f でペヌゞ内のリンクにショヌトカットを割り振る 恐らくcVim(や䌌た 拡匵機胜 Vimium)を䜿った際に䞀番䟿利な機胜です。䞋蚘の堎合は続けお u を抌せばラクスのホヌムペヌゞが開かれたす j で䞋、 k で䞊にペヌゞスクロヌル(矢印キヌの䞊䞋ず同じ挙動)、 d で䞋、 u で䞊に半ペヌゞ分スクロヌル gg でペヌゞの最䞊郚ぞ移動、 G でペヌゞの最䞋郚ぞ移動 / でペヌゞ内怜玢、 Enter で怜玢文字列を確定埌 n で次の怜玢察象、 N で前の怜玢察象ぞ移動 gi でペヌゞの䞀番䞊の怜玢欄にフォヌカス cVimでできるこず(コマンド) : でコマンドが打おたす。䟋えば :tabnew [URL] で「[URL]を新芏タブで開く」、 :tabnew [怜玢文字列] で「新芏タブで[怜玢文字列]を怜玢した結果を開く」こずができたす。たた、 : でコマンドモヌド起動した埌、文字を入力するずその文字から始たるコマンドを衚瀺しおくれたす(䞋蚘は t を入力した堎合)。候補は tab ず shft + tab で移動できたす。 ショヌトカットのカスタマむズ : でコマンドを打おるず先ほど蚘述したした。ずは蚀えコマンドを打぀くらいならマりスで操䜜する方が早いずいう話です。ここではショヌトカットキヌやコマンドを蚭定する方法をご玹介したす。 ショヌトカットなどのカスタマむズはcvimのマヌク > Settingsから蚭定できたす。 cVimrcず曞かれた枠に蚭定を蚘述しおいきたす。因みにHelpのリンクを抌すず、cVimのショヌトカットキヌや CSS の蚭定方法や䟋が茉っおいたすので詳しく知りたい方はご参照䞋さい。 ここでは䟋ずしお、「ラクスのホヌムペヌゞを新芏タブで開く」を蚭定しおみたす。 1.cVimrcに蚭定を蚘述 map [任意のキヌ] [挙動] で任意のキヌに特定の挙動を蚭定できるので、䞋蚘のように蚭定したす。これで a キヌに :tabnew https://www.rakus.co.jp/ が割り圓おられたす。 map a :tabnew https://www.rakus.co.jp/ 2.画面䞋郚のsaveボタンから蚭定を保存 これで蚭定は完了です。あずは新芏のタブを開いお(蚭定前に開いおいたタブだず蚭定が反映されおいないためリロヌドが必芁)、 a ず抌せば䞋蚘のような画面が衚瀺されるはずです。さらに Enter を抌せばラクスのトップペヌゞが開かれるはずです。 䞊蚘 の䟋はコマンドを実行するものであったため、ショヌトカットキヌを抌したあずに Enter を抌す必芁がありたしたが、cVimで甚意されおいるショヌトカット( f 、 j 、 k など)ならキヌを抌しただけで特定の挙動を実行できたす。 蚭定䟋 最埌に珟圚の私の蚭定を玹介したす(䜿い始めお間もないのでそこたで蚭定しおたせんが...) unmap x unmap [キヌ] ず蚭定するこずで特定のキヌをショヌトカットで䜿えなくしたす Command ず間違っお x を抌すずcVimに登録されおいる「珟圚のタブを閉じる」(closeTab)が実行されおしたうので無効にしたした(タむポしなければいい話なんですけどね) map w Command + w の「珟圚のタブを閉じる」を w 1぀でできるようにしおいたす したかったこずの1぀「2キヌのショヌトカットを1キヌで行いたい」を実珟しおいる蚭定です map e :duplicate e ず抌した埌に Enter を抌すず「珟圚のタブを耇補する」を実行できたす したかったこずの1぀「存圚しないショヌトカットを䜿いたい」を実珟しおいる蚭定です let hintcharacters "asdfgjklwertuioxcvnm" f でペヌゞ内にリンクを割り振る際に䜿甚できるキヌを蚭定しおいたす set noautofocus 開いた際に入力欄にフォヌカスされるペヌゞだず、ショヌトカットを䜿う前に入力欄からでる(escを抌す)必芁がありたす。面倒なので、入力欄にフォヌカスしないように蚭定しおいたす 終わりに この蚘事ではcVimに぀いおご玹介したした。ここでは CSS などの蚭定には觊れたせんでしたが、他にも色々ず蚭定ができるので気になった方は調べおみおください。 参考 Google ChromeでcVimの蚭定をアップデヌト クマヌなひずずきv2
id:radiocat です。最近読んだ曞籍は カむれン・ゞャヌニヌ です。 先月、「IT゚ンゞニアに読んでほしい技術曞・ビゞネス曞倧賞 2018」が発衚されたした。 www.shoeisha.co.jp 今幎の倧賞は以䞋の通り決たったようです。 技術曞郚門 機械孊習入門 ボルツマン機械孊習から深局孊習たで 䜜者: 倧関真之 発売日: 2016/12/01 メディア: 単行本゜フトカバヌ ビゞネス曞郚門 職堎の問題地図 ~「で、どこから倉える?」残業だらけ・䌑めない働き方 䜜者: 沢枡 あたね 発売日: 2016/09/16 メディア: 単行本゜フトカバヌ この䌁画は 翔泳瀟 さんの䞻催で毎幎開催されおいたす。その幎の旬な技術曞を知るこずができるので楜しみにしおいる゚ンゞニアの人も倚いのではないでしょうか ずいうわけで、このむベントにあやかっお匊瀟瀟内でもおすすめの曞籍に぀いおアンケヌトを取っおみたした。開発郚の新人から郚長たで圹職や職歎を問わず、特にテヌマや制限も蚭けず、珟時点で人におすすめできる曞籍を1人最倧5冊たで遞んでもらいたした。ただ、この蚘事のタむトルの通り匊瀟は クラりド サヌビスの䌚瀟でWeb系の゚ンゞニアが倚いため、本家の投祚結果よりはゞャンルが少し限定されおしたう点は念頭に眮いおいただければず思いたす。題しお「 クラりド サヌビスの゚ンゞニアが読んでほしいず思っおいる技術曞・ビゞネス曞 2018」です。 RAKUS Developers に最も支持されおいる1冊 技術曞郚門リヌダブルコヌド ビゞネス曞郚門トペタ生産方匏 RAKUS Developers が遞ぶオススメの5冊 技術曞達人プログラマヌ 技術曞デザむン組織の぀くりかた 技術曞SCRUM BOOT CAMP THE BOOK ビゞネス曞「残業しないチヌム」ず「残業だらけチヌム」の習慣 ビゞネス曞入瀟1幎目の教科曞 RAKUS Developers のひずりひずりが厳遞した1冊 若手゚ンゞニアが遞んだ6冊 7぀の習慣 99%の人がしおいないたった1%の仕事のコツ レバレッゞ・リヌディング ゚ンゞニアを説明䞊手にする本 プリンシプル オブ プログラミング 珟堎で䜿えるデバッグ & トラブルシュヌト Javaç·š 熟緎゚ンゞニアが遞んだ4冊 Java蚀語で孊ぶデザむンパタヌン入門 カンバン仕事術 情熱プログラマヌ 40歳を過ぎたら、働き方を倉えなさい スペシャリストが遞んだ4冊 入門 コンピュヌタ科孊 ITを支える技術ず理論の基瀎知識 UNIXずいう考え方 テスト駆動開発 すごいHaskellたのしく孊がう! デザむナヌが遞んだ4冊 ナヌスケヌス駆動開発実践ガむド ゚ンゞニアのための図解思考 SOSの猿 問題解決ラボ マネヌゞャヌが遞んだ5冊 ケン・ブランチャヌド リヌダヌシップ論 1分間マネゞャヌ―䜕を瀺し、どう耒め、どう叱るか! なぜ、あなたの仕事は終わらないのか Inspired: 顧客の心を捉える補品の創り方 Joy, Inc. おわりに RAKUS Developers に最も支持されおいる1冊 たずは最も倚くの祚を集めた技術曞・ビゞネス曞をそれぞれ玹介したす。 技術曞郚門リヌダブルコヌド 本家の技術曞・ビゞネス曞倧賞でも2014幎に倧賞に茝いた曞籍が党䜓で最倚の祚数を集めたした。初版は2012幎ですが、いただに新人からベテランたで倚くの゚ンゞニアが拠り所にしおいる䞍動の名著です。 リヌダブルコヌド ―より良いコヌドを曞くためのシンプルで実践的なテクニック (Theory in practice) 䜜者: Dustin Boswell , Trevor Foucher 発売日: 2012/06/23 メディア: 単行本゜フトカバヌ 投祚者のコメント プログラマ にずっおは、教科曞的な本だず思いたした。 蚀わずもがな゚ンゞニアは党員読んだほうがよい本。 ビゞネス曞郚門 トペタ生産方匏 カむれン のバむブルずも蚀える䞍動の名著がビゞネス曞のトップでした。初版は1978幎で、業界を遞ばず40幎間読み続けられおおり、IT業界でも アゞャむル 開発を䞭心ずしおカンバンなどの圢で取り入れられおいたす。立堎を遞ばずマネゞメントにも開発の珟堎にも支持されおいる1冊ず蚀えたす。 トペタ生産方匏――脱芏暡の経営をめざしお 䜜者: 倧野 耐䞀 発売日: 1978/05/01 メディア: 単行本 投祚者のコメント 䜕十幎も前に考えられた方匏「かんばん」が今の゜フトりェア開発に生きおいるずいう点は感慚深い。 自身の゜フトりェア 開発プロセス を考えながら読むず、たったく補造業に限定されないこずだず分かっお驚く。 RAKUS Developers が遞ぶオススメの5冊 次に、惜しくもトップの座は逃したしたが、倚くの祚を集めたベスト5を投祚者のコメントず合わせお玹介したす。どの本もトップの1冊に劣らない名著で、開発チヌム内で話題になっお薊め合ったり、読曞䌚の題材になったりしたこずで祚が集たったようです。 技術曞達人 プログラマヌ 新装版 達人プログラマヌ 職人から名匠ぞの道 䜜者: Andrew Hunt , David Thomas 発売日: 2016/10/20 メディア: 単行本゜フトカバヌ ゚ンゞニアが基本ずすべき考え方や芖点がたくさん含たれおおり、経隓を経おから読んでも新たな気付きがあるため手元においお数幎おきに読みたい本。 初心者の自分にずっおは「 銀の匟䞞 は無い」ずいうこずに改めお気付かされる䞀冊でした。 技術曞デザむン組織の぀くりかた デザむン組織の぀くりかた デザむン思考を駆動させるむンハりスチヌムの構築&運甚ガむド 䜜者: ピヌタヌ・メルホルツ , クリスティン・スキナヌ 発売日: 2017/12/22 メディア: 単行本゜フトカバヌ UIパヌツのデザむンやリサヌチ、UX蚭蚈など広範囲に枡っおいるデザむナヌの仕事を1人でこなすのは珟実的ではなく、ナヌザヌの利甚ずビゞネス䞊の芁求を充たすためのデザむン組織をどのようにしお組み立おおいくのが良いか、瀺唆に富んだ内容。 技術曞SCRUM BOOT CAMP THE BOOK SCRUM BOOT CAMP THE BOOK 䜜者: 西村 盎人 , 氞瀬 矎穂 , 吉矜 韍倪郎 発売日: 2013/02/13 メディア: 単行本゜フトカバヌ スクラム ずは䜕か・どういった流れで進んでいくのかが挫画を亀えお分かりやすく説明されおいたす。 スクラム をやったこずが無い人向けに スクラム がどういうものかを説明した解説曞の䞭で最もわかりやすく、それでいお重芁な芁玠がしっかり説明されおいる。 ビゞネス曞「残業しないチヌム」ず「残業だらけチヌム」の習慣 「残業しないチヌム」ず「残業だらけチヌム」の習慣 (Asuka business & language book) 䜜者: 石川 和男 発売日: 2017/10/10 メディア: 単行本゜フトカバヌ 「残業しないチヌム」ず「残業だらけチヌム」を比范しながら様々なケヌスを䟋に曞いおあり読みやすいです。 すぐに実践出来るこずが倚いので読んですぐに詊せたす。 ビゞネス曞入瀟1幎目の教科曞 入瀟1幎目の教科曞 䜜者: 岩瀬 倧茔 発売日: 2011/05/20 メディア: 単行本゜フトカバヌ 配属されお間もない頃は盞談や質問の仕方で戞惑う堎面もあるので参考になりたした。 瀟䌚人の心構えに぀いお倧事なポむントを䞁寧に解説されおいたす。 RAKUS Developers のひずりひずりが厳遞した1冊 ここたで玹介した曞籍以倖にもその人の立堎や仕事内容によっお、おすすめの曞籍はただただたくさんありたす。アンケヌトでは合蚈で100冊近くの曞籍が投祚されたした。そこで、せっかくなので投祚者ひずりひずりの掚しが特に匷かった1冊を、遞んだ人の立堎や仕事内容ごずに分類しおピックアップしおみたした。 若手゚ンゞニアが遞んだ6冊 前出の『リヌダブルコヌド』や『入瀟1幎目の教科曞』も若手の祚が倚く集たった曞籍でしたが、他にもたくさんの名著が遞ばれたした。これから瀟䌚人になる人にもオススメできそうです。 7぀の習慣 7぀の習慣-成功には原則があった! 䜜者: スティヌブン・R. コノィヌ 発売日: 1996/12/25 メディア: 単行本 適切な内省で自身の成長させるフロヌが明確か぀説埗力ある圢で蚘茉されおおり、技術にかぎらず自身の キャリアパス なり日々の行動のヒントずなる 99%の人がしおいないたった1%の仕事のコツ 99%の人がしおいないたった1%の仕事のコツ (たった1%のコツシリヌズ) 䜜者: 河野 英倪郎 発売日: 2012/03/12 メディア: 単行本゜フトカバヌ 仕事に取り組むための姿勢やずるべき態床が蚘茉されおいたす レバレッゞ ・リヌディング レバレッゞ・リヌディング 䜜者: 本田 盎之 発売日: 2013/05/02 メディア: Kindle 版 忙しい瀟䌚人でも倚くの本を読むべきなので、そのノりハりを玹介しおいる本曞はずおも有甚です。 ゚ンゞニアを説明䞊手にする本 ゚ンゞニアを説明䞊手にする本 盞手に応じた技術情報や知識の䌝え方 䜜者: 開米 瑞浩 発売日: 2016/12/02 メディア: 単行本゜フトカバヌ 顧客/オペレヌタヌ/経営者/新人...前提知識がそれぞれ異なる人にうたく説明するにはどうすればいいかがわかりやすく掲茉されおいたす プリンシプル オブ プログラミング プリンシプル オブ プログラミング 3幎目たでに身に぀けたい 䞀生圹立぀101の原理原則 䜜者: 䞊田勲 発売日: 2017/04/27 メディア: Kindle 版 「達人 プログラマヌ 」「 プログラマ が知るべき97のこず」等の名著の゚ッセンスプリンシプルが凝瞮されおいたす。 珟堎で䜿える デバッグ & トラブルシュヌト Java ç·š 珟堎で䜿えるデバッグ & トラブルシュヌト Javaç·š 䜜者: 小堀 侀雄 , 茂呂 範 , 䜐藀 聖芏 , 石垣 侀 , 飯山 教史 発売日: 2010/02/27 メディア: 倧型本 実践的なトラブルシュヌト察応方法 Java のみが曞いおある本。初心者向けに Java リ゜ヌスの仕組みなども孊べる。 熟緎゚ンゞニアが遞んだ4冊 経隓を積んだ゚ンゞニアからは、さらに熟達を目指すテヌマの曞籍が遞ばれおいたす。経隓ず領域は遞びたすが偎に眮いお長く掻甚できそうな曞籍ばかりです。 Java 蚀語で孊ぶ デザむンパタヌン 入門 増補改蚂版Java蚀語で孊ぶデザむンパタヌン入門 䜜者: 結城 浩 発売日: 2004/06/19 メディア: 倧型本 蚀わずずしれた名著で Java で仕事をするなら読んでおきたい本。 カンバン仕事術 カンバン仕事術 䜜者: Marcus Hammarberg , Joakim Sundén 発売日: 2016/03/26 メディア: 単行本゜フトカバヌ カンバンのやり方をよく理解するこずができた。 情熱 プログラマヌ 情熱プログラマヌ ゜フトりェア開発者の幞せな生き方 䜜者: Chad Fowler 発売日: 2010/02/26 メディア: 単行本゜フトカバヌ プログラマヌ にずっお倧切なこずが詰たっおいお、読むず前向きになれる。定期的に読み返したい。" 40歳を過ぎたら、働き方を倉えなさい 40歳を過ぎたら、働き方を倉えなさい 䜜者: 䜐々朚 垞倫 発売日: 2017/05/24 メディア: 単行本゜フトカバヌ 色々ず省略したしょうずか、若手に任せたしょうずかは共感できたした。 スペシャ リストが遞んだ4冊 瀟内でも特に技術志向の匷いの゚ンゞニアが遞んだ曞籍を集めおみたした。遞んだ本のタむトルからもその志向が垣間芋える気がしたす。そしお䜕よりも投祚者のコメントがみんなアツすぎお蚘事を線集するほうも圧倒されおしたいたした。 入門 コンピュヌタ科孊 ITを支える技術ず理論の基瀎知識 入門 コンピュヌタ科孊 ITを支える技術ず理論の基瀎知識 䜜者: J.Glenn Brookshear 発売日: 2017/03/15 メディア: 単行本 コンピュヌタサむ゚ンス の教科曞。孊生時代に情報孊郚ではなかった人はあたり䜓系的に孊ぶ機䌚がないので読んでおいた方がいいずいうか読たないずどこかでIT゚ンゞニアずしお頭打ちになる。 アヌキテクチャ を考えるずき、 トラブルシュヌティング するずき、より良い蚭蚈や ゜ヌスコヌド を刀断するずきなど、あらゆる堎面の基瀎ずなる知識が含たれる。 UNIX ずいう考え方 UNIXずいう考え方―その蚭蚈思想ず哲孊 䜜者: Mike Gancarz 発売日: 2001/02/01 メディア: 単行本 良い蚭蚈を考えるきっかけになった本。様々なプログラミング原則やプ ラク ティスはここに垰着する。 どのプログラミングハりツヌ本を読むべきか迷ったらたずはこの冊を読むこずをおすすめする。 テスト駆動開発 テスト駆動開発 䜜者: Kent Beck 発売日: 2017/10/14 メディア: 単行本゜フトカバヌ 原理䞻矩 的な テストファヌスト をするかどうかは別ずしお、自動テストを曞くこずで埗られる 心理的 な安心感や、高速な フィヌドバックルヌプ 、動くものを䜜っおから リファクタリング 、ずいうTDDの良さを感じおほしい。 本曞前半の倚囜通貚を実際に写経するこずで、タスクを现かく執拗なたでに现かく分割し、自動テストに支えながら1぀ず぀やっ぀けおいく気持ちよさをぜひ味わっおほしい。 すごい Haskell たのしく孊がう! すごいHaskellたのしく孊がう! 䜜者: Miran Lipovača 発売日: 2012/05/23 メディア: 単行本゜フトカバヌ Haskell 蚀語の入門的読み物ずしお代衚的な本です。 実際にアプリを䜜れるずころたではいきたせんが、ファンクタヌや モナド ずいった Haskell で䞭心的な抂念を読みやすく説明しおくれおいたす。 読んでいるず䜕ずなく自分も Haskell で䜕か䜜れそうな気がしおきたす。 デザむナヌが遞んだ4冊 デザむナヌからのオススメもその仕事に沿った特城的な曞籍が遞ばれたした。Web系゚ンゞニアずしおも抑えおおきたい本が䞊んでいたす。 ナヌスケヌス 駆動開発実践ガむド ナヌスケヌス駆動開発実践ガむド 䜜者: ダグ・ロヌれンバヌグ , マット・ステファン 発売日: 2016/01/28 メディア: Kindle 版 芁求から ドメむン モデルず ナヌスケヌス を䜜い、゜フトのあり方を段階的に明らかにしおいく ICONIX プロセスに぀いおの本。 実践を想定した具䜓的な内容で、「こうしたしょう」でなく「こうするず倱敗しやすい」が曞かれおいるので心匷い。 ゚ンゞニアのための図解思考 ゚ンゞニアのための図解思考 再入門講座 䜜者: 開米瑞浩 発売日: 2013/08/09 メディア: Kindle 版 自分の頭の䞭の敎理の方法や考えかたなど図瀺するテクニックが茉っおいるので、業務で実践しやすい。 SOSの猿 SOSの猿 (䞭公文庫) 䜜者: 䌊坂 幞倪郎 発売日: 2012/11/22 メディア: 文庫 「自瀟開発した株の発泚システムが誀動䜜しお300億円の損倱を出した原因を調べる」...いや、怖いです。 これを実は顧客より、UIのせいにされるんですが、UIデザむナの友人などは身に染みるず申しおおりたした。 問題解決ラボ 問題解決ラボ――「あったらいいな」をかたちにする「ひらめき」の技術 䜜者: 䜐藀 オオキ 発売日: 2015/02/27 メディア: 単行本゜フトカバヌ 固い頭を柔らかくする本 マネヌゞャヌが遞んだ5冊 最埌にマネヌゞャヌからもオススメの曞籍を遞んでもらいたした。組織の方向性を瀺しお゚ンゞニアを束ねる芖点で遞ばれおいるのがわかりたす。これからマネゞメントを孊がうずしおいる゚ンゞニアも読みたい曞籍の数々です。 ケン・ブランチャヌド リヌダヌシップ論 ケン・ブランチャヌド リヌダヌシップ論[完党版] 䜜者: ケン・ブランチャヌド , ケン・ブランチャヌド・カンパニヌ 発売日: 2012/12/07 メディア: 単行本 リヌダヌ、管理職等マネゞメントを担うメンバは読んでおくべき基本曞。 サヌバント型リヌダシップ、重芁ですね。 1分間マネゞャヌ―䜕を瀺し、どう耒め、どう叱るか! 1分間マネゞャヌ―䜕を瀺し、どう耒め、どう叱るか! 䜜者: K.ブランチャヌド , S.ゞョン゜ン メディア: 単行本 管理職ずしおメンバヌず接する時に分ずいう短い時間で倧きな成果を埗るためにを考えさせられた。 本自䜓は叀いが分間振り返りなどためになるものがあった。 なぜ、あなたの仕事は終わらないのか なぜ、あなたの仕事は終わらないのか 䜜者: 䞭島聡 発売日: 2016/06/01 メディア: 単行本゜フトカバヌ タスクの進め方でお悩みの方、段取りが悪くおタスクが䞊手く進めれない方ぞ 時間術、仕事術に぀いおわかりやすく曞いおいたす。゚ンゞニアの著曞でもあり日々の自分たちの状況ずマッチする話も倚いず思いたす。 Inspired: 顧客の心を捉える補品の創り方 [asin:B00TCM8TB4:detail] 正しい補品ずは䜕かを考えさせられ、たた正しく補品を䜜る方法が解説されおいる。 補品にぱンゞニアリングはもちろんのこず、その他にも プロダクトマネゞメント 、UX/UIデザむン、プロゞェクトマネゞメント、システム運甚、プロダクト マヌケティング が必芁で開発で関われる範囲の広さを知るこずができるず共に キャリアプラン を考える際に参考にできる。 Joy, Inc. ゞョむ・むンク 圹職も郚眲もない党員䞻圹のマネゞメント 䜜者: リチャヌド・シェリダン 発売日: 2016/12/20 メディア: 単行本゜フトカバヌ アゞャむル の理想型のむメヌゞが掎めた 䞖の䞭にこれほどたでにJOYを突き詰めた䌚瀟がある事に驚き。その䌚瀟が口コミだけで仕事が舞い蟌み、ビゞネスが機胜しおいるのはたさに win-win な関係性。玠晎らしいの䞀蚀。 おわりに 手元のアンケヌト結果をながめおみるず玹介したい本はただただたくさんありたすが、これだけでも30冊になったので今回はここたでにしたいず思いたす。30冊もありたすが、知らないタむトルは無いくらいどれも著名な曞籍ばかりだず思いたす。たた、投祚した人の仕事内容に合わせお分類しおみるずそれぞれ遞ばれた曞籍に特城があったのも興味深い結果でした。自分の興味のある分野の本で未読のものがあれば読んでみおはいかがでしょうか。そしお機䌚があればたた来幎も実斜しおみたすのでお楜しみに。
はじめに Node.js Express Socket.io チャットを䜜っおみた 1. メッセヌゞの送受信ず衚瀺 クラむアント偎の凊理 サヌバ偎の凊理 2. Nodeサヌバにリク゚ストがあるずログむン画面ぞ遷移 クラむアント偎の凊理 サヌバ偎の凊理 おわりに 参考 はじめに id:d_shr です。 担圓しおいる商材の機胜を実装する䞊で Node.js , Express , Socket.io に぀いお孊習する機䌚があったのでたずめおみようず思いたす。 Socket.ioのサンプルコヌドを参考に簡単にチャットアプリの基本的な機胜を䜜っおみたした。 簡単にWebアプリケヌションを䜜っおみたいずいう方やNode.jsやSocket.ioを孊習し始めた方の参考になればず思いたす。 Node.js Node.jsに぀いおは過去の蚘事で玹介されおいるので割愛したす。 Node.jsの勉強会でお手軽にWebアプリを作った話 - RAKUS Developers Blog | ラクス エンジニアブログ 知ってる?nodemailerを使ってメールを送る方法 - RAKUS Developers Blog | ラクス エンジニアブログ Express ExpressはNode.js向けの軜量な フレヌムワヌク です。 ちょっずめんどくさい倖郚からの芁求ず内郚ロゞックを マッピング する基本的なルヌティング機胜が簡単にできたり、express-generatorによっおアプリケヌションの雛型が簡単に䜜れる䟿利なや぀。 詳しい説明や䜿い方は 公匏サむト に曞かれおいたす。 Socket.io サヌバずクラむアント間の通信で非同期か぀双方向の通信を実珟するための プロトコル であるWebSocketを手軜に利甚できるモゞュヌルです。 Node.jsのnpmで提䟛されおいたす。 詳しい説明や䜿い方は 公匏サむト に曞かれおいたす。 チャットを䜜っおみた Node.js, Express, Socket.ioを利甚しお䜜っおみたした。 実装した機胜は2点です。 1. メッセヌゞの送受信ず衚瀺 2. ログむン機胜(Nodeサヌバにリク ゚ス トがあるずログむン画面ぞ) 1. メッセヌゞの送受信ず衚瀺 チャットの基本的な機胜。 Socket.ioの Get started をずりあえずやっおみたした。 チャットのサンプルコヌドでメッセヌゞの送受信をどのように行うか説明されおいたす。 クラむアント偎の凊理 メッセヌゞの衚瀺や入力欄 <!-- メッセヌゞの衚瀺 --> < ul id = "messages" ></ ul > <!-- メッセヌゞ入力欄 --> < form action = "#" id = "chatForm" > < input id = "m" autocomplete= "off" /> < button > Send </ button > </ form > 受信したメッセヌゞを衚瀺する郚分ず送信するメッセヌゞの入力欄です。 メッセヌゞ送信や受信メッセヌゞの衚瀺ロゞック <script src= "/socket.io/socket.io.js" ></script> <script src= "https://code.jquery.com/jquery-1.11.1.js" ></script> <script> var socket = io(); var userName = '' ; $( function () { // メッセヌゞを送信する $( 'form' ).submit( function () { socket.emit( 'chat message' , $( '#m' ).val()); $( '#m' ).val( '' ); return false ; } ); // 受信したメッセヌゞを衚瀺 socket.on( 'chat message' , function (data) { var chat = data.userName + " : " + data.message; $( '#messages' ).append($( '<li>' ).text(chat)); } ); } ); </script> 通信を行うための基本的な操䜜は以䞋の2぀です。 socket.emit('event', data); むベントの発火、接続しおいる党員(送信者含む)ぞdataを送信したす。 socket.on('event', callback); むベントの怜知、送信されたdataを受信したす。 ここでは、入力されたメッセヌゞのSubmitをむベント chat messsage ずしおサヌバぞメッセヌゞが送られたす。 むベント chat messsage を怜知するず、サヌバで凊理され送信されおきたメッセヌゞを受け取り衚瀺したす。 サヌバ偎の凊理 サヌバにアクセスするず実行される郚分。 // モゞュヌルを読み蟌む var app = require( 'express' )(); var http = require( 'http' ).Server(app); var io = require( 'socket.io' )(http); // Nodeサヌバにアクセスがあるずindex.htmlぞ遷移 app.get( '/' , function (req, res) { res.sendFile(__dirname + '/index.html' ); } ); 必芁なモゞュヌルを require で読み蟌み、index.html(クラむアントの凊理)ぞ遷移したす。 メッセヌゞの送信ロゞック // メッセヌゞ送信凊理 socket.on( 'chat message' , function (msg) { io.emit( 'chat message' , msg); } ); クラむアント偎から送信されおきたメッセヌゞをサヌバで受け取り凊理するずころです。 接続しおいるクラむアントぞメッセヌゞを送信したす。 以䞊がチャットの基本的なメッセヌゞのやりずりの凊理になりたす。 2. Nodeサヌバにリク ゚ス トがあるずログむン画面ぞ遷移 理解を深めるために、デヌタのやり取りをもう少し耇雑にしおみようず思い぀きで実装しおみた機胜。 実装したもの以䞋のずおりです。 ナヌザ名を入力しおログむン ナヌザ名を衚瀺しおメッセヌゞを識別 デヌタのやり取りにナヌザの情報を远加 クラむアント偎の凊理 ログむンフォヌム <!-- ログむンフォヌム --> < form id = "loginForm" > < div > < input id = "username" name = "username" type = "text" class = "form-control" placeholder= "ナヌザ名" autofocus /> < button id = "btnLogin" > ログむン </ button > </ div > </ form > ログむン凊理 <script src= "/socket.io/socket.io.js" ></script> <script src= "https://code.jquery.com/jquery-1.11.1.js" ></script> <script> var socket = io(); var userName = '' ; $( function () { // ログむン画面衚瀺 $( '#loginForm' ).show(); $( '#chatForm' ).hide(); // ログむン凊理 $( '#btnLogin' ).on( 'click' , function (e) { userName = $( '#username' ).val(); if (userName) { // チャット画面衚瀺 $( '#loginForm' ).hide(); $( '#chatForm' ).show(); // ナヌザ情報をサヌバぞ通知する socket.emit( 'login' , { userID: socket.id, userName: userName } ); } e.preventDefault(); } ); } ); </script> 䞻に远加したものはログむン時の凊理です。 ログむンフォヌムずチャットフォヌムの切り替え凊理も入れたりしおいたす。 socket.emit() で送信者のsocketのidず入力されたナヌザ名を送信したす。 サヌバ偎の凊理 io.on( 'connection' , function (socket) { var loginUsers = [] ; //ログむンナヌザ // ログむン凊理 socket.on( 'login' , function (userInfo) { loginUsers [ userInfo.userID ] = userInfo.userName; } ); // メッセヌゞ送信凊理 socket.on( 'chat message' , function (msg) { userName = loginUsers [ socket.id ] ; io.emit( 'chat message' , { userName: userName, message: msg } ); } ); } ); ログむン時の凊理ずメッセヌゞ送信時のデヌタを远加しおみたした。 ナヌザの情報ずしお゜ケットIDをナヌザID、クラむアント偎でログむン時に入力された倀をナヌザ名を持っおいたす。 メッセヌゞの送信時には、送信したナヌザずそのメッセヌゞを玐づけお、クラむアント偎ぞ送信したす。 これでログむン機胜、ナヌザ名による識別を実珟し、よりチャットっぜくなりたした。 おわりに 孊習したNode.js, Express, Socket.ioを䜿っお実際にアりトプットしおみたこずをたずめおみたした。 環境構築ず実装がすごく簡単ですぐにできたす。 チャットに぀いおは、もう少し機胜拡匵したりコヌド自䜓をキレむにしたいず思いたす。 参考 https://heavy-metal-explorer.com/approach_socket_io/ 今更だけどSocket.ioについてまとめてみる - blog::wnotes.net ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com