1.Agile 용어

1)Agile 용어



Scrum

- 스크럼은 프로젝트 관리를 위한 애자일 방법론으로서 추정 및 조정 기반의 경험적 관리기법의 대표적인 형태입니다.
처음 시작은 1986타케우지 & 노나카 교수가 HBR에 기고한 “The New Product Development Game” 이라는 기사를

그 기원으로 봅니다.

이후 1995년에 슈와버와 제프 서덜랜드가 이 방법을 소프트웨어 개발에 소개하면서 스크럼이라 부르게 되었습니다.


• Sprint

- 개발팀은 스프린트라고 불리는 한정된 기간(Timebox)동안 계획한 일을 수행합니다. 프로젝트 상황에 따라 다르지만 주로 1~4주 정도를
스프린트 기간으로 정합니다. 이를 다른 용어로 이터레이션(Iteration)이라고도 부릅니다.

- 팀의 역량에 따라 (속도(Velocity) 근거하여) 스프린트 기간 동안 완료하기로 약속한 업무를 지속 가능한 리듬으로 작업을 수행합니다.

- 팀은 스프린트 기간 동안 스프린트 백로그(Sprint Backlog)에 스스로 계획한 목표를 달성하기 위하여, 분석/설계/개발/테스트를 통해
실행 가능한 소프트웨어를 개발합니다.


Epic

- 큰 단위의 기능(또는 시스템) 이름을 적어 놓은 것 : 우선 순위도, 크기도 없으며, 사용자 스토리를 작성하기 위한 출발점입니다.


User Story

- 소프트웨어의 사용자나 구매자에게 가치를 줄 수 있는 기능을 서술한 것으로, 계획하거나 기억하기 위한 단서로 사용됩니다.

- 대화를 통해 세부사항을 구체화하며, 세부사항을 테스트 케이스로 문서화합니다.

- 테스트를 통해 완료 여부를 판단합니.


Sprint Backlog

- 하나의 스프린트 동안 개발할 목록으로 사용자 스토리와 이를 완료하기 위한 작업을 태스크로 정의합니다.

- 각각의 태스크의 크기는 시간 단위로 추정합니다.


Estimation

- 사용자 스토리를 구현하는데 그 규모가 어느 정도인지 생각해 보는 과정입니다.

- 애자일 추정에서는 프로젝트 초기에 현실적인 판단이 어려운 Man-hour’, ‘Man-day’ 같은 시간 단위보다는 실제 수행한 것을 기반으로

공수를 추정해 낼 수 있는 스토리 포인트를 사용합니다.



2.JIRA Agile Report

1)JIRA Agile Report


Burndown chart

- 개발 완료하기까지 남은 작업량을 보여주는 그래프, 이터레이션 별로 남아 있는 작업량을 스토리 포인트라는 것으로 나타낸 것입니다.

- 스프린트 목표 달성의 가능성과 남아있는 전체 작업을 추적하기 위하여 사용합니다.

스프린트에 걸쳐 남은 작업을 추적하여, 팀은 진행 상황을 관리하고 적절하게 응답 할 수 있습니다.


Sprint Report

- 각 스프린트 백로그에 밀려 연장되었는지 완료 되었는지에 대한 작업을 이해하기 위하여 '스프린트 보고서'를 사용합니다.

- 보고서에 정기적으로 실패한 작업을 보여줄 때, 팀은 over-committing 하거나 과도한 스코프로 인해서라고 추측할 수 있습니다.


Epic Report

- 시간이 초과된 Epic 완성을 위해 진행상황을 이해하기 위하여 사용합니다.

- 추측할 수 없거나 불완전하게 남은 작업량을 추적하여 관리할 수 있습니다.


Version Report

- 정확한 시간에 버전을 릴리즈할 가능성을 이해하기 위하여 사용합니다.

- 계획에서 차이점에 따라 진행하기 시작하면 당신이 알 수 있도록 예상 프로젝트 릴리즈 일자를 추적 할 수 있습니다.


Velocity Chart

- Sprint로 부터 완벽하게 완료된 Sprint의 작업량을 추적하기 위하여 사용합니다.

- 완료된 작업의 평균양이 Velocity이며, 앞으로의 Sprint에서 현실적으로 달성할 수 있는 팀의 작업을 추정합니다.


• Control Chart

- 현재 프로세스 데이터로 미래의 성능을 결정하는데 사용할 수 있는지의 여부를 확인합니다.

- Issue의 주기 시간에 대한 적은 변화로, 미래의 성능 지표를 의미하는 신뢰를 높이는데 사용합니다.


Cumulative Flow Diagram

- 시간의 흐름에 대한 Status에서 Issue 번호를 식별할 수 있습니다.

출처:https://gomcine.tistory.com/entry/PHP%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%9B%B9%ED%8E%98%EC%9D%B4%EC%A7%80-%ED%8C%8C%EC%8B%B1-%EA%B8%B0%EB%B2%95-%EC%9A%94%EC%95%BD


가끔 사이트 개발을 하거나 여러가지 데이터를 모으기 위해 웹페이지를 파싱해야할 경우가 있죠. 다양한 언어와 기법을 활용하여 웹페이지 파싱이 가능한데요. 저는 주로 PHP를 활용하여 웹페이지 스크랩하고 정규표현식을 통해 파싱 작업을 하고 있습니다. 그 내용을 간단하게 요약해 보도록 하죠.



파싱 대상 html 가져오기

1. echo file_get_contents(웹페이지 URL); => 서버 설정으로 막힌 경우가 많음.
2. curl (스누피라는 라이브러리 쓰면 좀 편함)
3. fsocketopen (최종 방법)


파싱할 때 주로 쓰는 함수 5가지

1. str_replace(".", "", $string); // . 삭제
2. $language = preg_replace( '/[^a-zA-Z_]/', '', $_REQUEST['language'] ); // 정규식으로 치환
3. preg_match_all('/[가-힣a-zA-Z0-9 ]*/i', $resultHtml, $find_words); => 그냥 preg_match 하면 1개만 가져옴
4. explode("-", "2017-09-20");
5. substr("테스트", 1, 2); => 스트
6. strip_tags("<b>테스트</b>")
7. print_r($array); => 배열 출력


정규표현식 상식

. => 모든 문자, .*? : 모든문자 최초매칭
greedy vs non-greedy (최대매칭 vs 최초매칭 => 조건이 만족되는 최초의 위치까지만 일치하는 것으로 간주 / ?를 사용함)
() : 그룹, [] : 범위


정규표현식 예시

preg_replace("/[#\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", "", $title); // 특수문자 제거, 공백은 포함

/["[가-힣a-zA-Z0-9 ]*",/i

/\[[가-힣a-zA-Z0-9]*\]/
/[0-9,]+건/
/[0-9.]*[0-9.]/
/[0-9-]*[0-9-]/

/([0-9]{3}cm)/i
/([0-9]{2,3}kg)/i
/([A-Z]{1,2}형)/i

/^(to|cc|bcc|Reply-To)$/
/[^A-Za-z0-9!#$%&'*+\/=?^_`{|}~ -]/
/Location:\s([^\s]*)\s/
/(src|background)=["'](.*)["']/Ui
/^Get(\w+Service)$/I


결국 웹페이지 파싱 작업은 첫 번째로 웹페이지를 어떻게 스크랩할 것인가 그리고 두 번째로 가져온 html 데이터를 어떻게 파싱해서 데이터를 추출할 것인가에 달려 있는 것 같습니다. 첫 번째 부분은 어느 정도 정형화되어 있기 때문에 한 번만 잘 소스를 만들어두면 계속 재사용할 수 있으며 두 번째 부분은 웹페이지 구조를 얼마나 잘 분석하고 정규표현식을 잘 활용하여 데이터를 뽑아내는가에 달려 있는 것 같습니다.

출처: https://gomcine.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%B6%81-API-%EC%97%B0%EB%8F%99-%EB%B0%8F-%EA%B0%9C%EB%B0%9C-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

 

페이스북 페이지를 운영하면서 포스팅 자동화 방법을 찾다가 직접 프로그램을 개발하기로 하였습니다. 그러면서 Google API와 Facebook API를 사용하게 되었는데요. 지난번 Google API 개발 방법 정리에 이어 이번에는 Facebook API 연동 및 개발 방법을 정리해봤습니다. 

 

1. 페이스북 앱 개발 과정 개요

2. 페이스북 API 종류

3. 페이스북 그래프 API와 SDK

4. 페이스북 개발자 계정 생성과 앱 등록

5. 사용자 엑세스 토큰 발급

6. 페이지/그룹 엑세스 토큰 발급

7. 페이스북 앱 검수

1. 페이스북 앱 개발 과정 개요

페이스북 API를 사용하려면 다음과 같은 과정을 거쳐야 합니다. 

 

페이스북 개발자 계정 생성 -> 앱 등록 및 앱 ID 생성 -> 엑세스 토큰 발급 -> 앱 개발 및 테스트 -> 앱 검수 -> 서비스 시작

2. 페이스북 API 종류

페이스북 API는 크게 두 종류로 나뉩니다. 바로 그래프 API와 마케팅 API 인데요. 그래프 API(=Graph API)는 Facebook 소셜 그래프에 있는 정보를 조회하거나 쓸 수 있는 API로 페이스북 개발을 한다면 주로 이 API를 사용하게 됩니다.

 

 

페이스북 마케팅 API는 페북 광고 캠페인이나 보고서 등에 이용하는 API로 주로 광고 회사나 마케팅 회사의 프로그램을 개발할 때 사용합니다.

 

3. 페이스북 그래프 API와 SDK

사용자 게시물이나 페이지, 그룹 등에 자동으로 포스팅하거나 게시글을 조회하려면 그래프 API를 사용해야 합니다. 페이스북에서는 그래프 API 조금 더 편리하게 사용할 수 있도록 플랫폼별 SDK 설치를 지원하고 있습니다.

 

 

페이스북에서 공식으로 지원하는 SDK로는 안드로이드, iOS, Javascript, React, Swift, PHP 등이 있습니다. 될 수 있으면 페북 공식 SDK로 개발하는 것을 추천합니다.

 

참고로 그래프 API는 2015년 4월 30일 버전 1.0에서 2.0으로 업그레이드 되었으며, 2019년 현재 최신 버전은 3.2입니다. 페북 API 개발을 할 때 꼭 버전을 확인한 후 개발해야 합니다.

 

4. 페이스북 개발자 계정 생성과 앱 등록

 

먼저 facebook for developer 사이트에 접속해서 페이스북 개발자 계정을 생성하고 로그인해야 합니다. 본인 페이스북 계정이 있다면 그 계정으로 로그인하면 됩니다. 

 

 

▼ 개발자 계정 로그인을 하면 앱 대시보드가 나옵니다. 여기서 내 앱을 클릭하고 새 앱 만들기를 눌러줍니다. 해당하는 정보를 입력하고 완료하면 다시 대시보드가 나옵니다. 여기서 왼쪽 메뉴 중 설정 -> 기본 설정을 누릅니다.

 

 

▼ 기본 설정에서는 앱 ID와 앱 시크릿 코드를 확인할 수 있습니다. 앱 도메인에는 아직 개발 중이기 때문에 localhost를 입력합니다. 추후에 앱 검수를 요청할 때는 실제 도메인을 입력해야 합니다. 비즈니스 사용은 개인용으로 사용한다면 내 비즈니스 지원을 선택합니다.

 

 

▼ 하단에 사이트 URL에는 사용자 로그인 요청 후 콜백을 받을 소스를 입력합니다. 여기서는 PHP SDK를 사용했기 때문에 callback php 파일의 위치를 지정했습니다. 각 언어별 플랫폼별 맞는 콜백 주소를 입력해줍니다. 

 

 

5. 사용자 엑세스 토큰 발급

▼ 다음으로 Facebook 로그인 과정을 거칩니다. 이 과정을 거치면 Facebook 로그인 메뉴 왼쪽에 초록색 체크 표시가 나타나고 사용자 엑세스 토큰을 발급 받게 됩니다. 로그인 설정을 위해 좌측 메뉴에서 Facebook 로그인 > 설정을 클릭합니다.

 

 

▼ 아래와 같이 세팅을 합니다. 유효한 OAuth 리디렉션 URI에는 앞선 콜백 URL을 입력합니다. 개발 중인 경우 localhost 리디렉션은 따로 추가하지 않아도 됩니다. 반대로 운영 단계에 들어가면 반드시 입력해주어야 합니다.

 

 

▼ 운영 단계에서 OAuth 리디렉션 URI를 추가했다면 하단에 있는 검사기를 통해 URI 리디렉션 유효성을 검사할 수 있습니다. 

 

 

▼ 간단하게 본인 계정으로 Facebook 로그인 단계를 거치기 위해 왼쪽 메뉴에서 Facebook 로그인 > 빠른 시작을 클릭합니다. 그리고 본인에게 맞는 서비스를 클릭합니다. (여기서는 웹 선택)

 

 

▼ 사이트 URL에 콜백 리디렉션 URL을 입력하고 save합니다. 이 빠른 시작은 javascript 용 SDK를 이용했습니다. 만약 다른 언어나 플랫폼이라면 다음 단계를 실행합니다.

 

 

▼ 빠른 시작으로 Facebook 로그인을 할 수 있지만 javascript 개발 시에만 유용합니다. 이 때는 그래프 API 탐색기를 통해 간단하게 로그인 과정을 거칠 수 있습니다.

 

 

▼ 사용자 또는 페이지에서 사용자 토큰을 누르고 사용자 액세스 토큰 받기를 클릭합니다.

 

 

▼ 권한 추가에서 필요한 권한을 추가합니다. 여기서는 일단 페이스북 페이지에 자동으로 포스팅하기 위한 목적이기 때문에 manage_pages와 publish_pages 권한이 기본적으로 필요합니다. (참고 : 페이스북 페이지 시작하기 문서)

 

 

▼ 이제 Get Access Token 버튼을 누르면 사용자 액세스 토큰이 생성됩니다. 이 토큰 정보와 app id, app secret을 코드에 넣습니다. 아래 코드는 PHP로 개발한 사례로 제 GitHub 레파지토리를 참고하길 바랍니다.

 

 

위 예제에서는 facebook_login.php와 facebook_login_callback.php 파일을 통해 새로운 사용자 엑세스 토큰을 받을 수도 있습니다.

 

 

 

하지만 이 예제는 간단하게 페이지 자동 포스팅을 구현하기 위한 예제로 실제 다른 사용자에게 서비스하려면 페이스북 로그인 과정을 그에 맞게 코딩하여야 합니다.

6. 페이지/그룹 엑세스 토큰 발급

▼ 이제 사용자 엑세스 토큰을 통해 페이지 엑세스 토큰을 발급 받는 방법을 살펴보도록 하겠습니다. (그룹 엑세스 토큰 발급도 페이지 엑세스 토큰 발급 방법과 거의 동일합니다. ) 먼저 관리하고 있는 각 페이지의 목록과 페이지 별 access token을 조회합니다.

 

 

페이지 정보를 조회하는 방법은 그래프 API 탐색기에서 me/accounts?fields=access_token, name, id 를 입력하고 제출을 누릅니다. 이 때 "사용자 또는 페이지" 메뉴에 "사용자 토큰"으로 선택되어 있는지 확인하세요.

 

우측 상단에 있는 제출 버튼을 누르면 각 페이지별로 ID와 이름, 그리고 access token이 발급됩니다. 이 토큰은 페이지에 엑세스할 수 있는 토큰으로 사용자 엑세스 토큰과는 다릅니다.

 

▼ 참고로 그래프 API 탐색기 아래를 보면 "코드 받기"라는 버튼이 있습니다. 이 버튼을 누르면 각 Request 에 대한 플랫폼별 소스 코드 snippet을 볼 수 있는데요. 앱 개발을 할 때 이 코드들을 활용하면 됩니다.

 

 

▼ 아래 소스와 같이 그래프 api를 통해 페이지에 포스팅 할 수 있습니다. 이 때 page id와 page access token을 파라미터로 같이 보냅니다.

 

7. 페이스북 앱 검수

▼ 페이스북 페이지에 자동으로 포스팅 되는 기능을 만들어도 페이스북 API 앱 검수를 통과하지 못하면 쓸 수 없습니다. 테스트할 때 페이지에 포스트가 올라가긴 하지만 이 포스트는 관리자 혼자만 볼 수 있고 홍보도 할 수 없습니다.

 

 

페이스북은 최근 개인정보 유출 사태 등을 겪으면서 페이스 북 API 제한과 앱 검수를 강화했습니다. 따라서 앱 검수에 2주 또는 한 달이 걸리기도 하는데요. 단순 조회를 위한 API 사용은 앱 검수 절차가 필요 없지만 페이지나 그룹에 글쓰기 등을 하는 경우는 앱 검수가 필요합니다. 또한 페이스북 api 사용자 정보를 이용하면 검수가 더 엄격해집니다.

 

 

 

앱 검수 시에는 실제 도메인이며 https 로 서비스 해야 하며, 페이스북 권한 요청에 대한 스크린캐스트 영상을 업로드 해야 합니다. 페이스북 앱 검수에 대한 자세한 내용은 위 영상과 아래 글들을 참고하시길 바랍니다.

 

페북 앱 검수 참고글

Instagram API 연동하기 - Medium Blog

HOW DO I SETUP A FACEBOOK APP, TO ALLOW ME TO POST AUTOMATICALLY TO FACEBOOK?

 

페이스북 API 개발 참고 문서

Graph API page reference

Short-Term Tokens and Long-Term Tokens

Getting started with the Facebook SDK for PHP

PHP Facebook SDK 시작하기

Page API 시작하기

+ Recent posts