SYの独り言#1

本日は趣向を変えて記載したいと思います。

皆さんは本を読むでしょうか?

活字の本や漫画、プログラムの本、デザインの本

様々な本があるかと思います。

本は色々な事を教えてくれます。是非読んでみましょう。

ちなみに私が良く読んだ本に

「野村ノート」「無形の力」「負けに不思議の負けなし」

以上は野村克也氏の著書です。

野球の本ばかりですが、この中には人生論やリーダー論

仕事の姿勢等、野球の事だけで無く社会人として

生きて行く上で必要な事が多々書いてあります。

野球の事が少しでも分かる人が読むと、より分かり易く

今の境遇に当てはめれるのではないでしょうか。

 

今日おすすめしたい本は初回なので、難しくしてもいけないので

漫画にしたいと思います。

「コンシェルジュ」

原作:いしぜきひでゆき、画:藤栄道彦

こちらをおすすめします。

ホテルの役職の一つで、門番や世話役などのサービス業でもあるコンシェルジュを主人公とした漫画で、ホテルの宿泊客やスタッフが巻き起こす様々な問題や頼み事を丁寧に解決していく。

といった内容なのですが、非常に仕事に対して唸らされる

場面が多々あります。

私たちPG・DGは画面を見てアプリを作成したり、デザインを起こしたりします。

なので忘れがちですが、その作成した物は全てお客様の手の中に行きます。

お客様がどう思っているか、お客様がどうしたいか等この漫画の中では

「ハッ」とする事が多々出てきます。

一度見て見てはいかがでしょうか。

(物語的には好き嫌いがあるかと思いますが…)

以上簡単でしたが、本の紹介をさせて頂きました。

また面白い本があれば紹介します。

[JS] スマホブラウザでズームしてもスクロールしても下に居座り続けるボックスを作る

こんにちは。カイザーです。
今日はJSです。

以前、拡大操作が前提のスマホ用Webサイトに、画面下に固定の情報を置く必要が出てきました。

拡大できないWebサイトや、PCサイトの場合、単にcssで「position: fixed;bottom: 0px;」とするだけでOKなのですが、これだとスマホで拡大するとレイアウトが崩れてしまいます。

これには現状では対応できないようなので、JSで対応しました。

それで、下記を参考に作ってみました。

スマホ対応の参考に。JavaScriptでウェブページがどのくらい拡大されているのかを取得する方法。

実際には「updateInfoPosition()」で「#information」の位置を、現在のスクロール・拡大率を元に更新しています。また、y座標は計算が複雑だったので、「getScrollBottom()」に分けてあります。

また、JSでのDOMを使った描画更新は重いので、タッチ時・ジェスチャー時は「#information」を隠し、それが終わった1秒後に表示するようにしています。1秒間は、スマホブラウザ特有の惰性移動のため、タイマーで待ってもらっています。

趣味の時間

お久しぶりです、田中です。

突然ですが、みなさんは「趣味」がありますか?

スポーツをする、音楽を聴く、本を読む…など人によって趣味は違うと思います。
ちなみに私も趣味はたくさんあるのですが、一番の趣味は「絵を描く」ことです。物心ついた時から描き続けているので、絵を描く趣味を手放すことは考えられず、きっとずっと描き続けてるんだろうな〜と思います(笑)

ところで、みなさんはどのような時に趣味の時間を過ごしていますか?

学校や仕事等が忙しくてなかなか時間が取れない方も少なくないと思います。

私も絵を描きたいのはやまやまですが、基本金曜日の夜〜土日に描くようにして、平日は次の日の仕事に支障が出ると困るのでなるべく趣味よりも睡眠を優先するように心がけています…と言いつつ絵を描くことは自分の中でストレス発散方法でもあるのでちょっとした息抜き程度のつもりが夢中になって気づいたら夜中の1時…!なんてことは多々あります;;
夜更かしをしていいことはほとんどないので、そういうところはきちんとけじめをつけなければいけないと感じています…。

これからはうまく趣味の時間を作って規則正しい生活習慣が身につけられるよう、いろいろ試行錯誤していきたいと思います。


他の記事にもありましたが、社員の皆さんで釣りに行った際に釣ったお魚さん4匹(鯛2匹・シマアジ2匹)は家で美味しくいただきました!
ちょうど父の日で良いプレゼントになったのではないかと思います^^
父も魚をさばいたのは初めてらしく、「いい経験だった」と喜んで(?)いました笑

以上、田中でした!

6/17は海上釣り堀へ

こんにちは!そしてお久しぶりです松つんです。

すでに他の記事にあったかと思いますが、先週の土曜日は社員の方達と尾鷲まで海上釣り堀をしてまいりました!!

到着は朝の2時半あたりで、とても寒く意識もぼんやりしてました(笑)

釣り堀を始めた頃にはすっかり外も眩しいくらい明るく、素敵な写真が取れました♪↓

景色が綺麗で、魚がかかるまでぼんやり黄昏てました^^

さて、釣りの結果ですが、私は鯛を2匹釣りました!!何回かかかって逃げられたりしましたが、食べるには十分な量で満足!
他の社員さんたちもたくさん釣り上げて、大きなブリを合計2匹も釣れました(驚)
私はもう。。見ててただ興奮してましたね(笑)

釣った鯛は家で「刺身・鯛煮・鯛茶漬け」など調理して食べました!身がぎゅっと詰まっていてとても美味でした^^♪

ちゃんとした釣り?をしたのは初めてでしたが、すごく濃い体験になり、充実した一日が送れた気がします!!
当方このかた生まれて20年くらい経ちましたが、まだまだ経験したことがないものが世の中に溢れてます。今回の体験で若いうちに色んなものに挑戦していきたいなと強く思いました。もしかすると新しい何かを発見するかも・・・?(??)

終わった後に九鬼駅を撮りました↓

 

 

 

 

 

 

短いですが、今回はこの辺で!!ではではまた!

休日の過ごしかた

こんにちは、前回の時に次回はゆるい感じで書くと言ってしまいましたので、今回はゆる〜く書いていこうと思います。

普段みなさんどのように休日を過ごしていますか?

自分は普段、ついついダラダラ過ごしてしまいがちです。

休日の起床時間は大体10~11時ぐらいで、正直言ってあまりよろしくないと思っています。

平日の仕事がある日は絶対に起きれるのですが、休日になった途端アラームをかけているにも関わらず、いつも起きている時間に起きれることがほとんどないです。

なぜなのでしょう・・・・?

本当なら休日を朝早く起きて遊びに出かけたり、趣味に没頭したりしたいのですが、後回しになりがちです。

自分的には土日のどちらかをだらだらする分には構わないと思います。

誰でもリラックスすることは大切だと思うからです。

けれどリラックスしすぎるのもあまりよろしくないと思います。

リラックスしすぎは気の緩みにつながってしまうと思います、気の緩みは仕事にも影響するからです。

なので、休日でもしっかりとやることを決めて、行動するべきだと私は思います。

休日も平日もやる時はやる、休むとこは休む!というようにしっかりとしたメリハリをつけることが大切だと思います。

日頃からそういうことを意識していれば仕事でも自然ともっと意識を高められるのではないかと思います。

私はリラックスという意味で明日から実家の方に少し帰らせていただきます(笑)

迷惑をかけた分はしっかりと取り返すていきたいと思いますので宜しくお願いします。

ということで今回はこのぐらいにして、次回からはもう少し仕事の内容に関係するようなところを書いていきたいと思います。

釣りに行って来ました!

こんにちは、宮川です。
6/17(土)に岐阜オフィスメンバーで釣りに行きました!
人生初の釣りです。
岐阜を深夜1時に出発。三重県尾鷲の「天海」で海上釣り堀に挑みました!

上の写真は、海に出る前の写真です。海も人生の中で2、3回しかみたことがないので、この時点でテンションが上がってました!

ゲームの中(どうぶつの森)では釣りをやったことがあるので、タイミングはバッチリ!…と思っていましたが、そう簡単には釣れず…。

エサの種類や、エサの位置、深さなど条件が揃ってやっと釣れるのだと実感しました!どうぶつの森って簡単ですね…。

最初全然釣れなかったのですが、他の方々に釣り方を教えていただいた結果、タイ3匹が釣れました。やったー!

↑タイの写真(自分のタイだと思っていましたが、カイザーさんのタイでした!すみません!(笑))

他の方もシマアジ、ブリなど大きい魚が釣れてて羨ましかったです

人生初の釣りでしたが、とても面白かったです!みなさんがハマる理由もわかりました!

また時間があるとき釣りに行きたいと思います。

以上、宮川でした!

ナレッジの管理について

こんにちは、本日はナレッジについてです。

ナレッジとは

一般的には「知識」や「知見」といった意味の英語である。 企業経営に関する用語としては、企業が蓄積しているあらゆる情報を体系的に可視化し、営業活動や経営活動に有益な情報を「知識」として新たに活用する考え方を表す際に用いられる言葉である。(ナレッジとは – IT用語時点 weblio辞書)

上記のように説明されております。

今回何が言いたいのかというと、情報の蓄積をきちんとしましょうということです。今までmiというツールでメモ帳がわりに使っていたのですが、後から見直すと蓄積された情報探しづらいなどを感じておりました。

メモだからということで目をそらしていた部分はあったのですが、さすがにそれではまずいということで、これからはとりあえず有名どころでEvernoteを使うようにしていこうと思います。

もしみなさんの中でEvernoteなんてダサい、こっちのサービスの方がいいですよとかあれば是非とも教えていただきたいです!

そしてできれば個人だけでなく社内で知識を共有できるようになれば、なおいいですね。メモ書き程度では恥ずかしくて共有し辛いですが

知らないより、知っていた方が良い話 #6

今回も知らないより、知っていた方が良い話をします。

今回は前にお話ししました、人間力について更に深めてお話しさせて頂きます。

人間力、こう大きく一括りにすると、なんだか大層な感じがして

臆してしまいがちですが、実際は我々が小学生の頃や中学生の頃に

教えられて来た事の延長上にあります。

例えば、ゴミは捨てましょう。

皆さんゴミは捨てますよね?では道路に捨ててあるゴミはどうでしょうか?

中々拾う事は出来ないと思います。(気恥ずかしかったり、面倒臭かったり)

では、事務所や自分の部屋でしたらどうでしょうか?

気恥ずかしさやは無くなりますが、面倒臭かったりしてそのままの事は

無いでしょうか?(気づかないのは論外です。)

実家暮らしの自分の部屋でしたら、親が

事務所でした、会社の自分以外の仲間が

掃除してくれるのです。

自分が面倒臭いと言ってやらない事によって、誰か人が動いて

自分の部屋や、事務所が綺麗に保たれるのです。

ここまでこれば分かると思いますが

自分の事だけを考えて動いている人=人間力の低い人になります。

誰かが、やってくれている。

勝手に綺麗になっている。

は卒業しましょう。

このゴミを置いて行ったらどうなるか?

この部分を放って置いたらどうなるか?

を考えて、人間力をあげましょう!

[iOS] Googleカレンダーのログイン認証をGIDSignInに移行する

こんにちは。カイザーです。

今年の4月にWebViewを使用した従来のGoogleログインは使用できなくなり、GIDSignInなどを使用する必要が出てきました。
WebViewでは、普段ユーザが使用しているログイン情報を使用することができず、アプリ毎にユーザがログイン情報を入力する必要があり、煩わしいためです。
そこで、URLスキームを使って普段使用するWebブラウザを使用させるか、WKWebViewなどのWebブラウザとログイン情報を共有出来る方法に移行するわけです。

GIDSignInは、この新しいログイン周りが簡単に行うことができるGoogle公式のライブラリです。WKWebViewを使用します。
今回は、従来の認証からGIDSignInに移行し、Googleカレンダーで使用する、という想定で進めていきます。

1. まずは導入

下記URLに従って導入します。とりあえずログインは出来るようになります。
https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift
その際、以前の「GTMOAuth2ViewControllerTouch」でログインしていた処理は削除してください。

2. ログイン結果を通知

以前は、該当のViewControllerでログイン結果を受け取ることができましたが、今回はAppDelegateで行うようになっています。
そのため、AppDelegateからNotificationを使ってViewControllerに受け渡します。

AppDelegate.swift

extension Notification.Name {
static let googleSignInSuccess = Notification.Name("googleSignInSuccess")
static let googleSignInFailed = Notification.Name("googleSignInFailed")
}

AppDelegate.swift

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: NSError!) {
if let _ = error {
// サインインが失敗
NotificationCenter.default.post(name: .googleSignInFailed, object: nil)
} else {
// サインインが成功
NotificationCenter.default.post(name: .googleSignInSuccess, object: nil)
}
}

これで、サインインできた時に通知するところまではできました。

3. ログイン結果の受け取り

あとは、受け取る側のViewControllerでNotificationの受け取りを設定します。失敗の場合はエラー表示します。
LoginViewController.swift

var service: GTLServiceCalend

override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: .googleSignInSuccess, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(loginFailed), name: .googleSignInFailed, object: nil)
}

deinit {
NotificationCenter.default.removeObserver(self)
}

func loginSuccess() {
// ログイン成功
}

func loginFailed() {
let alert = UIAlertController(title: "ログインエラー", message: nil, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
present(alert, animated: true, completion: nil)
service?.authorizer = nil
setGoogleAccountLabelText(nil)
}

4. カレンダーAPIのリクエスト


// これは以前と同じです
private let service = GTLServiceCalendar()
func fetchEvents() {
// セッション切れになっているかもしれないので、再ログインしておく
GIDSignIn.sharedInstance().signInSilently()
if let auth = GIDSignIn.sharedInstance().currentUser {
// 以前「GTMOAuth2ViewControllerTouch」から取得していた認証情報は、「auth.authentication.fetcherAuthorizer()」で取得できる。
service.authorizer = auth.authentication.fetcherAuthorizer()
}
// カレンダーのイベントを取得します。service.authorizerに認証情報が入っているため、以前と同じように使えます。カレンダーイベント取得後「finishedWithObject」が呼ばれます。
let query = GTLQueryCalendar.queryForEventsList(withCalendarId: "カレンダーID")
let calendar = Calendar.current
var components = (calendar as NSCalendar).components([.day, .month, .year], from: selectedDate)
components.month? -= 1
var date = calendar.date(from: components)
query?.timeMin = GTLDateTime(date: date, timeZone: TimeZone.autoupdatingCurrent)
query?.singleEvents = true
query?.orderBy = kGTLCalendarOrderByStartTime
service.executeQuery(
query!,
delegate: self,
didFinish: #selector(CalenderViewController.displayResultWithTicket(_:finishedWithObject:error:))
}

ここでポイントになるのが、以前から使用していた「GTLServiceCalendar().authorizer」と、「GIDSignIn.sharedInstance().currentUser.authentication.fetcherAuthorizer()」が同じinterfaceを適用しているので、キャスト可能であるということです。

これは特に文献がなかったので、宣言部をひたすら見て行くしかなかったですね。。(GTLSercieとGIDSignInは両方ともObjective-Cで書かれているので、ヘッダファイルを見ていきます。)

まとめ

GIDSignInに切り替えても、従来のGTLServiceは利用可能。
ちなみに、AndroidはWebViewログインを行わず、OSの機能でログインできるので対応は不要です。

GoogleのAPIを使用していて、まだWebViewで認証している方は、急いで移行してください!

今後の意気込み

こんにちは、田中です。

最近大阪や東京など都会に遊びに行く機会が増えたのですが、さすが都会。人が多く、駅や周辺の建物は大きくて高い!思わず見上げながら歩くので首と足が痛くなりました…やはり田舎の方が過ごしやすくていいですね(^^;)

最近お仕事でアプリのUIを作成する機会が多くなりました。
携帯を持ち始めた頃から今まで数多くのアプリを利用してきましたが、いざデザインをするとなるとかなり難しいです。
使いやすさや見やすさ、色合いやボタン等の配置などさっと思いつかずいつも時間をかけてしまいます。
今後は普段からいつも使用しているアプリの観察や類似アプリの見比べ、「こうなっていたらもっと使いやすいのに」と思ったらメモをするなどして知識を増やすことや作業時間の短縮に努めたいです。
また、仕事の合間合間にPHPなどの勉強も少しずつしていければと思います。

以上、田中でした。