Tag Archives: AdventCalendar

詰将棋LINE Botを作りました

DataLabs所属の@sugyanです。この記事はLINE Advent Calendar 2017の11日目の記事です。

個人的な話ですが、この秋から新たな趣味として将棋を始めました。この趣味に自分の技能を活かして何かしてみたいと思い「詰将棋の問題を自動生成して出題してくれるLINE Bot」を作りましたので、紹介します。

詰将棋とは

簡単に紹介しますと、詰将棋とは将棋のルールを用いた一種のパズルで、以下のようなルールになっています。

  1. 攻め方(先手)が玉方(後手)の玉を詰ますのが目的。
  2. 攻め方は必ず王手をかける(玉方は必ず王手をはずす)。
  3. 玉方は盤上と攻め方の持駒以外すべての駒(ただし玉は除く)を合駒として使用できる。
  4. 玉方は最善を尽くし、最も長く手数がかかるように逃げる。
  5. 玉方は無駄な合駒をしない。
  6. その他は指し将棋のルール通り。二歩、打ち歩詰め、行き所のない駒、連続王手の千日手はいけない。

日本将棋連盟 詰将棋ページより)

例えば、以下のような形で出題されます。

React Starter KitにみるWebフロントエンドに求められる機能と実装

初めまして、IT戦略3チームでUIUXデザインと社内プロジェクトのTech Leadを担当している高村といいます。この記事では、React Starter Kitという汎用的なWebプロジェクトテンプレートの実装を参考にしながら、改めて、なぜWebフロントエンドは複雑なのか、その解決方法は何かを振り返ってみたいと思います。この記事をきっかけとして、実際に現場でツール選定を行うフロントエンド開発者の方だけでなく、普段「フロントエンドには時間をかけたくない」と思っているサーバサイド開発者やWebディレクターの方たちに、「だからフロントエンドの課題は収束しにくいんだな」「フロントエンドといっても範囲は広いから、目的やユースケースを絞ってツールを選定しよう」と感じていただければ幸いです。

この記事はLINE Advent Calendar 2017の10日目の記事です。

UIにMetalが使えないかいろいろ試してみた話

こんにちは、LINEマンガiOSクライアント担当のMasaki Haga(@hagmas)と申します。この記事はLINE Advent Calendar 2017の9日目の記事です。

2014年になって初めて発表されたMetalですが、2017年になってさらに効率化、洗練され、VRのサポートも組み込まれたMetal2が発表されたり、Appleのさまざまなフレームワークの基幹部分にMetalが導入されていたりと、Metalへの注目がさらに高まりつつあります。そんなMetalに、みなさんは「Metalを触ってみたいけど、どこから、何から始めたらいいのかわからない」または「Metalに興味はあるんだけど、自分のアプリケーションにはいまいち関係なさそうだ」などと感じたことはないでしょうか。

私が担当しているLINEマンガのようなWebアプリケーションのiOSクライアントでは、ほとんどの場合、ゲームのような複雑な3D描写も大きなデータを並列計算で処理していくような場面もないかと思われます。しかし、「ユーザーにWOWと言わせるようなアプリ体験ってなんだろう」と考えている時、Metalのパワフルな並列計算と柔軟なAPIを使うことによって、UIKitでは実現できないような複雑で魅力的な描写をShaderで作りだして既存のUIにうまく溶け込ませることができれば、より新鮮なユーザー体験が実現できるかもしれないと思いたち、いろいろ試してみました。

ShaderでできることですのでOpenGLを使ってももちろん実現できますが、サンプルのプロジェクトなども複数掲載しておきましたので、それらを通してMetalのコーディングのしやすさや楽しさなど知ってもらえれば幸いです。

ブラウザでアニメーションスタンプ画像を深く読み込む

こんにちは、LINE Fukuokaのha1fです。この記事はLINE Advent Calendar 2017の8日目の記事です。

現在はiOSアプリの開発を担当していますが、入社前に内定者アルバイトとして社内ツールの作成を担当していました。その時の業務の1つ、アニメーションスタンプチェッカーの作成について書きます。

APNGとは

apng

APNG(Animated Portable Network Graphics)はアニメーション用の連番画像の形式で、LINEのアニメーションスタンプでも利用しています。

GIFと比べると、フルカラーを使えたり、アルファチャンネルを持てたり、圧縮率が高かったりという利点があります。

APNGはPNGと互換性があり、APNG非対応の環境でも、通常の静止画として表示されます。ツールを使って、連番のPNG画像などから作成できます。

LINE STOREにおけるテスト自動化の取り組み

この記事はLINE Advent Calendar 2017の7日目の記事です。

こんにちは、LINE FukuokaでLINE STOREのサーバーサイド開発をしているHiraiです。本日は、LINE STOREにおけるテスト自動化の取り組みを紹介したいと思います。

LINE STOREとは

LINE STOREというサービスをまだご存じでない方もいらっしゃると思いますので、まずはその紹介から。

LINE STOREは、LINEのスタンプや着せかえ、ゲームやファミリーサービス(LINEプレイ、LINEマンガ、LINE占い、LINE LIVEなど)の通貨を購入できるウェブのサービスです。購入したスタンプや着せかえをLINEの友だちにプレゼントできたり、クレジットカード以外(キャリア決済、LINEプリペイドカードなど)の決済手段を使用できたりなど、LINE STORE独自の機能もあります。

今年になって、公式アカウントを友だち追加したり無料スタンプが取得したりできる機能も追加されました。日々コンテンツが充実してきていますので、ぜひ一度アクセスしてみてください。

LINE STORE

Excel管理の座席表をLeafletでWeb化した話

こんにちは、LINEのIT支援室で社内システムの開発と運用をしている岩月です。この記事はLINE Advent Calendar 2017の6日目の記事です。

人員の増加に対応するために、今年の4月、LINEはJR新宿ミライナタワーに移転しました。移転に伴い、IT支援室ではいくつかの新しい社内システムを導入しましたが、今日はその1つである「座席表」についてお話させていただきます。

開発のきっかけ

移転前、座席の管理は以下のようにExcelで行われていました(名前は消しています)。

Jenkinsに代わるGo製OSS CIツールDrone

この記事はLINE Advent Calendar 2017の5日目の記事です。

はじめまして。LINEのIT支援室という部署で社内システムの開発・運用を担当しております、suzuki-shunsukeです。

DroneというCIツールについて書きたいと思います。初心者向けに公式ドキュメントの「Installation」と「Usage」をベースに自身の経験や考えを肉付けして、Droneとは何か?、Droneの構築方法、.drone.ymlの書き方について説明します。Droneの日本語情報はまだまだ少ないので参考になればと思います。

JenkinsよりもDroneを贔屓した部分が見られますが、あらかじめご了承ください。

今更話す、Messaging APIのNode.js版SDK開発

こんにちは!LINEでフロントエンド開発を担当しているJunと申します。この記事はLINE Advent Calendar 2017の4日目の記事です。今日はMessaging APIのNode.js版SDKの開発について書きたいと思います。Node.js版SDKのv1.0がリリースされてもう半年以上、今更感がすごくありますが、開発前から今にかけて面白かったことや工夫したことをいろいろ紹介します。

開発のはじまり

Node.js版の開発が始まろうとしていた当時、Messaging API SDKが対応している言語プラットフォームは以下の6つでした。

  • Java
  • Perl
  • Ruby
  • Go
  • PHP
  • Python

LINE Developersサイトを支えるDAO自動生成ツール

はじめに

こんにちは、LINE Developersサイト、サーバーサイドを担当しているSongran Liuです。この記事はLINE Advent Calendar 2017の3日目の記事です。皆さんご存知だと思いますが、LINE Developersサイトは今年9月にリニューアルされました。

LINE Developersサイト

今回のリニューアルでは、いろいろな課題やチャレンジもありました。今日はリニューアルに関わるチャレンジの1つ、今も活躍しているDAO自動生成ツールの設計について、紹介したいと思います。

RxJava 2とArmeriaでマイクロサービスを非同期化してみた

こんにちは、LINEメッセンジャーのサーバーサイド開発チームに所属してスタンプや着せかえに関連する開発を担当している川田(@hktechno)です。この記事はLINE Advent Calendar 2017の2日目の記事です。

私が所属しているチームは、数年前からマイクロサービス化されたサービスのRPC(Remote Procedure Call)やDBアクセスを非同期化し、レイテンシの削減やサーバーリソースの省力化に勤しんできました。最近は、LINE内部で開発しているRPCサーバーArmeriaRxJava 2を使って、“Javaにしては”なかなかイケている内部構成になってきました。この記事では、そんな私達のチームで開発しているスタンプ・着せかえ関連サーバーの裏側についてご紹介したいと思います。

LINE Shop Architecture